Znaczenie linii buforów / pamięci podręcznej w danych wyjściowych wolnej

168

Dlaczego pokazuje mój serwer?

            total      used      free   shared buffers    cached
    Mem: 12286456  11715372    571084        0   81912   6545228
-/+ buffers/cache:  5088232   7198224
   Swap: 24571408     54528  24516880

Nie mam pojęcia na temat obliczania pamięci w systemie Linux. Myślę, że mówi, że 5088232 jest używany tam, gdzie 7198224 jest bezpłatny, co oznacza, że ​​faktycznie zużywa 5 GB pamięci RAM?

Muahmmad Zeeshan
źródło

Odpowiedzi:

232

Znaczenie wartości

Pierwszy wiersz oznacza:

  • total: Twoja całkowita (fizyczna) pamięć RAM (z wyłączeniem małego fragmentu, który jądro rezerwuje dla siebie na stałe podczas uruchamiania); dlatego pokazuje ok. 11,7 GiB, a nie 12 GiB, które prawdopodobnie masz.
  • used: pamięć używana przez system operacyjny.
  • free: pamięć nie jest używana.

total= used+free

  • shared/ buffers/ cached: Pokazuje użycie pamięci do określonych celów, wartości te są uwzględnione w wartości dla used.

Drugi wiersz podaje dostosowane wartości pierwszego wiersza. Daje oryginalną wartość used minus suma buffers+cachedi oryginalną wartość free plus suma buffers+cached, stąd jej tytuł. Te nowe wartości są często bardziej znaczące niż wartości z pierwszego wiersza.

Ostatnia linia ( Swap:) podaje informacje o zużyciu przestrzeni wymiany (tj. Zawartości pamięci, która została tymczasowo przeniesiona na dysk).

tło

Aby właściwie zrozumieć, co oznaczają liczby, potrzebujesz trochę informacji na temat podsystemu pamięci wirtualnej (VM) w systemie Linux. Krótka wersja: Linux (jak większość współczesnych systemów operacyjnych) zawsze będzie próbował użyć wolnej pamięci RAM do buforowania rzeczy, więc Mem: freeprawie zawsze będzie bardzo niski. Dlatego linia -/+ buffers/cache:jest pokazana, ponieważ pokazuje, ile pamięci jest wolne, ignorując pamięci podręczne; pamięci podręczne zostaną zwolnione automatycznie, jeśli zabraknie pamięci, więc tak naprawdę nie mają znaczenia.

System Linux ma naprawdę mało pamięci, jeśli freewartość w -/+ buffers/cache:linii się zmniejsza .

Aby uzyskać więcej informacji na temat znaczenia liczb, patrz np. Pytania:

Zmiany w procps 3.3.10

Zauważ, że wyjście freezostało zmienione w procps 3.3.10 (wydany w 2014). Zgłoszone kolumny są teraz „całkowite”, „używane”, „wolne”, „współużytkowane”, „buff / cache”, „dostępne” , a znaczenie niektórych wartości uległo zmianie, głównie w celu lepszego uwzględnienia płyty jądra Linuxa Pamięć podręczna.

Zobacz raport błędu Debiana # 565518 dla motywacji i Co oznaczają zmiany w freeprodukcji od 14.04 do 16.04 na myśli? po więcej informacji.

Śleske
źródło
Czy mógłbyś rozszerzyć zakres rzeczy, które Linux może buforować? Czy to pliki, do których uzyskano dostęp, czy rzeczy sieciowe?
CMCDragonkai
@CMCDragonkai: Odpowiedź na serverfault.com/questions/23433/… szczegółowo określa, co składa się na „pamięć podręczną” i „bufor”.
śleske,
5
Nie sądzę, aby stwierdzenie „total = wykorzystane + wolne” było poprawne, zobacz następujące dane wyjściowe na moim komputerze:$ free -h total used free shared buff/cache available Mem: 3.4G 585M 152M 11M 2.6G 2.5G Swap: 4.0G 84M 3.9G
Sebastian,
@Sebastian: Ach, ciekawe. Wygląda na to, że ilość wolnych została zmieniona (w 3.3.10). Zredagowałem swoją odpowiedź, aby o tym wspomnieć. Jeśli jesteś zainteresowany tą zmianą, zastanów się nad zadaniem nowego pytania :-).
sleske,
3
total = used + free + buff/cache
niebezpieczne89
2

Linia buforów / pamięci podręcznej pokazuje, ile pamięci zajmują programy (pierwsza z tych kolumn) i jest bezpłatna dla programów do użycia (druga kolumna). Jest to dość ezoteryczna liczba i nie jest czymś, na co naprawdę spoglądałbyś w praktyce.

womble
źródło
A co oznacza pierwsza linia (linia mem)
Muahmmad Zeeshan
8
Że masz zainstalowane 12 GB pamięci RAM, z czego 11,5 GB jest używanych, a 0,5 GB jest obecnie nieużywane. Około 82 MB używanej pamięci jest wykorzystywane na bufory (połączenia sieciowe itp.), Podczas gdy około 6,5 GB jest wykorzystywane do przechowywania kopii danych na dysku, dzięki czemu dane nie będą musiały być ponownie odczytane, jeśli będą potrzebne.
womble
3
@Muhammad: „82 MB jest bezpłatne”. - nie, 57MiB jest darmowy (ale to nie ma znaczenia, patrz moja odpowiedź). „Teraz wszystko oznacza, że ​​system osiągnął swoje granice” - Nie, wcale nie. System ma 6,9 GiB w pamięci podręcznej, którą chętnie da aplikacjom, więc jest dużo miejsca. Ponadto wykorzystanie swapów jest bardzo niskie (tylko około 50 MB). Jeśli pamięć zacznie się zaciskać, użycie wymiany wzrośnie. Obecnie ledwo używasz połowy posiadanej pamięci RAM.
sleske,
4
Czy zastanawiałeś się kiedyś nad zadaniem nowego pytania?
womble
3
Nie zgadzam się, linia buforów / pamięci podręcznej jest faktyczną wolną pamięcią systemu, a zatem jest najbardziej odpowiednia, jeśli chcesz wiedzieć, czy system ma miejsce na programy.
eckes