Jak interpretować wynik polecenia „free -m”?

48

Dane wyjściowe free -mto:

                     total    used    free    shared  buffers  cached
Mem:                  595      482     112         0       63     324
-/+ buffers/cache:              93     501
swap:                   0        0       0

Która wartość użytej pamięci jest poprawna, 482 lub 93?

amoooc
źródło

Odpowiedzi:

41

Masz 112 MB całkowicie wolnej pamięci, ALE 501 MB bez pamięci „buforowanej”. Oznacza to, że system operacyjny umieścił pewne elementy w pamięci, aby były szybsze. Nazywa to „używanym” (dlatego twój „bezpłatny” numer to tylko 112), ale w rzeczywistości jest on dostępny, jeśli go potrzebujesz.

To dobrze, ponieważ nieużywana pamięć jest pamięcią bezużyteczną. W razie potrzeby pamięć podręczną można wyczyścić. Stare „Muszę wyczyścić pamięć” rzeczy, które ludzie robili dla Windows 95 nie są tutaj potrzebne: wszystko jest w porządku i szczęśliwy :)

Numer, którego szukasz, to 501 darmowych (z powodu megabajtów -m).

zobacz w celach informacyjnych te strony:

http://www.linuxatemyram.com/
http://www.itworld.com/it-managementstrategy/280695/making-sense-memory-usage-linux

Nanne
źródło
Zasadniczo: „wystarczy spojrzeć na drugą linię, tę z buforami / pamięcią podręczną”.
Nanne
25

Interpretowanie danych wyjściowych free:
Pierwszy wiersz freelist wyników:

  • total Całkowita pamięć fizyczna (przy założeniu braku wirtualizacji)
  • used Ile z tego jest obecnie wykorzystywane (przez cokolwiek)
  • free Ile z tego jest całkowicie bezpłatne (w ogóle nieużywane)
  • shared (nigdy nic, zignoruj ​​tę kolumnę)
  • buffers Pamięć używana przez bufory jądra
  • cached Pamięć używana do buforowania

Ostatnie dwa elementy, pamięć podręczna i bufory, to pamięć nieprzydzielona do określonych procesów użytkownika. Jest to pamięć zarezerwowana przez jądro w celu ogólnej poprawy wydajności, ale nie jest to pamięć „aplikacji”. Obszary te będą się powiększać lub zmniejszać w zależności od zasad jądra w odniesieniu do buforowania, presji pamięci, wzorców we / wy aplikacji itp.

Ponieważ te dwie kolumny nie są pamięcią alokowaną przez użytkownika, a strefy mogą się kurczyć (praktycznie do zera), jeśli alokacje użytkowników tego wymagają, są w pewnym sensie „wolne” - jest tam pamięć RAM, którą jądro może zwolnić, jeśli aplikacje aktywnie tego potrzebuję.

Tak mówi druga linia. Usuwa bufor i pamięć podręczną z usedkolumny (tak to -oznacza) i dodaje ( +) je do freekolumny. (Wystąpi problem z zaokrąglaniem.)

(Ostatni wiersz pokazuje stan twojej przestrzeni wymiany).

Dzięki uprzejmości: https://unix.stackexchange.com/a/33549/14497

Tak więc w twoim przypadku 112 MB jest całkowicie wolną pamięcią, a jeśli weźmiesz pod uwagę pamięć używaną do buforowania, którą w razie potrzeby można przydzielić aplikacjom użytkownika; wtedy 501 MB to rzeczywista maksymalna dostępna pamięć do użycia.

saji89
źródło
Osoba szukająca odczytu pamięci nigdy nie jest zainteresowana (lub prawie nigdy) ilością pamięci całkowicie wolnej, ale ile jest bezpłatna. pamięć podręczna jest „w użyciu”, ale można z niej także korzystać bezpłatnie, dlatego należy na nią spojrzeć.
Nanne
Nie jestem do końca pewien, dlaczego tak mówisz? Wydaje się to sugerować, że ktoś celowo usunie pamięć podręczną (co jest rzeczywiście złą rzeczą)? Chodzi o to, że ładowanie wszystkich rzeczy (takich jak program, którego chcesz użyć) do tej pamięci jest właściwie opcją. Chcesz, aby liczba 112 była jak najniższa, ale w twojej teorii oznaczałoby to, że nie możesz otwierać żadnych programów. Nie cel, który powiedziałbym. Ponadto: ta pamięć podręczna to nie tylko pamięć podręczna dysków, ale także pamięć podręczna systemu i podobne
Nanne
@Nanne, Ok. Zgadzam się stary. Dziękuję za poprawienie mnie. Zaktualizowałem swoją odpowiedź, aby odzwierciedlić to samo.
saji89
##### DZIĘKUJĘ WSZYSTKIM @ Nanne @ devav2 @ saji89 ZA DZIELENIE SIĘ WIEDZĄ - JESTEŚ NIESAMOWITE #####
amoooc
10

