Skocz do zawartości
  • Cześć!

    Witaj na forum RootNode - aby pisać u nas musisz się zarejestrować, a następnie zalogować. Posty pisane z kont niezarejestrowanych nie są widoczne publicznie.

Rekomendowane odpowiedzi

Opublikowano

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.

 

Opublikowano
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. 

Opublikowano

@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

 

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ę
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

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