Chciałbym wiedzieć, czy wyjście linuksa opartego na Red-Hat może być inaczej interpretowane przez linuks oparty na Debianie.
Aby uczynić pytanie jeszcze bardziej szczegółowym, szukam, aby zrozumieć, w jaki sposób interpretowana jest „średnia obciążenia” z pierwszego wiersza top
polecenia w systemie Red-Hat i jak to sprawdzić za pomocą oficjalnego kodu ro dokumentacji.
[Istnieje wiele sposobów podejścia do tego tematu, z których wszystkie są akceptowalnymi odpowiedziami na pytanie]
Jednym potencjalnym podejściem byłoby znalezienie, gdzie te informacje są oficjalnie udokumentowane.
Innym byłoby znalezienie wersji kodu, która top
jest zbudowana w konkretnej dystrybucji i wersji, nad którą pracuję.
Otrzymuję polecenie:
top - 13:08:34 up 1:19, 2 users, load average: 0.02, 0.00, 0.00
Tasks: 183 total, 1 running, 182 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.2%us, 0.2%sy, 0.0%ni, 96.8%id, 2.7%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 3922520k total, 788956k used, 3133564k free, 120720k buffers
Swap: 2097148k total, 0k used, 2097148k free, 344216k cached
W takim przypadku jak mogę zinterpretować średnią wartość obciążenia ?
Udało mi się ustalić, że średnie obciążenie wynosi około ostatniej chwili, z jednego źródła dokumentacji i że należy je zinterpretować po pomnożeniu przez 100, przez inne źródło dokumentacji.
Pytanie brzmi:
czy jest obciążone 0,02% czy 2%?
Źródła i wersje dokumentacji:
1) Pierwszy z gwiazdkami
TOP(1) Linux User’s Manual TOP(1)
NAME
top - display Linux tasks
Źródło: man top
w mojej dystrybucji RedHat
Ubuntu ma również wersję z „zadaniami”, która nie wyjaśnia średniej obciążenia w:
http://manpages.ubuntu.com/manpages/precise/man1/top.1.html
2) Drugi zaczyna się od
TOP(1) User Commands TOP(1)
NAME top
top - display Linux processes
Źródło:
http://man7.org/linux/man-pages/man1/top.1.htm
3) Ten zaczyna się od:
TOP(1)
NAME
top - display and update information about the top cpu processes
Źródło: http://www.unixtop.org/man.shtml najpierw jeden, można zobaczyć w lub i nie ma żadnego wytłumaczenia dla formatu wyjściowego (ani o średnim obciążeniu , w którym jestem zainteresowany) . Sekund jeden, zawiera krótkie wyjaśnienie, wskazując, że średnie obciążenie ma do czynienia z ostatnim 1 minutę, ale nic o interpretacji jego wartości!
man top
RHEL
online ubuntu documentation
Cytuję bezpośrednio z drugiego źródła:
2a. Średnie UPTIME i LOAD
Ta część składa się z pojedynczego wiersza zawierającego:
nazwę programu lub okna, w zależności od trybu wyświetlania,
aktualny czas i czas od ostatniego rozruchu
łączna liczba użytkowników
obciążenia systemu przez średnią z ostatnich 1, 5 i 15 minut
Tak więc, jeśli to wyjaśnienie jest rzeczywiście poprawne, wystarczy zrozumieć, że średnia obciążenia wynosi około ostatniej minuty.
Ale to nie wyjaśnia formatu liczby.
W trzecim wyjaśnieniu jest napisane, że:
Podając liczby średnich obciążeń, należy je pomnożyć przez 100.
To wyjaśnienie sugeruje, że 0,02 oznacza 2%, a nie 0,02%. Ale czy to prawda? Dodatkowo, czy jest to poprawne dla wszystkich dystrybucji Linuksa i potencjalnie różnych implementacji top
?
Aby znaleźć odpowiedź na to pytanie, próbowałem przejść przez kod, przeszukując go online. Ale znalazłem tam przynajmniej dwie różne wersje top
związane z RHEL! builtin-top.c
i refactored top.c
. Obie chronione prawem autorskim przez Red-Hat, jak napisano w zawiadomieniu na początku kodu, i dlatego wydaje się logiczne, że RHEL używa jednego z nich.
http://lxr.free-electrons.com/source/tools/perf/builtin-top.c
http://lxr.free-electrons.com/source/tools/perf/util/top.c
Zanim zagłębiłem się w ten kod, chciałem uzyskać opinię na temat tego, gdzie należy się skoncentrować, aby dokładnie zrozumieć, w jaki sposób interpretowane jest obciążenie procesora?
Z informacji podanych w odpowiedziach poniżej, oprócz niektórych osobistych poszukiwań, zauważyłem, że:
1 - top
Używam tego, co jest zawarte w pakiecie procps-3.2.8. Które można zweryfikować za pomocą top -v
.
2 - W wersji procps-3.2.8
, którą pobrałem z oficjalnej strony, wydaje się, że narzędzie uptime
pobiera informacje bezpośrednio z procfs
pliku /proc/loadavg
(nie korzystając z funkcji linux getloadavg()
).
3 - Teraz dla top
polecenia również nie używa funkcji getloadavg()
. Udało mi się zweryfikować, top
czy rzeczywiście robi to samo, couptime
narzędzie do wyświetlania średnich obciążeń. W rzeczywistości wywołuje funkcję uptime
narzędzia, która pobiera informacje z procfs
pliku /proc/loadavg
.
Wszystko wskazuje więc na /proc/loadavg
plik! Dlatego, aby dokładnie zrozumieć load average
wytworzony przez top
, należy przeczytać kod jądra, aby zobaczyć, jak plik loadavg
jest zapisywany.
Istnieje także doskonały artykuł wskazany w jednej z odpowiedzi, który zawiera wyjaśnienie dla laika trzech wartości loadavg
.
Tak więc pomimo faktu, że wszystkie odpowiedzi były równie przydatne i pomocne, zamierzam zaznaczyć tę, która wskazywała na artykuł
http://www.linuxjournal.com//article/9001 jako „odpowiedź” na moje pytanie. Dziękujemy wszystkim za wkład!
Dodatkowo od pytania Zrozumienie górnej i średniej obciążenia znalazłem link do kodu źródłowego jądra, który wskazuje miejsce, w którym loadavg
jest obliczany. Jak się wydaje, istnieje ogromny komentarz wyjaśniający, jak to działa, również ta część kodu jest w C
!
Link do kodu to http://lxr.free-electrons.com/source/kernel/sched/loadavg.c
Znowu nie próbuję angażować się w żadną formę plagiatu, po prostu dodaję to dla kompletności. Powtarzam więc, że link do kodu jądra został znaleziony w jednej z odpowiedzi w Zrozumienie górnej i średniej obciążenia ...
top -v
)