Potrzebuję uzyskać użycie pamięci w% z vmstat, ale nie do końca rozumiem niektóre liczby odnoszące się do pamięci wyświetlanej w vmstat.
W szczególności, biorąc pod uwagę taki wynik
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 139728 45396 199128 1236360 1 2 4 622 3 1 51 4 43 2 0
Jaka jest całkowita ilość pamięci w systemie? Czy to „swpd” + „free” + „buff” + „cache”, co łącznie daje 1620612?
Jaka jest wolna ilość pamięci w systemie? Czy to 45396, jak pokazano w kolumnie „wolna”?
Problem polega na tym, że nie sumują się, ani nawet nie zbliżają do tego, co zgłosiło „top”. Wynik „top”, który wziąłem mniej więcej w tym samym czasie, co „vmstat's powyżej”:
[...]
Mem: 4059616k total, 3965504k used, 94112k free, 200020k buffers
[...]
Więc ... Zakładam, że w „vmstat” muszą znajdować się ukryte liczby / opcje, o których nie wiedziałem?
W tym celu muszę używać polecenia „vmstat”, a nie innych poleceń, ponieważ taki jest wymóg.
Idealnie więc, co chcę osiągnąć z 'vmstat', to% użycia pamięci, jak w:
<used_memory>/<total_memory> * 100%.
Dzięki!
Odpowiedzi:
To, czego szukasz, to wyjście z „darmowego”:
Oto wycieczka:
Jest to pudełko z 768 MB fizycznej pamięci RAM i partycją wymiany 500344 KB.
759456 KB jest „używany” (druga kolumna, górny wiersz). Z tej „używanej” pamięci 23132 KB to bufory (5. kolumna, górny wiersz), a 592484 KB (szósta kolumna, górny wiersz) to pamięć podręczna, pozostawiając 144840 KB (2. kolumna, 2. rząd) pamięci fizycznej, która jest używana przez aktywne procesy.
Jeśli weźmiesz pod uwagę, że pamięć używana przez bufory i pamięć podręczną może być wykorzystana do procesów, pozostawia 630716 KB (3. kolumna, 2. rząd) wolnej pamięci fizycznej.
Jak powiedziałem, partycja wymiany wynosi 500344 KB (pierwsza kolumna, dolny rząd). 21972 KB (2. kolumna, dolny rząd) pliku wymiany jest w użyciu, pozostawiając 478372 KB (3. kolumna, dolny wiersz).
Zatem twoja definicja% wolnej pamięci zależy od tego, czy liczysz bufory i pamięć podręczną, czy też liczysz swap, czy nie.
To powinno dać ci wystarczająco dużo, aby obliczyć procent według własnego uznania.
Oto wyniki top i free:
Możesz zobaczyć, w jaki sposób top i free zgadzają się (choć z niewielką różnicą - jest to maszyna dla wielu użytkowników, w której odzwierciedlone jest wykorzystanie pamięci przez najlepsze i darmowe programy).
Dodaj „-s”, gdy wywołasz vmstate, a zobaczysz prawie takie same dane wyjściowe, tylko w innej formie:
Widać, że vmstat pokazuje wszystkie te same liczby jako wolne.
źródło
Mam z tobą to samo pytanie i opracowałem formułę
Przetestowałem to na wersji vmstat z procps-ng 3.3.10 i vmstat z procps-ng 3.3.9
źródło
Zalecam przeczytanie niniejszej instrukcji IBM Redbook „Linux Performance and and Tuning Guidelines” ( http://www.redbooks.ibm.com/abstracts/redp4285.html?Open ). Zawiera szczegółowe informacje na temat danych zwracanych przez wiele poleceń i powinno ci pomóc.
Zazwyczaj używałem polecenia „darmowy” w systemie Linux lub „cat / proc / meminfo”.
źródło
Oto funkcja powłoki POSIX, która zaokrągla żądaną wartość procentową w dół do najbliższej liczby całkowitej (dla celów skryptowych może to być bardziej przydatne, ponieważ testy porównania arytmetycznej powłoki POSIX działają tylko z liczbami całkowitymi):
Dane wyjściowe (w moim systemie):
To samo z
free
:źródło