Additional CFS Benchmarks

Transkrypt

Additional CFS Benchmarks
Additional CFS Benchmarks
Kacper Surdy
Źródła
• http://kerneltrap.org/Linux/Additional_CFS_B
enchmarks
• http://apcmag.com/why_i_quit_kernel_devel
oper_con_kolivas.htm
CK, CFS, SD
• CK
– Con Kolivas
– Staircase Deadline (SD)
• CFS
– Ingo Molnar
– Completely Fair Scheduler
Hackbench
• Ma testowad wydajnośd, narzut i skalarnośd
• Procesy podzielone w grupy
• W grupie:
– Serwery nasłuchują na gniazdach
– Wszyscy klienci wysyłają wiadomości do
wszystkich serwerów w grupie
Hackbench
• Niżej jest lepiej
• Na osiach
– Pionowo: czas trwania testu (w sekundach)
– Poziomo: podpisane “liczba procesów”,
prawdopodobnie powinno byd “liczba grup”
• hackbench $i działa jak hackbench
• hackbench –g $i uruchamia $i grup procesów z
domyślną liczbą procesów w grupie (np. 40)
Hackbench
Hackbench
•
•
•
•
Wygrywa SD
Większe różnice dopiero > 50 procesów
Stary scheduler wyraźnie odstaje
CFS – ładny, gładki wykres (byd może większa
przewidywalnośd?)
Lat_ctx
• Ma mierzyd czas przełączania kontekstu
• Procesy połączenie w pierścieo przez pipe’y
• Przekazują sobie kolejno token
• Możliwe jest wykonanie dodatkowej pracy by
zaśmied cache (tutaj bez tej opcji – tylko
przekazywanie tokenu)
Lat_ctx
• Niżej jest lepiej
• Na osiach
– Pionowo: czas trwania testu (w mikrosekundach)
– Poziomo: liczba procesów połączonych w pierścieo
Lat_ctx
Lat_ctx
• Wygrywa SD (przy małej liczbie procesów)
• Standardowy dogania SD (przy dużej liczbie
procesów)
• CFS wyraźnie najgorszy
Pipe-test
• Dwa procesy wymieniające komunikat przez
pipe
• Niżej jest lepiej
• Na osiach
– Pionowo: czas obrotu pętli (w mikrosekundach)
– Poziomo: kolejne próby (dla wyeliminowania
losowości)
Pipe-test
Pipe-test
• Podobnie jak Hackbench
• Wygrywa SD (po raz trzeci!)
• Stary scheduler wyraźnie odstaje
Razem
• Hackbench
1. 2.6.22-ck1
2. 2.6.23-cfs-devel
3. 2.6.21
• Lat_ctx
1. 2.6.22-ck1
2. 2.6.21
3. 2.6.23-cfs-devel
• Pipe-test
1. 2.6.22-ck1
2. 2.6.23-cfs-devel
3. 2.6.21
CFS < CK ?
Ingo:
many things happened between 2.6.22-ck1 and
2.6.23-cfs-devel that could affect performance
of this test. My initial guess would be
sched_clock() overhead. *…+
hackbench 90: sched-devel.git vs.
sched-devel.git+lowres-sched-clock+dsp
-----------------------------5.555
5.149
5.641
5.149
5.572
5.171
5.583
5.155
5.532
5.111
5.540
5.138
5.617
5.176
5.542
5.119
5.587
5.159
5.553
5.177
-----------------------------avg: 5.572 avg: 5.150 (-8.1%)
hackbench 90: sched-devel.git vs.
sched-devel.git+lowres-sched-clock+dsp
• Dokładniejszy (ale wolniejszy) sched_clock()
z 2.6.23 daje ok. 8% stratę
• Na jądrze 2.6.22 CFS powinien wygrad
Benchmarki
Jos Poortvliet:
But this is all microbenchmarks, which won't have
much effect in real life, right? [...]
Ingo:
yeah, it's much less pronounced in real life - a
context-switch rate above 10,000/sec is already
excessive - while for example the lat_ctx test
generates close to a million context switches a
second.
Benchmarki
Con:
The main problem was that there simply was
not a convincing way to prove that staircase
was better on the desktop. User reports were
not enough. There was no benchmark. *…+
Benchmarki
• Nie ma dobrych, sprawdzonych metod
testowania
• Testy syntetyczne nie odzwierciedlają
prawdziwego użycia
• Wrażenia z użytkowania są trudno mierzalne
i mogą byd nie obiektywne
Cytaty
Con:
*…+ the audio would skip. Skip! Jigabazillion
bagigamaherz of CPU and we couldn't play
audio?
*…+ developer said he couldn't reproduce the
problem on his quad-CPU 4GB RAM machine
with 4 striped RAID array disks... (w 2003)
Cytaty
Con:
There is no friendly way to communicate normal
users' issues that are kernel related.
How scary do you think it is to say 'my Firefox
tabs open slowly since the last CPU scheduler
upgrade'?