Systemy kłamią na temat użycia procesorów, z roku na rok jest coraz gorzej

Strona główna Aktualności

O autorze

Coraz szybsze te nasze komputery. Jakby się tak zastanowić, to właściwie nie wiadomo, dlaczego tak dużo czasu wciąż zajmują te podstawowe operacje systemowe, skoro w benchmarkach rok do roku widać, że sprzęt jest coraz szybszy. A może w rzeczywistości wcale taki szybki nie jest? Ciekawe stanowisko w tej sprawie zajął starszy architekt Netfliksa, Brandon Gregg. Podważył on wartość jednego z kluczowych parametrów, jakie wykorzystujemy przy ocenie wydajności – użycia procesora (CPU Utilization). Zdaniem tego eksperta nie tylko podawane przez systemy operacyjne użycie procesora mija się z rzeczywistością. W rzeczywistości parametr ten stale się pogarsza.

Użycie procesora jest kluczowym wskaźnikiem wydajności, służącą do śledzenia regresji lub ulepszeń, dającą dobry wgląd w wąskie gardła systemu.

Załóżmy, że jednordzeniowy procesor jest taktowany 1 GHz. Użycie procesora w tym scenariuszu to procent czasu spędzanego przez procesor na wykonywaniu pracy (w przeciwieństwie do bezczynności). Jeśli ten procesor 1,0 GHz wykonuje 800 milionów cykli pracy na sekundę, to jest on w 80% wykorzystywany w tej sekundzie. Jeśli wskaźnik ten osiągnie 100%, oznacza to, że system nie może już działać szybciej lub przyjąć więcej zadań.

Oczywiście od dawna już nie widzimy jednordzeniowych procesorów taktowanych stalym zegarem. Współczesne układy mają wiele rdzeni o dynamicznie zmieniającej się częstotliwości, do tego dochodzi sprzętowa wielowątkowość i współdzielone między rdzeniami bufory. Zasadniczo jednak uważa się, że procesory o wyższej wydajności (czy to za sprawą wyższej częstotliwości zegara czy większej liczby dostępnych rdzeni) będą dla danego obciążenia roboczego raportowały niższe użycie w różnych narzędziach systemowych, takich jak windowsowy menedżer zadań (taskmgr.exe) czy linuksowy top.

Brandon Gregg w swoim wystąpieniu, które możecie obejrzeć na powyższym wideo, każe nam zwątpić w ten pomiar. Od czasów pojawienia się HyperThreadingu w procesorach Intela, stan zasobów przedstawianych w menedżerze zadań i zasobów faktycznie dostępnych mają ze sobą coraz mniej wspólnego – system operacyjny zachowuje się tak, jakby logiczny rdzeń był fizycznym rdzeniem, w ten sposób mierząc użycie procesora.

Sęk w tym, że te rdzenie stały się zbyt szybkie dla komputera. Kiedy widzimy w monitorze systemowym, że użycie procesora jest na 90%, to może się nam to wydawać, że 90% mocy obliczeniowej CPU oddane jest jakimś pożytecznym zajęciom, a 10% idzie na jałowym biegu. Nic z tego, zapewnia Gregg. W rzeczywistości wygląda to znacznie gorzej: w zdecydowanej większości CPU niczego nie robi, większość wątków czeka sobie na dane z podsystemów pamięci, które nie nadążają za tym, co się dzieje.

Z roku na rok przepaść między wydajnością procesorów a pamięci rośnie. Projektanci architektur sprzętowych próbują się ratować przed tym wąskim gardłem, budując rozmaite struktury buforowania (L1, L2, L3), ale w tym roku dostali bardzo po głowie. Wydarzyło się coś nieprzewidzianego – łatki na luki Meltdown i Spectre.

Ekspert Netfliksa w swoim wystąpieniu pokazuje, jaki faktycznie łatki te wpływ mają na serwery o takich samych parametrach, uruchamiające te same obciążenia robocze. Najwyraźniej nieustanne czyszczenie bufora TLB (Translation Lookaside Buffer) powoduje zadławienie CPU – i to jest zgłaszane jako „użycie procesora”. W rzeczywistości nie mamy do czynienia z zadławionym procesorem, który zamiast np. spać i oszczędzać energię, po prostu czeka na możliwość zrobienia czegoś użytecznego.

© dobreprogramy