Skocz do zawartości
Debek

Wyświetlenie używanego RAM'u

Rekomendowane odpowiedzi

Staram się napisać skrypt, który wyciąga z /proc/meminfo trzy wartości:

MemTotal - Czyli ile całkowitego ramu ma serwer

MemAvailable - Czyli ile ramu może być jeszcze przeznaczone na np. uruchomienie aplikacji

<MemUsed> - Czyli ile ramu jest używane nie wliczając w to buff/cache ponieważ w przypadku, gdy naprawdę RAM'U zabraknie to on znika i przechodzi do obsługi aplikacji.

 

Chciałbym wyciągnąć wartość, której nie ma zdefiniowanej w meminfo czyli nazwane przeze mnie "MemUsed".

Jak się domyślam MemTotal - MemAvailable = MemUsed

 

Czy rozumowanie przeze mnie jest poprawne co do tego, że buff/cache zostanie porzucone w przypadku kiedy zabraknie pamięci?

No i widzieliście już może gdzieś gotowy kod obliczania takiej wartości bezpośrednio z  /proc/meminfo? Nie chcę używać komendy "free" ponieważ w różnych dystrybucjach dane pojawiają się w różnych kolejnościach co utrudnia wyciąganie danych.

 

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
21 godzin temu, Debek napisał:

No i widzieliście już może gdzieś gotowy kod obliczania takiej wartości bezpośrednio z  /proc/meminfo? Nie chcę używać komendy "free" ponieważ w różnych dystrybucjach dane pojawiają się w różnych kolejnościach co utrudnia wyciąganie danych.

 

Jeśli  wyjście zwraca nazwy (co zwierą)  poszczególnych kolumn jak poniżej :

Cytuj

[domion@cd053 ~]$ free -m
              total        used        free      shared  buff/cache   available
Mem:          23933       15266        1914        1177        6751        6974
Swap:             0           0           0

 

To niezależnie od ich kolejności po rozbici na składowe do tablicy np w php funkcją explode  i z drugim rzędem tak samo będziesz miał informacje jaka kolumna jaki tym danych zawiera po indeksie w tablicy. 

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

a nie łatwiej dać

free -m | awk '{print $3}'

?

Edytowane przez l3szcz

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

@Debek, słusznie zauważyłeś, że cache może zostać w każdej chwili zwolnione na rzecz aplikacji. Dzieje się to w sposób automatyczny zawsze wtedy gdy aplikacje potrzebują więcej pamięci RAM a w systemie nie ma lub jest niewiele wolnej.

 

Interesującą Cię wartość możesz uzyskać poniższym poleceniem.

 

free -m | grep Mem | awk '{sum += $3 - $6} END {print sum}'

 

Na pewno dałoby się je napisać nieco lepiej ale na szybko coś takiego przyszło mi na myśl. Najważniejsze że działa ☺️

 

Przykład

 

              total        used        free      shared  buff/cache   available
Mem:          64134       45551        1899         154       16684       13500
Swap:         20479           0       20479

 

Wynikiem polecenia w tym przykładzie jest

 

28867

 

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

×

Powiadomienie o plikach cookie

Korzystając z forum, wyrażasz zgodę na: Warunki użytkowania, Regulamin, Polityka prywatności.