artykuły

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

14
29 marca 2020, 16:59 Mateusz Brzostek

Czy można użyć więcej niż 100% procesora?

Oczywiście nie – chodzi o to, że wyświetlane przez menedżer zadań sto procent nie oznacza „maksymalnego wysiłku” dla procesora. Nie znaczy też, że zadania konsumujacego 100% czasu procesora nie dałoby się już przyspieszyć, ani że w tym samym czasie nie można wykonać czegoś innego równocześnie.

Współczesne procesory to rozbudowane, asynchronicznie działające systemy wyposażone w o wiele więcej zasobów, niż te określone przez stan architekturalny. Mogą wykonywać instrukcje równolegle i poza kolejnością. Ścieżki danych wewnątrz procesora są często dostosowane do najszerszych instrukcji, które może on wykonywać, więc w wielu przypadkach nie są w pełni wykorzystywane. Zapełnienie wszystkich zasobów procesora w każdym cyklu jest niemożliwe nawet dla starannie przygotowanych krótkich programów, a tym bardziej poza zasięgiem typowego programu użytkowego. Najlepszym przykładem są procesory z symultaniczną wielowątkowością – SMT lub HT. SMT działa i daje korzyści właśnie dlatego, że 100% czasu procesora nie oznacza wykorzystania wszystkich jego zasobów.

Najłatwiej zauważyć różnice pomiędzy różnymi poziomami obciążenia procesora używając popularnych programów do sztucznego obciążania procesora. Na jednym procesorze, ustawionym na stałe taktowanie i napięcie zasilania, różne programy wywołują radykalnie różny pobór energii w zależności od tego, ile zasobów procesora rzeczywiście wykorzystują. Wszystkie zajmują 100% czasu procesora, a menedżer zadań wyświetla 100% użycia CPU.

Ostatnią zmyłką w obciążeniu procesora wyświetlanym przez menedżer zadań lub programy diagnostyczne są krótkie zadania, w których liczy się opóźnienie, czyli czas od nadesłania zadania do otrzymania wyniku. Takie zadania mogą wykorzystywać bardzo intensywnie wiele zasobów procesora i zajmować 100% jego czasu, ale tylko przez krótką chwilę. Menedżer zadań i wykorzystana w tym artykule metoda obserwują określone przedziały czasu. Jeśli przez połowę tego czasu procesor będzie całkowicie zajęty, a przez połowę stosunkowo mało obciążony, menedżer zadań pokaże 50% obciążenia. Jednak wydajność i tak będzie w dużym stopniu zależała od taktowania procesora i od tego, czy na tym samym rdzeniu inne programy wykonują obliczenia, bo te dwa czynniki mocno wpływają na opóźnienie pomiędzy zleceniem zadania a otrzymaniem wyniku.

Najważniejsze, co trzeba pamiętać o wykorzystaniu procesora, to:

  • Jeśli w trakcie działania programu menedżer zadań wyświetla mniej niż 100% obciążenia procesora, a mimo to brakuje nam wydajności, to nie znaczy, że program jest źle zoptymalizowany.
  • Jeśli w trakcie działania programu obserwujemy 100% wykorzystania CPU, to również nie znaczy, że program jest dobrze zoptymalizowany.
  • Wyświetlane przez menedżer zadań użycie procesora nie informuje nas o tym, czy można oczekiwać mniejszej lub większej wydajności po spowolnieniu lub przyspieszeniu taktowania.
Strona:
deton24Zobacz profil
Poziom ostrzeżenia: 0%
deton242020.03.29, 18:16
Kilka na prawdę świetnych spostrzeżeń. Warto przeczytać.

Wyświetlane przez menedżer zadań użycie procesora nie informuje nas o tym, czy można oczekiwać mniejszej lub większej wydajności po spowolnieniu lub przyspieszeniu taktowania.

Dokładnie. Przykład praktyczny - niektóre emulatory, które mocniej siedzą na wydajności pojedynczego wątku, np. PCSX2. Użycie CPU, sporo poniżej 100%, a jednak OC potrafi sporo dać. I to nawet na zwykłym C2D.
Zresztą, w niektórych grach z przeszłości bywa podobnie.
Tutaj chyba za dobry przykład posłużyłby Crysis.

