Performance Impact of Thread Queue Priority Change

Joel Sherrill joel.sherrill at oarcorp.com
Fri Jul 11 00:15:54 UTC 2014


I added variants of tm02 and tm03 for counting/priority,
binary/FIFO, and binary/priority.  These tests are for an
operation count of 100 on sis. I have attached the patch
and the files.

The "0" times are because I just repurposed an existing
test and when it blocks the middle tasks in FIFO order,
each requires a context switch through it. When in
priority order, it restores the highest priority and there
isn't enough code executed to be reliably measured.

For the test cases we have, everything looks the same
or better but not remarkably so. 

If someone can suggest some test cases which push
priority blocking, I am happy to try them.

I am not seeing a downside to committing this code.
If someone doesn't say something, then I plan to
commit it soon. Soon being after this weekend since
it is my wedding anniversary and we are taking a
long weekend.


-- 
Joel Sherrill, Ph.D.             Director of Research & Development
joel.sherrill at OARcorp.com        On-Line Applications Research
Ask me about RTEMS: a free RTOS  Huntsville AL 35805
Support Available                (256) 722-9985

-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0007-Enhance-Semaphore-Blocking-and-Readying-Time-Test-Ca.patch
Type: text/x-patch
Size: 37048 bytes
Desc: not available
URL: <http://lists.rtems.org/pipermail/devel/attachments/20140710/b4aeea26/attachment-0001.bin>
-------------- next part --------------
rtems_semaphore_create: only case - 48
rtems_semaphore_delete: only case - 60
rtems_semaphore_ident: only case - 62
rtems_semaphore_obtain: available - 8
rtems_semaphore_obtain: binary/FIFO not available caller blocks - 87
rtems_semaphore_obtain: binary/priority not available caller blocks - 113
rtems_semaphore_obtain: counting/FIFO not available caller blocks - 86
rtems_semaphore_obtain: counting/priority not available caller blocks - 112
rtems_semaphore_obtain: not available NO_WAIT - 8
rtems_semaphore_release: binary/FIFO task readied preempts caller - 76
rtems_semaphore_release: binary/priority task readied preempts caller - 0
rtems_semaphore_release: counting/FIFO task readied preempts caller - 74
rtems_semaphore_release: counting/priority task readied preempts caller - 0
rtems_semaphore_release: no waiting tasks - 24
rtems_semaphore_release: task readied -- returns to caller - 31
-------------- next part --------------
rtems_semaphore_create: only case - 59
rtems_semaphore_delete: only case - 71
rtems_semaphore_ident: only case - 62
rtems_semaphore_obtain: available - 8
rtems_semaphore_obtain: binary/FIFO not available caller blocks - 88
rtems_semaphore_obtain: binary/priority not available caller blocks - 116
rtems_semaphore_obtain: counting/FIFO not available caller blocks - 87
rtems_semaphore_obtain: counting/priority not available caller blocks - 115
rtems_semaphore_obtain: not available NO_WAIT - 8
rtems_semaphore_release: binary/FIFO task readied preempts caller - 80
rtems_semaphore_release: binary/priority task readied preempts caller - 0
rtems_semaphore_release: counting/FIFO task readied preempts caller - 78
rtems_semaphore_release: counting/priority task readied preempts caller - 0
rtems_semaphore_release: no waiting tasks - 28
rtems_semaphore_release: task readied -- returns to caller - 34


More information about the devel mailing list