artykuły

Użycie procesora podczas testów na PCLab.pl

14
29 marca 2020, 16:59 Mateusz Brzostek

Użycie CPU w przykładowych testach wydajności

Sprawdziliśmy wykorzystanie CPU w kilku testach reprezentujących różne rodzaje obciążenia i skalowania. Nie ma tu wszystkich testów, które pojawiają się w recenzjach procesorach – staraliśmy się wybrać najciekawsze i najczęściej powtarzane.

Benchmarki wielowątkowe

Ta grupa jest nudna: obciążenie procesora jest takie, jakiego się spodziewamy, i zwykle jednolite przez cały czas trwania testu.

Cinebench to jeden z takich testów – zaczyna się, w krótkim czasie wszystkie wątki zostają obciążone, wszystkie kończą pracę niemal w tym samym momencie.

 V-ray Next i y-cruncher podobnie w bardzo dużym stopniu obciążają wszystkie wątki. Korzystają też dość intensywnie z pamięci. W y-cruncherze profil obciążenia pozwala nawet zauważyć, że proces obliczania rozwinięcia dziesiętnego π jest podzielony na trzy etapy oddzielone bardzo krótkimi przerwami.

Praktyczne zadania wielowątkowe

Jednym z najczęściej spotykanych praktycznych zadań, które dość łatwo można zrównoleglićPrzynajmniej w pewnym zakresie – skalowanie powyżej kilkunastu wątków nie jest łatwe., jest kodowanie wideo. Dwa kolejne testy są dość podobne: w Premiere Pro i x264 kodujemy ten sam plik wideo do takiego samego formatu (H.264). Premiere Pro ma trochę więcej pracy, bo nakłada na źródłowy materiał prosty efekt; używa też innego enkodera, niż otwartoźródłowy x264.

Krótki test wydajności w Blenderze (w przypadku megawątkowych procesorów wykonujemy też inny, bardziej wymagający) polega na renderowaniu umiarkowanie złożonej sceny w niskiej rozdzielczości. Ten eksperyment wykonaliśmy z najnowszą wersją Blendera, 2.82 (nie 2.80a, z której wyniki znajdziecie w testach procesorów z ostatnich miesięcy). Na wykresie poniżej test zaczyna się ok. 15 sekundy. Pierwsza część jest głównie jednowątkowa, polega na przygotowaniu sceny i stworzeniu odpowiednich struktur danych w pamięci. Dopiero później zaczyna się łatwa do zrównoleglenia część, w której cały orbaz jest podzielony na wiele małych obszarów „rozdawanych” kolejno do obróbki wielu wątkom.

Pomiar czasu obejmuje również tę pierwszą część, dlatego procesor o dwa razy większej liczbie wątków nie kończy tego zadania dwa razy szybciej.

Praktyczne zadania częściowo wielowątkowe

Kilka zadań w naszej procedurze testowej jest właściwie wielowątkowych, ale mimo wszystko mocno zależnych od wydajności jednowątkowej, pojemności pamięci podręcznej i opóźnienia w dostępie do RAM-u. Przykładem jest Adobe After Effects. W tym teście program generuje podgląd złożonego projektu – sekwencji początkowej z filmów serii „Pan Appka”. Klatka po klatce obliczana jest cała sekwencja trwająca niecałe 2 sekundy – jak widać, nawet szybkim procesorom brakuje sporo do odtwarzania jej w czasie rzeczywistym za pierwszym razem, dlatego czas tej operacji jest istotny.

Najciekawszy w tym teście jest wyraźny podział na 3 etapy renderowania. Ponieważ cała operacja odbywa się sekwencyjnie, klatka po klatce, obciążenie procesora zmienia się w zależności od tego, jakie elementy graficzne i jakie efekty pojawiają się na ekranie w danym momencie.

Drugim podobnym testem jest kompresja dużej liczby plików. Paczka plików ma objętość ok. 1,7 GB i składa się z plików różnej wielkości. Kompresja może być rozdzielona na wiele wątków, jeśli każdy może się zająć jednym plikiem. Kompresja największych plików z paczki trwa dość długo w porównaniu do wszystkich pozostałych. Na nowoczesnym wielowątkowym procesorze ta możliwa do zrównoleglenia część odbywa się tak szybko, że połowę lub więcej czasu kompresji zajmuje „ogon” złożony z dwóch-trzech największych plików.

Przeprowadziłem ten test drugi raz po wyłączeniu dwóch rdzeni w procesorze. Łatwo zauważyć, że część wielowątkowa się wydłużyła – tę samą ilość pracy trzeba teraz rozłożyć pomiędzy mniej wątków. Zwróćcie jeszcze uwagę na wykorzystanie interfejsu pamięci: jest mniejsze, niż kiedy wszystkie wątki były włączone. Ponieważ mniej danych jest obrabianych jednocześnie, rzadziej trzeba sięgać do RAM-u. Co więcej, wyłączenie rdzeni pozostawia przylegające do nich segmenty pamięci L3 włączone. To znaczy, że w i9-9900K z wyłączonymi rdzeniami na każdy wątek przypada więcej pamięci podręcznej. Dlatego w tym przypadku, choć liczba pracujących wątków zmniejszyła się o 1/4, użycie interfejsu pamięci zmniejszyło się o większy ułamek. 

Praktyczne zadania jednowątkowe

Wreszcie mnóstwo zadań, również w naszej procedurze testowej, jest zupełnie jednowątkowych. Trudno powiedzieć, które z nich da się i warto by było zrównoleglić. Wydaje się, że jeśli coś trwa kilkadziesiąt sekund, to już warto zainteresować się przyspieszeniem tej operacji na współczesnych procesorachOstatni masowo produkowany jednordzeniowy procesor wydano 10 lat temu.? Jak się okazuje, nie zawsze.

Większość operacji w Photoshopie używa 1-2 wątków. Ta sytuacja nie zmienia się od lat; zapewne wiele z nich nie może być w łatwy sposób zrównoleglone, a na ulepszenie pozostałych chyba nie ma co mieć nadziei.

Pozostałe dwa testy reprezentują wydajność w wyświetlaniu stron internetowych. Współczesne przeglądarki uruchamiają przynajmniej dwa procesy – jeden główny plus jeden na każdą kartę.

Nic specjalnego: oba testy są głównie jednowątkowe i mało intensywnie korzystają z pamięci.

2