W GPU z mylnym odczytem 100% jest podobnie. Nawet więcej - są zastosowania, gdzie monitor odczytu obciążenia GPU błędnie pokaże 0% podczas zadania akceleracji jakiegoś zadania, np. narzędzia oparte o sieci neuronowe (chyba z OpenCL), podczas gdy GPU-Z dopiero pokaże takie obciążenie, lub statystyki zaawansowane w menadżerze.
Czasami sprawia to problem ze sprawdzeniem, czy akceleracja działa, czy nie.
Edytowane przez autora (2020.03.29, 18:25)
AvitrZobacz profil
Poziom ostrzeżenia: 0%
Avitr2020.03.29, 20:34
-8#2
No tak. Artykuł o obciążeniu procesora podczas testów. Wszyscy liczą na testy przede wszystkim w grach, bo to tam jest największy problem z wykorzystaniem dużej ilości wątków i to tam CPU jest nieraz wąskim gardłem. A co nam autorzy zaserwowali? Brak nawet JEDNEJ gry.
daerraghZobacz profil
Poziom ostrzeżenia: 0%
daerragh2020.03.29, 21:29
Zgadza sie, wszystkim chodzilo o gry, np. zobaczyc takie r5 3600 vs i5-9400, gdzie zapewne r5 czasem bedzie mial jakies wolne moce przerobowe, w czasie gdy i5 bedzie hulala na 100%.
Edytowane przez autora (2020.03.29, 23:14)
freq86Zobacz profil
Poziom ostrzeżenia: 0%
freq862020.03.29, 23:08
Co to za program 'pwf' na wykresie zużycia energii?
Makavcio2Zobacz profil
Poziom ostrzeżenia: 0%
Makavcio22020.03.29, 23:29
-7#5
Równie dobrze można mierzyć prędkość samochodu poprzez sprawdzanie, jak długo ma zapalony silnik :]
Jedyna praktycznie przydatna rzecz z tego tekstu dla zwykłego śmiertelnika to chyba fakt, że czista rdzyniuff nic nie da, jeśli jeden wątek będzie zapchany, a reszta będzie na niego czekała, co dla zadziwiająco dużego grona osób wydaje się konceptem niemożliwym do zrozumienia.
kresekZobacz profil
Poziom ostrzeżenia: 0%
kresek2020.03.30, 06:58
Bardzo ciekawy tekst!
Jak na tle użytych 'generatorów obciążenia' wypada FIRESTARTER?

https://tu-dresden.de/zih/forschung/projekte/firestarter
mbrzostekZobacz profil
Poziom ostrzeżenia: 0%
Autor publikacjimbrzostek2020.03.30, 11:48
freq86 @ 2020.03.29 23:08  Post: 1238318
Co to za program 'pwf' na wykresie zużycia energii?

kresek @ 2020.03.30 06:58  Post: 1238330
Bardzo ciekawy tekst! Jak na tle użytych 'generatorów obciążenia' wypada FIRESTARTER?

pwf to były wyizolowane ze starej wersji Firestartera funkcje AVX256, skompilowane osobno na własne potrzeby. Na procesorach Intela pwf = Firestarter. Dziś używam po prostu Firestartera.

Co do gier: nieprawda, że wszystkim chodziło o gry. Dyskusja m. in. pod recenzjami Threadripperów i Cascade Lake X dotyczyła nie-gier, a ten artykuł jest jej rozwinięciem.

Gry składają się z bardzo małych, bardzo podobnych do siebie zadań obliczeniowych, z których każde trzeba ukończyć w skali kilkunastu milisekund. Obserwowanie C-stanów w skali setek milisekund jest zupełnie bezużyteczne do diagnozowania wydajności w tym przypadku. Do profilowania wydajności gier używa się innych technik, a wyciąganie użytecznych wniosków jest znacznie trudniejsze, ale może kiedyś do tego wrócę.
Edytowane przez autora (2020.03.30, 11:48)
deton24Zobacz profil
Poziom ostrzeżenia: 0%
deton242020.03.30, 19:55
jeśli jeden wątek będzie zapchany, a reszta będzie na niego czekała, co dla zadziwiająco dużego grona osób wydaje się konceptem niemożliwym do zrozumienia.

Chwila moment. Choć będzie zgoła niezupełnie adekwatny przykład do tego o co Ci chodzi.
Jak masz stary soft jednowątkowy, ale nie jest całkowicie źle napisany, to utylizacja CPU w systemie rozkłada się mniej więcej równo po wątkach. Wtedy możesz odpalić podobną operację rozbitą na kilka procesów, i wykonasz ją kilka razy szybciej.
Do tej pory np. twórcy programów do batch konwersji PNG/JPG/MP3/FLAC tego nie rozumieją i nadal nie zwielokrotniają operacji.
Inna sprawa, że są softy, które potrafią obciążyć pierwszy wątek na 100%, ale to są rzadkie przypadki, i z reguły wymuszane ręcznie przez system. Np. tryb kompatybilności z Windows 98.
Edytowane przez autora (2020.03.30, 22:05)
NamonakiZobacz profil
Poziom ostrzeżenia: 0%
Namonaki2020.03.30, 20:47
mbrzostek @ 2020.03.30 11:48  Post: 1238345
Do profilowania wydajności gier używa się innych technik, a wyciąganie użytecznych wniosków jest znacznie trudniejsze, ale może kiedyś do tego wrócę.

masz na myśli NVIDIA Nsight i AMD CodeXL (Radeon GPU Profiler)?
akko2012Zobacz profil
Poziom ostrzeżenia: 0%
akko20122020.03.30, 22:40
-1#10
Świetny test pokazujący jaj strona pclab.pl zarzyna komputery użytkowników od wyświetlania tego spamu zwanego reklama . Dzisiaj do internetu nie podchodzi się bez wszelkich blokad reklam jeśli ktoś nie chce sypać słownictwem na K itp
Funkcja komentowania została wyłączona. Do dyskusji zapraszamy na forum.
3