Gdzie sieć czeka na górze?

9

Jeśli top pokazuje duże obciążenia i nie wiesz, czy proces powodujący to zajmuje czas procesora, czy też sieciowe operacje we / wy (nie lokalne operacje we / wy), jak możesz to sprawdzić?

Na naszym serwerze widzę wysokie wartości obciążenia, ale w połączeniu z bezczynnością 60% -70% i około 25% użytkowników. Chciałbym wiedzieć, jak interpretować takie wartości, ale w Internecie prawie zawsze czytam, że możesz użyć iostat, aby sprawdzić, czy proces niszczy twoje dyski. Ale już wiem na pewno, że tak nie jest. Proces, o którym mowa, również nie ma problemów z wykonaniem zadania, ale obciążenie jest nadal wysokie.

Czy istnieje więc sposób, aby dowiedzieć się więcej, która część jest spowodowana oczekiwaniem sieci, a która część jest spowodowana rzeczywistym czasem procesora? A jakie jest znaczenie „bezczynności” u góry?

Dla jasności: z obciążeniem mam na myśli 3 liczby, które oznaczają średnie procesy w kolejce na rdzeń. Na tej maszynie znajduje się 8 rdzeni, a liczby dochodzą do 25, co oznacza obciążenie 2,5 na rdzeń.

Jan
źródło
Co nazywacie „obciążeniem”: użycie procesora lub 3 wartości „średniej obciążenia” (widoczne na uptimewyjściu)?
spuk
1
Pytanie nie ma sensu ... czekanie na sieciowe IO nie zużywa czasu procesora.
psusi
2
Uwielbiam narzędzie htopdo podglądania procesów. W szczególności może pozwolić ci wybrać proces, a następnie użyć lpolecenia, pokaże wszystkie otwarte pliki przy użyciu urządzeń lsofwłączających IPv4i IPv6przesyłających strumieniowo itp. Jeśli stracezainstalowałeś na swoim urządzeniu, możesz także debugować połączenia systemowe i sygnały. Nie do końca odpowiedź, ale kolejne narzędzie, które rozważę w związku z tym, co próbujesz zbadać.
111 ---
Mam na myśli 3 liczby. Jak rozumiem, nazywane są „ładowaniem”, czy też się tutaj mylę? Reprezentują liczbę procesów w kolejce, które można wykonać, ale czy obejmuje to procesy oczekujące w sieci, czy wyklucza to procesy?
stycznia
A co definiujesz jako „wysoki”? Średnia obciążenia nie jest skalowana dla rdzeni. np. system ze średnią obciążeniem 1 i 4 rdzeniami ma 1/4 wartości, ponieważ jest obciążony jako system ze średnią obciążeniem 1 i tylko 1 rdzeniem. Średnia wartość obciążenia jest bardzo grubą liczbą.
bahamat

Odpowiedzi:

3

Jeśli top pokazuje duże obciążenia i nie wiesz, czy proces powodujący to zajmuje czas procesora, czy też sieciowe operacje we / wy (nie lokalne operacje we / wy), jak możesz to sprawdzić?

Sieciowe operacje we / wy nie są brane pod uwagę w metodzie Linux iowait, chyba że są częścią transakcji NFS, w którym to przypadku są traktowane jako operacje we / wy na dysku.

Czy istnieje więc sposób, aby dowiedzieć się więcej, która część jest spowodowana oczekiwaniem sieci, a która część jest spowodowana rzeczywistym czasem procesora?

Poza hipotetycznym oczekiwaniem NFS, żadna część średniego obciążenia nie jest przejmowana przez sieć oczekującą.

A jakie jest znaczenie „bezczynności” u góry?

Oznacza to procent czasu, w którym procesor nie znajduje się w innym z wymienionych stanów (użytkownik, system, nice, iowait, przerwania sprzętowe, przerwania programowe, skradzione). Obejmuje to oczekiwania sieciowe. W stanie bezczynności procesor zasadniczo nic nie robi. Zauważ, że iowait to także czas bezczynności, ponieważ procesor też nic nie robi.

jlliagre
źródło
Dzięki za odpowiedź. Tak więc w mojej sytuacji, w której widzę wysoką wartość bezczynności (60% - 70%) i niższy stan użytkownika (około 25%) oraz niski stan iowait, może to oznaczać, że serwer czeka na zasoby sieciowe, jeśli dobrze cię rozumiem.
stycznia
1
Niekoniecznie czekam na zasoby sieciowe. Może być tak, że procesor jest wystarczająco szybki, aby ukończyć wszystko, co należy zrobić. Wysokie średnie obciążenie jest prawdopodobnie spowodowane bardzo dużą liczbą wątków jednocześnie rywalizujących o procesor, ale w bardzo krótkich okresach czasu.
jlliagre