Kategorie szkoleń | Egzaminy | Kontakt
  • 1
  • 3
  • 36

Mam systemik. Ma 4 GB ram. Na nim trochę procesów. Nagle - zaczął swapować. Czyli z jakiegoś powodu skończyła mu się pamięć. Jednak wygląda to tak:

root@X:~# ps aux |awk 'BEGIN{sum=0} {sum+=$6} END {print sum}'
721564
root@X:~# free
              total        used        free      shared  buff/cache   available
Mem:        3749364     3540212       28460         936      180692       64552
Swap:       4982716      521336     4461380

Czyli:

  • suma RSS dla wszystkich procesów to 721MB,
  • dostępnego jest 180+64MB = 244MB,
  • Dodając do tego "shared" - wychodzi ciągle ok 1GB.

Wszystkie tmpfs-y mają rozmiar 0.

Gdzie więc podziała się reszta - ponad 2GB ram?

Co może ją jeszcze używać i gdzie to zmierzyć?

 

Andrzej_Dopierała
  • Zapytał
  • @ Andrzej_Dopierała | 26.08.2016
    • lider
    • laureat
    • ekspert
    • 83
    • 65
    • 169

Odpowiedź (1)

  • 1

Ach, z tymi próbami zrozumienia, co się stało z każdą kością pamięci, jest zawsze trochę jak w przysłowiu “im dalej w las, tym więcej drzew”.

 

Wspaniałą metodą zlicza Pan całą RSS oraz dodatkowo wie Pan, że trzeba odjąć pamięć przeznaczoną na bufory I cache dyskowe. Kolejnym “drzewem” najprawdopodobniej będzie w tym momencie pamięć typu slab której większość będzie pewnie dostępna dla aplikacji czyli SReclaimable. Obydwie te wartości pokazuje cat /proc/meminfo. Jeśli potrzebna byłaby wiedza, na co jądro przeznacza pamięć tego typu, można poszukać narzędzia slabtop.

 

Dla tych, którzy chcą poznać zasady liczenia pamięci w Linuksie od początku polecam stronę http://www.linuxatemyram.com/. Dodatkowo jeszcze tutaj znajduje się szersza odpowiedź na takie samo - czyli bardziej zaawansowane - pytanie.

  • Odpowiedział
  • @ | 05.09.2016
  • TRENER ALTKOM AKADEMII