Co oznaczają różne liczniki pamięci w FreeBSD?

20

góra mówi mi:

last pid: 64807;  load averages:  0.99,  0.97,  0.92                                          up 189+04:47:22 09:16:17
45 processes:  1 running, 44 sleeping
CPU:  0.4% user,  0.0% nice,  0.2% system,  6.4% interrupt, 93.0% idle
Mem: 222M Active, 2151M Inact, 2008M Wired, 823M Buf, 3499M Free
Swap: 8192M Total, 8192M Free

Munin pokazuje to nieco wyraźniej:

rtr1 roczne użycie pamięci

Jak widać, serwer ma około 8 GB pamięci RAM. Zastanawiam się, czy mogę wcisnąć tę bestię w skromniejszy serwer 2 GB . Teraz wiem, co oznaczają aktywne i bufory. Ale naprawdę martwię się o „przewodowe” i „nieaktywne” plamy pamięci. O ile mi wiadomo, nie są one mapowane na żaden istniejący proces.

Zwróć uwagę, jak wzrosła zielona „aktywna” linia w grudniu: wtedy zaczęliśmy używać demona BGP na tym routerze. Nie do końca rozumiem, co wydarzyło się w kwietniu i maju, ale pamiętam, że w tym czasie przeprowadziłem aktualizację systemu i przestawiłem się na pkgng .

Oto zapasowy router dla pierwszego z mniejszą ilością pamięci RAM (4 GB):

rtr0 roczne użycie pamięci

Wygląda na to, że ten żyje doskonale z połową pamięci RAM i wciąż pozostawia około 2 GB wolnego miejsca, co prowadzi mnie do wniosku, że mógłbym przejść na 2 GB dla tego serwera, obniżając koszty i konserwację ...

Jakieś sugestie? Co oznaczają różne liczniki pamięci pokazane u góry? Mówiąc dokładniej, co:

  • Aktywny
  • Nieaktywny
  • Pamięć podręczna
  • Bufory
  • Przewodowy
  • Darmowy

...prawdziwe znaczenie? Znalazłem kilka postów wyjaśniających fragmenty działania podsystemu VM i pamiętam, że miałem „ah-ah!” chwila rozumiem to wszystko około 12 lat temu, ale zapomniałem. :) Nawet wierny podręcznik FreeBSD nie odpowiedział na moje pytanie ...

Czy mogę obniżyć do 2 GB?

anarcat
źródło
Oto wersja tego pytania na Linuksa (wyjaśniająca freepolecenie z procps ): linux - rzeczywiste użycie pamięci
Adam Katz

Odpowiedzi:

25
  • Active: Pamięć aktualnie używana przez proces
  • Inactive: Pamięć, która została zwolniona, ale nadal jest buforowana, ponieważ może być ponownie użyta. Jeśli Freewymagana jest większa pamięć, pamięć ta może zostać wyczyszczona i zwolniona. Ta pamięć nie jest czyszczona, zanim będzie potrzebna, ponieważ „wolna pamięć jest marnowana”, nic nie kosztuje utrzymanie starych danych na wypadek, gdyby były potrzebne.
  • Wired: Pamięć używana przez jądro. Tej pamięci nie można zamienić
  • Cache: Pamięć używana do buforowania danych, w razie potrzeby może zostać natychmiast zwolniona
  • Buffers: Pamięć podręczna dysku
  • Free: Pamięć, która jest całkowicie darmowa i gotowa do użycia. Inactive, CacheA Buffersmoże stać się za darmo, jeśli są one czyszczone.

Możesz więc dodać Inactivedo swojej Freeliczby i uznać, że jest nieużywany. Wiredto pamięć używana przez jądro, które obejmuje stos sieci. Uruchomienie netstat -mdaje podsumowanie wykorzystania pamięci przez stos sieciowy.

Na podstawie twoich wykresów, poza niepokojącym skokiem wiredpamięci na początku marca, tak, powinieneś być w stanie uruchomić to obciążenie na 2 GB pamięci RAM. Jeśli tak, rozważ uruchomienie i386 zamiast amd64, ponieważ każda alokacja pamięci zajmie mniej miejsca, ponieważ wskaźniki będą 32-bitowe zamiast 64-bitowych.

Allan Jude
źródło
1
„Nieaktywna” pamięć „Nie można ponownie przypisać do innych procesów”, dlatego nie należy jej uważać za „nieużywaną”. Zobacz wiki.freebsd.org/Memory
humbads
1
Licznik „Nieaktywny” został podzielony na 2 osobne elementy w nowszym FreeBSD. „Nieaktywne” i „Pranie” (pamięć, którą należy jeszcze opróżnić, aby wymienić lub wykonać dysk, zanim będzie można ją zwolnić). Dodatkowe wyjaśnienia tutaj: lists.freebsd.org/pipermail/freebsd-arch/2016- Listopad/...
Allan Jude