Mylone przez wartości procesora w uniksowym poleceniu „top”

11

Na poniższym zrzucie ekranu ogólny procesor jest zgłaszany jako 3%, ale proces mysqld jest zgłaszany jako wykorzystujący 57%. Czy to 57% ogólnych 3%, a zatem mysqld zużywa tylko około 1,5% procesora?

górny zrzut ekranu http://img.skitch.com/20090620-cih33piwnnrke6aw41y9p1phwr.jpg

AKTUALIZACJA : Poniższy komentator poprosił o naciśnięcie klawisza „1” i opublikowanie wyników: klawisz 1 http://img.skitch.com/20090620-gayja43s44qtw2wkw4aq642e8c.jpg

Teflon Ted
źródło

Odpowiedzi:

11

57,6% oznacza, że ​​mysqld używa .576 jednego procesora. Rozbieżność prawdopodobnie będzie warunkiem wyścigu między gromadzeniem danych dla całego systemu a gromadzeniem danych dla poszczególnych procesów.

EDYCJA: Na podstawie aktualizacji wygląda na to, że masz 16 rdzeni.

57.5% => .575/16 = .036 = 3.6%.

Stąd pochodzi twój 3%.

Jeśli zsumujesz wszystkie bezczynne wartości procentowe i odejmiesz od 1600%, to również wyniesie około 57,5%.

brian-brazil
źródło
3

Czy możesz spróbować nacisnąć cyfrę 1, gdy top jest uruchomiony i zobaczyć, co się stanie.

Edytować:

Pan Nieznany mówi to dobrze.

top mówi: „Gdybyś miał jeden rdzeń procesora, byłby on zajęty 57,5%”.

Ale masz 16 rdzeni. Więc ta liczba 57 jest rozrzucona po całym świecie, a mysqld jest wielowątkowy i wszystko ...

Trochę mylące. Ale myślę, że dzieje się tak, ponieważ topowi byłoby trudniej wyświetlić informacje dla każdego rdzenia ... wyobraź sobie linię informacyjną z 16 lub więcej rdzeniami!

Również jeśli zsumujesz cały czas pracy procesora "% us"

1.7+1.0+2.3+1.0+7.4+11.1+15.1+8.7 = 48.3
48.3/16 = 3.01875

Stąd pochodzi 3% liczba ...

Nie teraz
źródło
Gotowe; patrz zaktualizowane pytanie.
Teflon Ted
1

Czy ktoś polecił htop? Nie znaczy to, że pomogłoby w tym konkretnym pytaniu bardziej niż poprzednie odpowiedzi, ale czuję się zobowiązany do wspominania za htopkażdym razem, gdy widzę, że ktoś nadal korzysta top!

użytkownik14018
źródło
0

Nie wiem, czy twój top łączy jakiekolwiek posiadane procesory, ale nadal nie miałoby to większego sensu.

Może się zdarzyć, że top nie otrzyma wartości dla każdego procesu i całkowitego zużycia procesora w tym samym czasie. Jest niewielki czas, w którym mysql mógł zatrzymać lub zacząć używać dużej ilości procesora między czasem, w którym informacje o procesie są odczytywane a globalne. Może to być po prostu prosty warunek wyścigu.

Oczywiście musiałoby to nastąpić wystarczająco długo, abyś to zauważył, więc domyślam się, że może to być dziwny błąd gdzieś na górze lub w księgowości jądra.

David Pashley
źródło
0

us: przestrzeń użytkownika - to, co uruchamiasz powyżej jądra sy: wywołania systemowe - co jest uruchomione w jądrze ni: reniced procesy id: idle wa: czekam na we / wy hi: przerwania sprzętowe - ile czasu zajmuje praca ze sprzętem si: przerwania programowe - ile czasu zajmuje zajmowanie się przerwaniami programowymi (wywołania systemowe itp.)

Ric
źródło