/ Abstract

Linux 2.6O(1)2.6NPTL(Native POSIX Thread Library)

For the purpose of examining the behavior of the O(1) scheduler which was migrated from the Kernel 2.6, we have tested the real-time thread response time experiment. We have used the NPTL (Native POSIX Thread Library) which also was migrated from the Kernel 2.6.

English translation is not completed yet. Please refer to THIS material for your reference.

We are looking for your comments or suggestions. To "celinux-dev@tree.celinuxforum.org" please. / celinux-dev@tree.celinuxforum.org

Comment about Order One Study (in Japanese)

Test Environment

Used Platform

Target platform

Renesas RTS7751R2D (big-endian)

SH4(SH7751) 240MHz

64MB SDRAM

10Base-T Ethernet

Linux 2.6.8.1 (glibc 2.3.4)

NFS server siderootfs for R2D)

Intel Celeron 2GHz

512MB RAM

2GB ATA DISK

Linux 2.6.9

10Base-T Ethernet

/ Program for the Experiment

/ Virtual Device Driver

procprocread

create new virtual device entry in /proc file.

When "write to /proc" event occurs, create a new thread that blocks the same device file using "read"

WRITE / Write Task

writeREAD

Do "write" to virtual device file create a trigger for "read" task wakeup.

READ / Read Task

read

Do "read" to virtual device file to block.

/ Load Tasks

Rival tasks those have same scheduling priority.

/ Measurement

READWRITEread(), write()1

WRITE16mswrite()

READread()read()

WRITE()write()READread()

write()READ

1usnanosleep()012481632

READWRITE(non-RTRT(1SCHED_RR2

Non-RT

Each "read" and "write" task execute read() or write() 10,000 times to the virtual device file.

"write" task execute write() in every 16msec.

"Read" task issues next read() right after returns from read() execution.

Measure the elapsed time between write() issues in "write" task and return of read() execution issued in "read" task.

And also measure the elapsed time between the timing of write() command accepted in virtual device file and the timing of "read" task start.

"Read" task blocked by read() gains higher priority than other load task(s). Then "read" task returns from read() assigned into higher priority queue and dispatched immediately rather than other load task(s) that has less seeped time.

Non-RT task's response time increase relative to load task number.

"Read" task returned from read() enter into the tail of queue list of other load task(s). So "read" task will dispatch after all other load task execution was done.