Odpowiedź @ saji89 jest doskonała, ale obecnie free -mnie drukuje już -/+ buffers/cachewiersza, ale zamiast tego umieszcza ilość dostępnej pamięci RAM w nowej availablekolumnie w pierwszym wierszu, na przykład:

ubuntu@pg_master:~$ free -m
              total        used        free      shared  buff/cache   available
Mem:          61406        1571         506       17131       59328       42150
Swap:             0           0           0
ubuntu@pg_master:~$ free -V
free from procps-ng 3.3.10

Możesz przeczytać zatwierdzenie do free (1), które usunęło wiersz w repozytorium . Również zatwierdzenie dodania nowej availablekolumny .

Paul A Jungwirth
źródło
4

free polecenie wyświetla informacje o nieużywanej i używanej pamięci oraz przestrzeni wymiany.

Poniżej znajduje się wyjaśnienie dostarczone przez http://www.linfo.org/free.html

Pierwszy wiersz, oznaczony jako Mem , wyświetla wykorzystanie pamięci fizycznej, w tym ilość pamięci przydzielonej do buforów i pamięci podręcznych. Bufor, zwany także pamięcią buforową, jest zwykle definiowany jako część pamięci, która jest zarezerwowana jako tymczasowe miejsce przechowywania danych wysyłanych lub odbieranych z urządzenia zewnętrznego, takiego jak dysk twardy, klawiatura, drukarka lub sieć.

Drugi wiersz danych, który zaczyna się od - / + buffers / cache , pokazuje ilość pamięci fizycznej aktualnie przeznaczonej na bufor bufora systemowego. Ma to szczególne znaczenie w przypadku programów aplikacyjnych, ponieważ wszystkie dane dostępne z plików w systemie, które są wykonywane przy użyciu wywołań systemowych read () i write () 1, przechodzą przez tę pamięć podręczną. Ta pamięć podręczna może znacznie przyspieszyć dostęp do danych, zmniejszając lub eliminując potrzebę odczytu lub zapisu na HDD lub innym dysku.

Trzeci wiersz, który zaczyna się od Zamień , pokazuje całkowitą przestrzeń wymiany, jak również jej część w użyciu i ile jest nadal dostępnych.

Pozwala przeanalizować wykorzystanie pamięci systemu

Użyłeś freepolecenia z opcją „-m”, która służy do wyświetlania wyniku w megabajtach

-m, --mega
              Display the amount of memory in megabytes.

Całkowita pamięć wynosi 595 (używane + wolne)

Użyto: 482 Bezpłatnie: 112

Twój system wykorzystuje 482 MB z 595 MB, w których tylko 93 MB jest wykorzystywane przez aktywne programy, a pozostałe 324 MB znajdują się w pamięci podręcznej

Więc kiedy uruchomisz jakiś program w przyszłości, powiedz, który wymaga więcej 120 MB. Wszystkie 112 MB (obecnie wolne) zostanie podanych, a pozostałe 8 MB zostanie pobrane z nieaktywnego bufora / pamięci podręcznej programu.

Edycja : Znaleziono ten link , który zapewnia dobre wyjaśnienie.

devav2
źródło
Nie sądzę, żeby to było poprawne. Jeśli odrzucisz pamięć podręczną, wykorzystałeś 93 MB, więc pozostało 501.
Nanne
Jak myślisz, dlaczego to nie jest poprawne? Wolna pamięć w systemie operacyjnym to 112 MB + 324 MB (która jest buforowana). Więc kiedy nowy program się uruchomi, najpierw użyje 112 MB, a potem pamięci podręcznej.
devav2
Zasadniczo, ponieważ 595-93=501 i (daj lub weź 1 MB do zaokrąglenia), a to brzmi jak 112liczba, o której myślisz, że szuka operacji.
Nanne
501 ma rację i to właśnie próbuję wyjaśnić. Z 595 użyto 482. W którym tylko 93 jest aktywną pamięcią używaną przez programy. Tak więc 112 jest dostępny bezpłatnie + w razie potrzeby więcej, pamięć można pobrać z pamięci podręcznej, która była wcześniej używana i obecnie nieaktywna.
devav2
ok, zgódź się więc :)
Nanne