VXW 68 Benchmark Datasheet mv3100 Sfdiab Up

Download as pdf or txt
Download as pdf or txt
You are on page 1of 7

VxWorks® Benchmark Data Sheet

VxWorks 6.8
833 MHz Motorola MVME3100

Introduction For example, although object creation and deletion


routines have become slower, they are usually used
This datasheet presents benchmark results for a in initialization and shutdown procedures and are not
PowerPC MPC8540 PowerQUICC III - Motorola generally used where hard real-time functionality is
MVME3100 target board running VxWorks 6.8. For required.
definitions of the individual benchmarks in this
datasheet, please refer to the Glossary at the end of While the benchmark numbers reported in this
this report. datasheet are provided as a guideline to VxWorks 6
Target Board Configuration performance, how the performance of these routines
affects overall application performance depends in
large part on the behavior of the specific application.
i mv3100
i 833 MHz MPC8540
i 32 KB L1 I-cache
i 32 KB L1 D-cache General Timing Information
i 256 L2 cache The measurements in this benchmark are obtained

using a VxWorks timestamp driver.


All times are given in microseconds (µs), unless
otherwise noted.

Results Maximal Performance Profile

The benchmark results presented in this datasheet The Maximal Performance Profile is a build of the
consist of interrupt and task response times, context VxWorks runtime source, intended to approximate
switch times, and various kernel and user-mode routine deployed kernel-mode-only VxWorks systems. This
timings. profile builds the kernel without support for the
following:
VxWorks 6, like VxWorks 5 before it, fully meets the • Real-Time Processes (RTP)
needs of devices requiring hard real-time performance. • System-Viewer Instrumentation
Of course, new features in VxWorks 6, such as MMU- • Kernel object ID validation checks
based memory protection, have necessitated low-level • Kernel object ownership information
changes to the RTOS. The performance of the • Kernel object class lists
individual OS routines listed in this datasheet may have
been affected, but may not in general be relevant to
application steady-state performance.

VxWorks 6.8 Benchmark Datasheet: mv3100 Confidential and Proprietary © 2010 Wind River Systems, Inc.
Kernel Mode Timings
page 2
Default Build Maximal Performance
μs μs
Key Measurements
Interrupt response 0.47 0.50
Task response 1.88 1.59

Task Context Switches


Task blocked on unavailable event 1.01 0.91
Task unblocked by incoming event 1.07 0.98
Task blocked by unavailable message 1.08 0.93
Task unblocked by incoming message 1.72 1.57
Task blocked by unavailable semaphore 1.01 0.89
Task unblocked by available semaphore 0.95 0.82

Semaphores
semCreate
Binary 2.72 2.18
Counting 2.90 2.17
Mutual Exclusion 2.89 2.17
semDelete
Binary 2.35 1.69
Counting 2.51 1.69
Mutual Exclusion 2.52 1.68
semGive
Tasks in queue
Binary 0.43 0.39
Binary inline 0.34 0.32
Counting 0.44 0.39
Mutual Exclusion 0.55 0.50
Mutual Exclusion inline 0.46 0.44
No tasks in queue
Binary 0.16 0.14
Binary inline 0.06 0.06
Counting 0.17 0.14
Mutual Exclusion 0.23 0.20
Mutual Exclusion inline 0.10 0.10
semTake
Semaphore available
Binary 0.17 0.13
Binary inline 0.05 0.06
Counting 0.17 0.14
Mutual Exclusion 0.19 0.16
Mutual Exclusion inline 0.08 0.08
Semaphore unavailable
Binary 0.21 0.18
Binary inline 0.09 0.09
Counting 0.21 0.18
Mutual Exclusion 0.18 0.14
Mutual Exclusion inline 0.09 0.09
Reader-Writer semaphore operations page 2

VxWorks 6.8 Benchmark Datasheet: mv3100 Confidential and Proprietary


Default Build Maximal Performance page 3
μs μs
Reader-Writer semaphores
semCreate 3.70 2.84
semDelete 2.80 1.97
semGive
No tasks in queue
acquired for writing, no tasks pending 0.25 0.22
acquired for reading, no tasks pending 0.26 0.23
Tasks in queue
writer in queue; acquired for writing 0.57 0.52
writer in queue; acquired for reading 0.24 0.22
reader in queue; acquired for writing 0.24 0.22
semTake
Semaphore available
caller owns semaphore for writing 0.22 0.19
caller owns semaphore for reading 0.20 0.18
Semaphore unavailable
caller owns semaphore for writing 0.20 0.17
caller owns semaphore for reading 0.17 0.14

Tasks
taskInit 10.68 9.15
taskActivate 0.29 0.32
taskLock 0.04 0.01
taskUnlock 0.05 0.05
taskResume
Ready task 0.24 0.24
Pended task 0.24 0.23
Suspended task 0.32 0.31
Delayed task 0.24 0.24
taskSuspend
Ready task 0.30 0.29
Pended task 0.21 0.20
Suspended task 0.21 0.20
Delayed task 0.21 0.21
taskPrioritySet
Ready task 0.49 0.48
Pended task 0.33 0.31
taskSpawn 13.06 12.00
taskDelete 11.23 9.16

