July 9th, 2013
A Comparison of Scheduling Latency in Linux, PREEMPT_RT, and LITMUSRT
Felipe Cerqueira and Björn Brandenburg
1
1 Tuesday, July 9, 13
Linux as a Real-Time OS 2 Tuesday, July 9, 13 2 Linux as a - - PowerPoint PPT Presentation
A Comparison of Scheduling Latency in Linux, PREEMPT_RT, and LITMUS RT Felipe Cerqueira and Bjrn Brandenburg July 9th, 2013 1 Tuesday, July 9, 13 1 Linux as a Real-Time OS 2 Tuesday, July 9, 13 2 Linux as a Real-Time OS Optimizing system
July 9th, 2013
Felipe Cerqueira and Björn Brandenburg
1
1 Tuesday, July 9, 13
2
2 Tuesday, July 9, 13
3
3 Tuesday, July 9, 13
4
PREEMPT_RT (Linux)
4 Tuesday, July 9, 13
5
PREEMPT_RT (Linux)
5 Tuesday, July 9, 13
6
PREEMPT_RT (Linux)
6 Tuesday, July 9, 13
✤ Main real-time branch of Linux ✤ Goal: decrease scheduling latency through the use of low-level
✤ Convert in-kernel spinlocks into (preemptable) mutexes ✤ Limit the extent of non-preemptable sections ✤ Commonly evaluated with cyclictest ✤ Single, easy-to-compare measure of scheduling latency as
7
7 Tuesday, July 9, 13
✤ Testbed for applied real-time systems research ✤ Goal ✤ Allow implementation and evaluation of novel multiprocessor
✤ NOT to reduce scheduling latency ✤ Evaluated with Feather-Trace ✤ Flexible, fine-grained measurement of different overheads 8
8 Tuesday, July 9, 13
✤ Testbed for applied real-time systems research ✤ Goal ✤ Allow implementation and evaluation of novel multiprocessor
✤ NOT to reduce scheduling latency ✤ Evaluated with Feather-Trace ✤ Flexible, fine-grained measurement of different overheads 9
9 Tuesday, July 9, 13
✤ Testbed for applied real-time systems research ✤ Goal ✤ Allow implementation and evaluation of novel multiprocessor
✤ NOT to reduce scheduling latency ✤ Evaluated with Feather-Trace ✤ Flexible, fine-grained measurement of different overheads 10
10 Tuesday, July 9, 13
11
PREEMPT_RT (Linux)
11 Tuesday, July 9, 13
12
12 Tuesday, July 9, 13
✤ Evaluated with ✤ Lightweight tracing framework for measuring fine-grained
✤ Extensively used (20+ publications) ✤ Suitable for schedulability analysis ✤ Check if a task is going to miss a deadline 13
13 Tuesday, July 9, 13
✤ Evaluated with cyclictest ✤ Standard benchmark for
✤ Creator: Thomas Gleixner
✤ Reports scheduling latency as a single measure ✤ Treats hardware and OS as a black-box 14
14 Tuesday, July 9, 13
interrupt!
ISR called
brake sensor HP task ECU
15
Time until the highest-priority task is scheduled
15 Tuesday, July 9, 13
T
interrupt!
ISR called scheduler invoked
T T
w a k e u p t a s k
ZZ ZZ
16
Time until the highest-priority task is scheduled
16 Tuesday, July 9, 13
T
interrupt!
ISR called scheduler invoked
T T
w a k e u p t a s k
task picked
17
Time until the highest-priority task is scheduled
17 Tuesday, July 9, 13
T
interrupt!
ISR called scheduler invoked
T T
w a k e u p t a s k
task picked
Perform context switch C switched
18
Time until the highest-priority task is scheduled
18 Tuesday, July 9, 13
T
interrupt!
ISR called scheduler invoked
T T
w a k e u p t a s k
task picked
Perform context switch
19
scheduling latency Time until the highest-priority task is scheduled C switched
19 Tuesday, July 9, 13
20
Init Exit Measure
20 Tuesday, July 9, 13
21
Init Exit Measure Measuring thread is granted real-time status.
POSIX sched_setscheduler( )
21 Tuesday, July 9, 13
22
Init Exit Measure
22 Tuesday, July 9, 13
23
Init Exit Measure Periodically setup one-shot timers with nanosleep. Calculate delta between the instant the task starts executing and the instant the timer should have fired.
23 Tuesday, July 9, 13
24
Init Exit Measure
24 Tuesday, July 9, 13
25
Init Exit Measure Measuring thread returns to best-effort status.
POSIX sched_setscheduler( )
25 Tuesday, July 9, 13
26
Init Exit Measure LITMUSRT does not use POSIX API to setup real-time tasks!
26 Tuesday, July 9, 13
27
Init Exit Measure cyclictest works, but does not measure what we expect... LITMUSRT does not use POSIX API to setup real-time tasks!
27 Tuesday, July 9, 13
28
Init Exit Measure cyclictest works, but does not measure what we expect... LITMUSRT does not use POSIX API to setup real-time tasks! POSIX sched_setscheduler( ) POSIX sched_setscheduler( )
28 Tuesday, July 9, 13
29
Init Exit Measure POSIX sched_setscheduler( ) POSIX sched_setscheduler( ) cyclictest works, but does not measure what we expect... LITMUSRT does not use POSIX API to setup real-time tasks!
29 Tuesday, July 9, 13
30
Measure LITMUSRT API task_mode() LITMUSRT API task_mode() LITMUSRT Init LITMUSRT Exit No changes in the measurement phase, no bias.
30 Tuesday, July 9, 13
31
31 Tuesday, July 9, 13
32
Linux (core) Scheduler + Dispatcher Userspace Stock Linux
32 Tuesday, July 9, 13
32
Linux (core) Scheduler + Dispatcher Userspace Stock Linux
32 Tuesday, July 9, 13
33
Linux (core) Scheduling Policy Plugins Userspace LITMUSRT Dispatcher Linux (core) Scheduler + Dispatcher Userspace Stock Linux
33 Tuesday, July 9, 13
34
Linux (core) Userspace LITMUSRT Linux (core) Scheduler + Dispatcher Userspace Stock Linux How much latency does the scheduling policy interface add to the system? Question 1 Scheduling Policy Plugins Dispatcher
34 Tuesday, July 9, 13
35
Linux (core) Scheduler + Dispatcher Userspace PREEMPT_RT Linux (core) Scheduler + Dispatcher Userspace Stock Linux Linux (core) Userspace LITMUSRT Scheduling Policy Plugins Dispatcher
35 Tuesday, July 9, 13
36
Linux (core) Scheduler + Dispatcher Userspace PREEMPT_RT Linux (core) Scheduler + Dispatcher Userspace Stock Linux Linux (core) Userspace LITMUSRT Scheduling Policy Plugins Dispatcher
36 Tuesday, July 9, 13
36
Linux (core) Scheduler + Dispatcher Userspace PREEMPT_RT Linux (core) Scheduler + Dispatcher Userspace Stock Linux Linux (core) Userspace LITMUSRT Scheduling Policy Plugins Dispatcher
36 Tuesday, July 9, 13
37
What is the penalty for LITMUSRT not being based on PREEMPT_RT?
Question 2 Linux (core) Userspace LITMUSRT Linux (core) Scheduler + Dispatcher Userspace PREEMPT_RT Scheduling Policy Plugins Dispatcher
37 Tuesday, July 9, 13
38
Linux (core) Scheduler + Dispatcher Userspace
38 Tuesday, July 9, 13
38
Linux (core) Scheduler + Dispatcher
38 Tuesday, July 9, 13
39
Linux (core) Scheduler + Dispatcher Userspace cyclictest background workload
39 Tuesday, July 9, 13
CPU-bound background tasks I/O-bound background tasks
40
background tasks
40 Tuesday, July 9, 13
Partitioned Fixed Priority (P-FP), Partitioned EDF with synchronization support (PSN-EDF), Global EDF with synchronization support (GSN-EDF)
41
SCHED_FIFO
41 Tuesday, July 9, 13
✤ 16-core Intel Xeon platform ✤ cyclictest’s standard setup: ✤ one real-time task per processor ✤ periods: {1000, 1500, 2000, ...} μs ✤ Duration: 20 minutes per experiment ✤ Almost 6 million samples for each case ✤ Results shown in microseconds 42
42 Tuesday, July 9, 13
background tasks
43
43 Tuesday, July 9, 13
44
Scheduling Latency (μs)
5 10 15 20 P-FP (LITMUS^RT) Linux 3.0 PREEMPT_RT 11.2 13.9 15.3 2.7 2.9 3.5
Average (99% conf.) Maximum
44 Tuesday, July 9, 13
5 10 15 20 P-FP (LITMUS^RT) Linux 3.0 PREEMPT_RT 11.2 13.9 15.3 2.7 2.9 3.5
45
Average (99% conf.) Maximum
Scheduling Latency (μs)
45 Tuesday, July 9, 13
5 10 15 20 P-FP (LITMUS^RT) Linux 3.0 PREEMPT_RT 11.2 13.9 15.3 2.7 2.9 3.5
46
Average (99% conf.) Maximum
Scheduling Latency (μs)
46 Tuesday, July 9, 13
CPU-bound background tasks
47
✤ Tasks running an infinite loop
accessing memory (read/write)
✤ Working set larger than L2
cache size
47 Tuesday, July 9, 13
CPU-bound background tasks
48
✤ Tasks running an infinite loop
accessing memory (read/write)
✤ Working set larger than L2
cache size Generates memory traffic and cache contention!
48 Tuesday, July 9, 13
49
Scheduling Latency (μs)
20 40 60 80 P-FP (LITMUS^RT) Linux 3.0 PREEMPT_RT 17.4 72.7 47.6 3.4 4.2 5.2
Average (99% conf.) Maximum
49 Tuesday, July 9, 13
20 40 60 80 P-FP (LITMUS^RT) Linux 3.0 PREEMPT_RT 17.4 72.7 47.6 3.4 4.2 5.2
50
Scheduling Latency (μs)
Average (99% conf.) Maximum
50 Tuesday, July 9, 13
20 40 60 80 P-FP (LITMUS^RT) Linux 3.0 PREEMPT_RT 17.4 72.7 47.6 3.4 4.2 5.2
51
Average (99% conf.) Maximum
Scheduling Latency (μs)
51 Tuesday, July 9, 13
1 10 100 1000 10000 100000 1e+06 1e+07 10 20 30 40 50 60 70 80 90 number of samples
Linux 3.0: scheduling latency (CPU-bound bg tasks) min=2.04us max=72.73us avg=4.22us median=3.86us stdev=1.37us samples: total=5854711
52
Linux 3.0 P-FP(LITMUSRT)
avg=4.22μs max=72.73μs avg=5.17μs max=47.59μs
log scale!
Scheduling Latency (μs) (Bin size = 1μs)
52 Tuesday, July 9, 13
1 10 100 1000 10000 100000 1e+06 1e+07 10 20 30 40 50 60 70 80 90 number of samples
Linux 3.0: scheduling latency (CPU-bound bg tasks) min=2.04us max=72.73us avg=4.22us median=3.86us stdev=1.37us samples: total=5854711
53
Linux 3.0 P-FP(LITMUSRT)
avg=4.22μs max=72.73μs avg=5.17μs max=47.59μs
Scheduling Latency (μs) (Bin size = 1μs)
3 samples out of ~6 million
53 Tuesday, July 9, 13
1 10 100 1000 10000 100000 1e+06 1e+07 10 20 30 40 50 60 70 80 90 number of samples
Linux 3.0: scheduling latency (CPU-bound bg tasks) min=2.04us max=72.73us avg=4.22us median=3.86us stdev=1.37us samples: total=5854711
54
Linux 3.0 P-FP(LITMUSRT)
avg=4.22μs max=72.73μs avg=5.17μs max=47.59μs
Scheduling Latency (μs) (Bin size = 1μs)
Slightly worse latencies
54 Tuesday, July 9, 13
1 10 100 1000 10000 100000 1e+06 1e+07 10 20 30 40 50 60 70 80 90 number of samples
Linux 3.0: scheduling latency (CPU-bound bg tasks) min=2.04us max=72.73us avg=4.22us median=3.86us stdev=1.37us samples: total=5854711
55
Linux 3.0 P-FP(LITMUSRT)
avg=4.22μs max=72.73μs avg=5.17μs max=47.59μs
Scheduling Latency (μs) (Bin size = 1μs)
extra spinlock lack of low-level
55 Tuesday, July 9, 13
20 40 60 80 P-FP (LITMUS^RT) Linux 3.0 PREEMPT_RT 17.4 72.7 47.6 3.4 4.2 5.2
56
Average (99% conf.) Maximum
Scheduling Latency (μs)
56 Tuesday, July 9, 13
I/O-bound background tasks
57
✤ hackbench: Linux scheduler stress tool
bonnie++: Disk and file system benchmark wget: Network activity
57 Tuesday, July 9, 13
I/O-bound background tasks
58
✤ hackbench: Linux scheduler stress tool
bonnie++: Disk and file system benchmark wget: Network activity Causes a lot of system calls and interrupts
58 Tuesday, July 9, 13
59
Scheduling Latency (μs)
1 10 100 1,000 10,000 P-FP (LITMUS^RT) Linux 3.0 PREEMPT_RT 44.2 4300.4 3956.5 4.1 6.4 6.6
Average (99% conf.) Maximum
log scale!
59 Tuesday, July 9, 13
1 10 100 1,000 10,000 P-FP (LITMUS^RT) Linux 3.0 PREEMPT_RT 44.2 4300.4 3956.5 4.1 6.4 6.6
60
Scheduling Latency (μs)
Average (99% conf.) Maximum
60 Tuesday, July 9, 13
1 10 100 1,000 10,000 P-FP (LITMUS^RT) Linux 3.0 PREEMPT_RT 44.2 4300.4 3956.5 4.1 6.4 6.6
61
Scheduling Latency (μs)
Average (99% conf.) Maximum
61 Tuesday, July 9, 13
62
62 Tuesday, July 9, 13
63
63 Tuesday, July 9, 13
64
64 Tuesday, July 9, 13
✤ cyclictest was ported to LITMUSRT. ✤ Should it become the standard tool
65
65 Tuesday, July 9, 13
✤ cyclictest was ported to LITMUSRT. ✤ Should it become the standard tool
66
66 Tuesday, July 9, 13
T
interrupt!
ISR called scheduler invoked
T T
w a k e u p t a s k
OOPS... a higher priority task
67
67 Tuesday, July 9, 13
T
interrupt!
ISR called scheduler invoked
T T
w a k e u p t a s k
another task picked
68
68 Tuesday, July 9, 13
T
interrupt!
ISR called scheduler invoked
T T
w a k e u p t a s k
another task picked
task picked
69
69 Tuesday, July 9, 13
T
interrupt!
ISR called scheduler invoked
T T
w a k e u p t a s k
another task picked
task picked
70
This length of this interval depends
70 Tuesday, July 9, 13
T
interrupt!
ISR called scheduler invoked
T T
w a k e u p t a s k
another task picked
task picked
71
This length of this interval depends
..., which depends on other kinds of overhead, preemptions, context switches, etc.
71 Tuesday, July 9, 13
T
interrupt!
ISR called scheduler invoked
T T
w a k e u p t a s k
another task picked
task picked
72
This length of this interval depends
..., which depends on other kinds of overhead, preemptions, context switches, etc.
72 Tuesday, July 9, 13
73
cyclictest LITMUSRT/Feather-Trace
73 Tuesday, July 9, 13
✤
74
74 Tuesday, July 9, 13
75
75 Tuesday, July 9, 13
76
76 Tuesday, July 9, 13
77
77 Tuesday, July 9, 13
78
Scheduling Latency (μs)
5 10 15 20 25 Linux 3.0 Linux 3.8.13 19.7 13.9 2.9 2.9
Average Maximum
78 Tuesday, July 9, 13
79
Scheduling Latency (μs)
5 10 15 20 25 Linux 3.0 Linux 3.8.13 19.7 13.9 2.9 2.9
Average Maximum
79 Tuesday, July 9, 13
80
1 10 100 1000 10000 100000 1e+06 1e+07 10 20 30 40 50 60 70 80 90 number of samples
Linux 3.0: scheduling latency (no bg tasks) min=1.87us max=13.89us avg=2.89us median=2.77us stdev=0.51us samples: total=5854779 1 10 100 1000 10000 100000 1e+06 1e+07 10 20 30 40 50 60 70 80 90 number of samples Linux 3.8.13: scheduling latency (no bg tasks) min=1.52us max=19.73us avg=2.89us median=2.58us stdev=0.69us samples: total=5854801
Linux 3.0
avg=2.89μs max=13.89μs
Linux 3.8.13
avg=2.89μs max=19.73μs
80 Tuesday, July 9, 13
81
Scheduling Latency (μs)
20 40 60 80 Linux 3.0 Linux 3.8.13 64.5 72.7 4.0 4.2
Average Maximum
81 Tuesday, July 9, 13
82
Scheduling Latency (μs)
20 40 60 80 Linux 3.0 Linux 3.8.13 64.5 72.7 4.0 4.2
Average Maximum
82 Tuesday, July 9, 13
83
1 10 100 1000 10000 100000 1e+06 1e+07 10 20 30 40 50 60 70 80 90 number of samples
Linux 3.0: scheduling latency (CPU-bound bg tasks) min=2.04us max=72.73us avg=4.22us median=3.86us stdev=1.37us samples: total=5854711 1 10 100 1000 10000 100000 1e+06 1e+07 10 20 30 40 50 60 70 80 90 number of samples Linux 3.8.13: scheduling latency (CPU-bound bg tasks) min=2.14us max=64.47us avg=4.02us median=3.67us stdev=1.20us samples: total=5854707
Linux 3.0
avg=4.22μs max=72.73μs
Linux 3.8.13
avg=4.02μs max=64.47μs
83 Tuesday, July 9, 13
84
Scheduling Latency (μs)
1 10 100 1,000 10,000 Linux 3.0 Linux 3.8.13 5464.1 4300.4 6.2 6.4
Average Maximum
log scale!
84 Tuesday, July 9, 13
85
Scheduling Latency (μs)
1 10 100 1,000 10,000 Linux 3.0 Linux 3.8.13 5464.1 4300.4 6.2 6.4
Average Maximum
85 Tuesday, July 9, 13
86
1 10 100 1000 10000 100000 1e+06 1e+07 150 300 450 600 750 900 1050 1200 1350 number of samples
Linux 3.0: scheduling latency (IO-bound bg tasks) min=1.85us max=4300.43us avg=6.39us median=4.98us stdev=13.25us samples: total=5854674 1 10 100 1000 10000 100000 1e+06 1e+07 150 300 450 600 750 900 1050 1200 1350 number of samples Linux 3.8.13: scheduling latency (IO-bound bg tasks) min=1.85us max=5464.07us avg=6.23us median=4.60us stdev=15.91us samples: total=5854773
Linux 3.0
avg=6.39μs max=4300.43μs
Linux 3.8.13
avg=6.23μs max=5464.07μs
86 Tuesday, July 9, 13
87
87 Tuesday, July 9, 13
88
Scheduling Latency (μs)
7.5 15 22.5 30 P-FP PSN-EDF GSN-EDF 14.3 26.2 15.1 3.1 3.5 3.5
Average Maximum
88 Tuesday, July 9, 13
89
1 10 100 1000 10000 100000 1e+06 1e+07 10 20 30 40 50 60 70 80 90 number of samples
LITMUS^RT P-EDF: scheduling latency (no bg tasks) min=1.76us max=26.17us avg=3.45us median=2.87us stdev=1.24us samples: total=5854783 1 10 100 1000 10000 100000 1e+06 1e+07 10 20 30 40 50 60 70 80 90
LITMUS^RT G-EDF: scheduling latency (no bg tasks) min=1.59us max=14.34us avg=3.06us median=2.56us stdev=1.18us samples: total=5854797 1 10 100 1000 10000 100000 1e+06 1e+07 10 20 30 40 50 60 70 80 90 number of samples
LITMUS^RT P-FP: scheduling latency (no bg tasks) min=1.96us max=15.13us avg=3.45us median=3.10us stdev=1.03us samples: total=5854818
PSN-EDF
avg=3.45μs max=26.17μs
GSN-EDF
avg=3.06μs max=14.34μs
P-FP
avg=3.45μs max=15.13μs
89 Tuesday, July 9, 13
90
1 10 100 1000 10000 100000 1e+06 1e+07 10 20 30 40 50 60 70 80 90 number of samples
LITMUS^RT P-EDF: scheduling latency (no bg tasks) min=1.76us max=26.17us avg=3.45us median=2.87us stdev=1.24us samples: total=5854783 1 10 100 1000 10000 100000 1e+06 1e+07 10 20 30 40 50 60 70 80 90
LITMUS^RT G-EDF: scheduling latency (no bg tasks) min=1.59us max=14.34us avg=3.06us median=2.56us stdev=1.18us samples: total=5854797 1 10 100 1000 10000 100000 1e+06 1e+07 10 20 30 40 50 60 70 80 90 number of samples
LITMUS^RT P-FP: scheduling latency (no bg tasks) min=1.96us max=15.13us avg=3.45us median=3.10us stdev=1.03us samples: total=5854818
PSN-EDF
avg=3.45μs max=26.17μs
GSN-EDF
avg=3.06μs max=14.34μs
P-FP
avg=3.45μs max=15.13μs
2 samples
90 Tuesday, July 9, 13
91
Scheduling Latency (μs)
20 40 60 80 P-FP PSN-EDF GSN-EDF 60.2 73.3 47.6 5.8 5.1 5.2
Average Maximum
91 Tuesday, July 9, 13
1 10 100 1000 10000 100000 1e+06 1e+07 10 20 30 40 50 60 70 80 90 number of samples
LITMUS^RT P-EDF: scheduling latency (CPU-bound bg tasks) min=2.40us max=73.27us avg=5.14us median=4.21us stdev=2.95us samples: total=5854739 1 10 100 1000 10000 100000 1e+06 1e+07 10 20 30 40 50 60 70 80 90
LITMUS^RT G-EDF: scheduling latency (CPU-bound bg tasks) min=1.91us max=60.20us avg=5.81us median=5.39us stdev=2.51us samples: total=5854728 1 10 100 1000 10000 100000 1e+06 1e+07 10 20 30 40 50 60 70 80 90 number of samples
LITMUS^RT P-FP: scheduling latency (CPU-bound bg tasks) min=2.10us max=47.59us avg=5.17us median=4.37us stdev=2.75us samples: total=5854719
92
PSN-EDF
avg=5.14μs max=73.27μs
GSN-EDF
avg=5.81μs max=60.20μs
P-FP
avg=5.17μs max=47.59μs
92 Tuesday, July 9, 13
1 10 100 1000 10000 100000 1e+06 1e+07 10 20 30 40 50 60 70 80 90 number of samples
LITMUS^RT P-EDF: scheduling latency (CPU-bound bg tasks) min=2.40us max=73.27us avg=5.14us median=4.21us stdev=2.95us samples: total=5854739 1 10 100 1000 10000 100000 1e+06 1e+07 10 20 30 40 50 60 70 80 90
LITMUS^RT G-EDF: scheduling latency (CPU-bound bg tasks) min=1.91us max=60.20us avg=5.81us median=5.39us stdev=2.51us samples: total=5854728 1 10 100 1000 10000 100000 1e+06 1e+07 10 20 30 40 50 60 70 80 90 number of samples
LITMUS^RT P-FP: scheduling latency (CPU-bound bg tasks) min=2.10us max=47.59us avg=5.17us median=4.37us stdev=2.75us samples: total=5854719
93
PSN-EDF
avg=5.14μs max=73.27μs
GSN-EDF
avg=5.81μs max=60.20μs
P-FP
avg=5.17μs max=47.59μs
5 samples
93 Tuesday, July 9, 13
94
Scheduling Latency (μs)
1 10 100 1,000 10,000 P-FP PSN-EDF GSN-EDF 3905.8 3875.0 3956.5 11.0 6.6 6.6
Average Maximum
log scale!
94 Tuesday, July 9, 13
95
Scheduling Latency (μs)
1 10 100 1,000 10,000 P-FP PSN-EDF GSN-EDF 3905.8 3875.0 3956.5 11.0 6.6 6.6
Average Maximum
95 Tuesday, July 9, 13
96
Scheduling Latency (μs)
1 10 100 1,000 10,000 P-FP PSN-EDF GSN-EDF 3905.8 3875.0 3956.5 11.0 6.6 6.6
Average Maximum
96 Tuesday, July 9, 13
1 10 100 1000 10000 100000 1e+06 1e+07 150 300 450 600 750 900 1050 1200 1350 number of samples
LITMUS^RT P-EDF: scheduling latency (IO-bound bg tasks) min=1.98us max=3874.99us avg=6.56us median=5.11us stdev=12.66us samples: total=5854606 1 10 100 1000 10000 100000 1e+06 1e+07 150 300 450 600 750 900 1050 1200 1350
LITMUS^RT G-EDF: scheduling latency (IO-bound bg tasks) min=2.26us max=3905.79us avg=10.95us median=7.38us stdev=14.11us samples: total=5854793 1 10 100 1000 10000 100000 1e+06 1e+07 150 300 450 600 750 900 1050 1200 1350 number of samples
LITMUS^RT P-FP: scheduling latency (IO-bound bg tasks) min=1.89us max=3956.48us avg=6.60us median=5.17us stdev=12.76us samples: total=5854660
97
PSN-EDF
avg=6.56μs max=3874.99μs
GSN-EDF
avg=10.95μs max=3905.79μs
P-FP
avg=6.60μs max=3956.48μs
97 Tuesday, July 9, 13
1 10 100 1000 10000 100000 1e+06 1e+07 150 300 450 600 750 900 1050 1200 1350 number of samples
LITMUS^RT P-EDF: scheduling latency (IO-bound bg tasks) min=1.98us max=3874.99us avg=6.56us median=5.11us stdev=12.66us samples: total=5854606 1 10 100 1000 10000 100000 1e+06 1e+07 150 300 450 600 750 900 1050 1200 1350
LITMUS^RT G-EDF: scheduling latency (IO-bound bg tasks) min=2.26us max=3905.79us avg=10.95us median=7.38us stdev=14.11us samples: total=5854793 1 10 100 1000 10000 100000 1e+06 1e+07 150 300 450 600 750 900 1050 1200 1350 number of samples
LITMUS^RT P-FP: scheduling latency (IO-bound bg tasks) min=1.89us max=3956.48us avg=6.60us median=5.17us stdev=12.76us samples: total=5854660
98
PSN-EDF
avg=6.56μs max=3874.99μs
GSN-EDF
avg=10.95μs max=3905.79μs
P-FP
avg=6.60μs max=3956.48μs
Higher average
98 Tuesday, July 9, 13
99
99 Tuesday, July 9, 13
1 10 100 1000 10000 100000 1e+06 1e+07 10 20 30 40 50 60 70 80 90 number of samples
Linux 3.8.13: scheduling latency (no bg tasks) min=1.60us max=25.15us avg=2.82us median=2.65us stdev=0.47us samples: total=5854778
100
1 10 100 1000 10000 100000 1e+06 1e+07 10 20 30 40 50 60 70 80 90 number of samples Linux 3.8.13: scheduling latency (no bg tasks) min=1.52us max=19.73us avg=2.89us median=2.58us stdev=0.69us samples: total=5854801
avg=2.82μs max=25.15μs
Linux 3.8.13
avg=2.89μs max=19.73μs
Linux 3.8.13 threadirqs
100 Tuesday, July 9, 13
1 10 100 1000 10000 100000 1e+06 1e+07 10 20 30 40 50 60 70 80 90 number of samples Linux 3.8.13: scheduling latency (CPU-bound bg tasks) min=2.14us max=64.47us avg=4.02us median=3.67us stdev=1.20us samples: total=5854707 1 10 100 1000 10000 100000 1e+06 1e+07 10 20 30 40 50 60 70 80 90 number of samples
Linux 3.8.13: scheduling latency (CPU-bound bg tasks) min=1.95us max=40.90us avg=3.67us median=3.29us stdev=1.19us samples: total=5854684
101
avg=3.67μs max=40.90μs
Linux 3.8.13 threadirqs Linux 3.8.13
avg=4.02μs max=64.47μs
101 Tuesday, July 9, 13
1 10 100 1000 10000 100000 1e+06 1e+07 150 300 450 600 750 900 1050 1200 1350 number of samples
Linux 3.8.13: scheduling latency (IO-bound bg tasks) min=1.51us max=5203.38us avg=5.89us median=4.67us stdev=14.33us samples: total=5854724 1 10 100 1000 10000 100000 1e+06 1e+07 150 300 450 600 750 900 1050 1200 1350 number of samples Linux 3.8.13: scheduling latency (IO-bound bg tasks) min=1.85us max=5464.07us avg=6.23us median=4.60us stdev=15.91us samples: total=5854773
102
avg=5.89μs max=5203.38μs
Linux 3.8.13 threadirqs Linux 3.8.13
avg=6.23μs max=5464.07μs
102 Tuesday, July 9, 13