Dlaczego polecenie „top” pokazuje użycie procesora na poziomie 799%?

47

Korzystam z 4-rdzeniowego serwera Ubuntu. Jednak toppolecenie pokazuje, że użycie procesora wynosi 799% przez cały czas.

Jak to mozliwe? Wiem, że w przypadku procesorów wielordzeniowych oczekuje się użycia procesora w ponad 100%, ale 799% to naprawdę wysoka wartość.

Czy ktoś może mi wyjaśnić, dlaczego i kiedy to może się zdarzyć?

Edytować:

Zgodnie z sugestią Gregory MOUSSAT, używając htopa otrzymałem:

wprowadź opis zdjęcia tutaj

Arpssss
źródło
1
Czy 4 rdzenie mają po 2 wątki (np. Intel Core i7)?
Renan,
@Renan, uruchamiam go w jednym wątku.
Arpssss,
OK. Ponieważ widziałem, jak to się dzieje na niektórych systemach i7.
Renan,
1
Ale czy JVM jest jednowątkowy?
Ignacio Vazquez-Abrams,
6
To naprawdę wygląda jak w pełni załadowany i7, zwykle dostaję to podczas kodowania wideo
nohillside

Odpowiedzi:

65

Zastosowana skala topwynosi 100%, gdy rdzeń jest w pełni wykorzystany. Lub gdy jeden rdzeń wynosi 20%, a drugi 80%. Doprowadziło to do dziwnych wyników na komputerach wielordzeniowych, ponieważ z łatwością może przekroczyć 100%.
Jeśli masz 8 rdzeni, topmożesz wyświetlać od 0% (system bezczynności) do 800% (pełna moc).

Twój program używa tylko 4 rdzeni z hiperwątkiem (czyli 8 rdzeni wirtualnych) z maksymalną wydajnością. Więc top daje prawie 8 x 100% = 800%.

Nie możesz jawnie powiedzieć JVM, aby używał jednego wątku, użyje wielu wątków, aby wykonać swoją pracę, nawet jeśli użyjesz tylko jednego wątku w swojej aplikacji.

Możesz użyć tego htopnarzędzia jako lepszej topalternatywy. Zobaczysz swój program za pomocą wszystkich 8 rdzeni.

Gregory MOUSSAT
źródło
Możesz ograniczyć dowolny zestaw procesów do zestawu rdzeni lub ograniczyć% procesora. Jednak nie pamiętam poleceń. (jeden to cpulimit)
ctrl-alt-delor
+1 za htop, znacznie lepszy niż na szczycie lub na górze
CodeLikeBeaker
+1 za htop. To pomogło mi przybijać dwa głodne wątki!
Arun
3
Cały gradhtop
fragamemnon