1/38
...4 (Dispatch Latency)...6...7...8...9...10 CPU...10...12...12...13...14...16 (SCHED_FIFO)...17 (SCHED_RR)...18 (FBS)...18...19...21...23...25...29...29...31...33...33 2/38
...34...34...34...34...34...34...34 (Direct IO)...35...35...35...35...35...36...36...36...36...36...36...36...37...37 SMP...37 softirq...37...37 System V...37 tasklet...38 workqueue...38 3/38
180 180 10Hz 1000Hz CPU (Dispatch Latency) (jitter) 4/38
TCP/IP 5/38
0 1 2 3 4 5 0 1 2 0 1 2 (Dispatch Latency) read/write D MA /dev/null read/write write Dispatch Latency DMA DMA DMA DMA DMA 1 Dispatch Latency 2 6/38 1
2 2-1~5 3 2 3 7/38
3 15 4 3 4 15 4 1 CPU 1 5 2 5 15 CPU CPU 8/38
2 1 2 2 2 1 5 CPU CPU RedHawk Linux 6 CPU 9/38
6 6 15 CPU CPU Concurrent RedHatMRG SolarisOS CPU Concurrent/RedHawk CPU CPU CPU CPU RedHawk OS SMP Linux Linux 10/38
Linux2.6 "(tasklet) (workqueue) CPU CPU CPU 11/38
CPU 3 CPU CPU CPU CPU CPU CPU CPU CPU 12/38
CPU CPU CPU sched_setaffinity (2) CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU Linux CPU CPU CPU CPU CPU RedHawk Linux User Guide F CPU CPU IRQ IRQ CPU CPU CPU IRQ CPU CPU IRQ shield (1) /proc/irq/n/smp_affinity Linux i386 kirqd CPU IRQ 13/38
IRQBALANCE RedHawk Linux noirqbalance IRQBALANCE CPU CPU 1 CPU local_irq_disable (2) CPU CPU CPU CPU CPU CPU RedHawk Linux User Guide G CPU RedHawk Linux CPU 10 CPU CPU CPU CPU 1 CPU CPU CPU 14/38
CPU CPU POSIX CPU CPU POSIX CPU CPU CPU 15/38
7 7 RedHawk Linux SCHED_OTHER sched_priority SCHED_OTHER 0 SCHED_FIFO SCHED_RR 1 99 RedHawk Linux SCHED_OTHER 40 16/38
SCHED_RR SCHED_FIFO 99 CPU CPU CPU CPU ps (1) top (1) (SCHED_FIFO) 17/38
(SCHED_RR) CPU (FBS) CPU 18/38
Linux CPU CPU CPU CPU CPU 19/38
CPU 20/38
POSIX1003.1 shm??() shared memory:shm POSIX1003.1b shm_xx() POSIX1003.1b Linux Linux 21/38
Linux Linux PCIbus mem= brk() roundup sbrk() SIZE mmap() 22/38
read/write read/write i-node 100Hz read/write write Dispatch Latency DMA DMA DMA DMA 23/38
DMA DMA DMA DMA =1 PCI CPU DMA PCI DMA PCI DMA DMA DMA DMA K DMA 24/38
512 read-ahead/write-behind POSIX1003.1b (O_DIRECT) read/write 25/38
DMA CPU 26/38
Fill Buffer Queue 4096N Fill Buffer Queue 4096N 4096N 4096N Empty Buffer M 4096N Queue M Empty Buffer Queue Empty Buffer Queue Empty Buffer Queue Fill Buffer Queue Fill Buffer Queue Empty Buffer Queue 4096N M 1 i-node 4096N mke2fs -b 4096 -i -j /dev/sdb1 linux i-node i-node 27/38
TCP/IP Fill Buffer Queue Fill Buffer Queue Fill Buffer Queue 4096N 4096N 4096N 4096N M 4096N M Empty Buffer Queue Empty Buffer Queue 28/38
read/write Linix read/write CPU POSIX mutex System V 2 29/38
Test & Set Test & Set Test & Set 2 CPU 2 POSIX Mutexes mutex mutex POSIX mutexes per-mutex robust() mutexes mutexes mutex mutex 30/38
mutex 1 1 RedHawk User Guide 31/38
32/38
CPU (run g0 b0 shield -p 1,2,3 ) IRQ (shield i 1,2,3 ) (shield l 1,2,3 ) POSIX nanosleep, 3. 4. POSIX pthread 33/38
1 2 RedHawk Linux softirqtasklet work queue 1 34/38
(Direct IO) IO IO Intel Pentium XeonCPU CPU 1 CPU CPU 2 2 CPU CPU 1 CPU 2 CPU 1 RedHawk Linux 1 1 IPC RedHawk Linux POSIX System V 1 3 2 35/38
CPU RedHawk Linux 1. PID 1 RedHawk Linux POSIX System V 36/38
1 read/write POSIX System V RedHawk Linux SMP 1 2 CPU / CPU softirq System V Linux System V UNIX IPCSystem V IPC 3 System V 37/38
tasklet tasklet CPU workqueue softirq tasklet Linux work 38/38