W jaki sposób mój komputer może wykorzystywać moc obliczeniową komputera w 300%?

65

Bawię się scenariuszem i dobrze mnie porwie (nadal działa, a mój komputer jeszcze nie zmarł). Korzystam z 17 iteracji skryptu (z zamiarem awarii mojego komputera).

Patrząc na monitor aktywności, widzę, że każdy proces w Pythonie ma unikalny identyfikator i wydaje się, że każdy z nich zajmuje około 17-20% mojej mocy obliczeniowej ... Czy mój komputer magicznie zwiększył moc 200% i gdzieś złamał zasady termodynamiki?

Wpisz opis zdjęcia tutaj

Frankenmint
źródło
28
300% procesora = 3 procesory.
user253751
7
„Poziomy mocy wynoszą 400%”
Nitish
Przypomina mi wszystkie odcinki Star Trek, w których silniki Warp wymykają się spod kontroli ...
Daniel
To poważne przetaktowywanie !!
Andrew Grimm,

Odpowiedzi:

101

W OS X, podobnie jak inne * nixy, obciążenie procesora jest mierzone na rdzeń procesora wirtualnego. Jeśli masz wiele - możesz mieć 200% i więcej łącznie pod pełnym obciążeniem.

Różni się to od systemu Windows i być może niektórych innych systemów, w których obciążenie procesora jest obliczane na cały procesor (lub procesory - nie pamiętam, jak się zachowuje, mając wiele procesorów fizycznych).

Vasfed
źródło
21
Ta odpowiedź jest poprawna tylko w przypadku niektórych platform! Na przykład system Windows zgłasza całkowite obciążenie procesora, a nie jako procent jednego rdzenia.
fabspro
2
Warto zauważyć, że reprezentacja obciążenia dziesiętnego (np. 0,5 lub 2,4) zgłoszona na przykład przez polecenie uptime nie jest sumą procentowego zużycia każdego rdzenia, ale raczej oszacowaniem liczby rdzeni potrzebnych do natychmiastowego przetworzenia każdego żądania. Nie jestem pewien, jak bardzo ta aplikacja normalizuje wartości.
Sebb
3
@Sebb średnia obciążenie (LA) to średnia liczba procesów oczekujących na wykonanie, mogą one oczekiwać na IO, niepotrzebne procesory
Vasfed
3
@ Random832 od linux man - man7.org/linux/man-pages/man1/uptime.1.html : „Średnie obciążenie systemu to średnia liczba procesów, które są w stanie uruchomialnym lub nieprzerwanym. Proces w stanie wykonalnym używa procesora lub czeka na użycie procesora. Proces w stanie nieprzerwanym czeka na dostęp do niektórych operacji wejścia / wyjścia, np. na dysk. ”
Vasfed
4
Przeciętne obciążenie @slebetman nie dotyczy czasu procesora, ale długości kolejki, na przykład patrz serverfault.com/a/524818
Vasfed
81

OS X i Linux oraz ewentualnie inne systemy operacyjne UNIX (a raczej najpopularniejsze narzędzia w tych systemach) wyświetlają użycie procesora inaczej niż Windows. W systemie Windows 100% oznacza „ wszystkie wykorzystane zasoby procesora”. W systemie Linux oznacza to, że jeden „wątek” (jak w Hyper-Threading) jest całkowicie zajęty. W związku z tym może sięgać (Number of Threads per Core) * (Number of Cores per CPU) * (Number of CPUs)łącznie.

Chociaż nie do końca spokrewniony, kolejny interesujący fakt: Windows 10 dalej normalizuje użycie procesora, wykorzystując aktualny stan dławienia procesora. Tak więc procesor 2 GHz pracujący z przepustnicą 1 GHz będzie zajęty tylko do 50%.

Daniel B.
źródło
7
Interesujący fakt. :)
Hennes,
7
A dzięki Turbo Boost system Windows zgłosi, że procesor działa ponad 100%
Martheen Cahya Paulo
Myślę, że to sposób BSD, a nie ogólnie * nix. To samo widzę na moim Macu i moim FreeBSD.
JDługosz
1
@ JDługosz Jestem pewien, że to prawda w przypadku Linuksa, przynajmniej w przypadku niektórych jego narzędzi. Na przykład jestem pewien, że tak się topzachowuje.
reirab
12

Jak już wspomniano w kilku odpowiedziach, Mac pokazuje procent procesora każdego procesu jako „procent jednego rdzenia”, dlatego powinieneś podzielić go przez liczbę rdzeni [włączając HT jako „podwójne”]

Jeśli nie masz pewności, ile masz wirtualnych rdzeni, Cmd ⌘ 3 wyświetli się panel Historia procesora Monitora aktywności, w którym możesz po prostu policzyć paski;)

wprowadź opis zdjęcia tutaj

Bezpośrednio poniżej miejsca, w którym odcięto obraz, są informacje potrzebne do szybkiego określenia rzeczywistego całkowitego zużycia dla Systemu :, Użytkownik: i Bezczynność: Na tym polega twoja prosta suma do 100%

wprowadź opis zdjęcia tutaj

Tetsujin
źródło
4
Na prawdę? 24 rdzenie ???? Ledwo mam 4 :) TIL rzeczywiście dziękuję za udostępnienie tego !: puu.sh/nNrHU/f2abb55dc7.png
Frankenmint
5
ach ... tak - to Mac Pro 5,1 - ostatni z „tarek do sera”. Podwójne 6-rdzeniowe Xeony [+ HT];)
Tetsujin,
6

Monitor aktywności nie mierzy mocy obliczeniowej, z której korzysta każda aplikacja / proces, po prostu szacuje ją za pomocą algorytmu. Może to być niedokładne ...

Ponadto, jak wskazuje @Vasfed, zużycie procesora jest mierzone na rdzeń procesora. Wiele rdzeni może oznaczać zużycie wyższe niż 100% ...

Geek od czasu do czasu napotyka na to zjawisko i jest oszołomiony, dopóki Superuser nie przyjdzie mu z pomocą ...; D

rahuldottech
źródło
@underscore_d Tak ... ale kiedy odpowiedziałem, była tylko jedna odpowiedź. Inne (co prawda lepsze) odpowiedzi zostały opublikowane później ...
rahuldottech
sprawiedliwie, powinienem był sprawdzić czasy, które upłynęły od poziomu „dni” ... nie jest tak źle: p
underscore_d