Message Queues
msgQReceive
Message available 0.47 0.44
Message unavailable 0.35 0.33
msgQSend
No tasks pending 0.61 0.57
Tasks pending 0.88 0.82
Queue full 0.38 0.36
msgQCreate 3.96 3.18
msgQDelete 2.52 1.64

page 3

VxWorks 6.8 Benchmark Datasheet: mv3100 Confidential and Proprietary


Default Build Maximal Performance page 4
μs μs
Events
Send self 0.13 0.12
Receive available 0.16 0.16
Receive unavailable 0.21 0.20
Task send wanted 0.48 0.47
Task send unwanted 0.14 0.14

Watchdogs
wdCreate 2.07 1.37
wdDelete
Timer started 2.21 1.62
Timer not started 2.13 1.55
wdStart
No timer in queue 0.43 0.37
Timer in queue 0.51 0.46
wdCancel 0.32 0.26

page 4

VxWorks 6.8 Benchmark Datasheet: mv3100 Confidential and Proprietary


User Mode Timings
page 5
Default Build
μs
Key Measurements
System call overhead 0.77

Context Switches
Within an RTP
Task blocked on unavailable event 3.09
Task unblocked by incoming event 2.94
Task blocked by unavailable message 3.30
Task unblocked by incoming message 3.95
Task blocked by unavailable semaphore 3.28
Task unblocked by available semaphore 3.13
RTP-to-RTP
Task blocked on unavailable event 3.40
Task unblocked by incoming event 2.53
Task blocked by unavailable message 3.06
Task unblocked by incoming message 4.17
Task blocked by unavailable semaphore 3.34
Task unblocked by available semaphore 3.00

Semaphores
semCreate
Binary 6.37
Counting 6.37
Mutual Exclusion 6.83
semDelete
Binary 7.91
Counting 7.88
Mutual Exclusion 8.15
semGive
Tasks in queue
Binary 1.97
Counting 1.89
Mutual Exclusion 3.95
No tasks in queue
Binary 1.21
Counting 1.22
Mutual Exclusion 0.39
semTake
Semaphore available
Binary 1.33
Counting 1.31
Mutual Exclusion 0.37
Semaphore unavailable
Binary 1.37
Counting 1.38
Mutual Exclusion 0.35

page 5

VxWorks 6.8 Benchmark Datasheet: mv3100 Confidential and Proprietary


Default Build page 6
μs
Tasks
taskSpawn 115.41
taskDelete 106.23
taskResume
Ready task 1.32
Pended task 1.31
Suspended task 1.43
Delayed task 1.32
taskSuspend
Ready task 1.48
Pended task 1.35
Suspended task 1.33
Delayed task 1.35

Events
Send self 0.82
Receive available 1.05
Receive unavailable 1.48
Task send wanted 1.46
Task send unwanted 1.11

Message Queues
msgQCreate 5.64
msgQDelete 5.26
msgQReceive
Message available 1.66
Message unavailable 1.91
msgQSend
No tasks pending 1.81
Task pending 2.05
Queue full 1.92

page 6

VxWorks 6.8 Benchmark Datasheet: mv3100 Confidential and Proprietary


page 7

Glossary of Benchmark Metrics


Context Switching Interrupt Response
Task context switch time The time from when an interrupt is raised until the
Task blocked on unavailable event user-installed handler starts execution. This time
Task context switch time caused by the includes: saving the interrupted task context,
outgoing task executing eventReceive() on an setting up the interrupt context, and identifying the
unavailable event. source of the interrupt by the interrupt controller
Task unblocked by incoming event driver, plus the overhead of the timer driver used
Task context switch time caused by the as the auxiliary clock.
outgoing task executing eventSend() to the
incoming higher priority task. Task response
Task blocked by unavailable message The task response is the time elapsed from when
Task context switch time caused by the an interrupt is raised until a task resumes
outgoing task executing msgQReceive() on an execution after completion of the interrupt
unavailable message queue. handling. There are two types task response times
Task unblocked by incoming message provided. In the first case, there is no rescheduling,
Task context switch time caused by the and the interrupted task resumes execution after
outgoing task executing msgQSend() to the the interrupt handling completed. In the second
incoming higher priority task. case, the interrupt handler causes rescheduling by
Task blocked by unavailable semaphore giving a binary semaphore that unblocks a different
Task context switch time caused by the task than the task that was interrupted.
outgoing task executing semTake() on an
unavailable semaphore.
Task unblocked by available semaphore
Task context switch time caused by the
outgoing task executing semGive() to the
incoming higher priority task.

Events
Send self
Task to send event to self
Receive available
Receive event that is already available (does not
block)
Receive unavailable
Receive unavailable event with no wait (does not
block)
Task send wanted
Send an event wanted by another lower-priority
task
Task send unwanted
Send an event that no task is currently waiting for

page 7

VxWorks 6.8 Benchmark Datasheet: mv3100 Confidential and Proprietary © 2010 Wind River Systems, Inc.

You might also like