Память исчерпана, но сверху не отображаются процессы, использующие эту память
У меня есть сервер, который имеет 2 ГБ оперативной памяти и работает на DV-сервере MediaTemple, который использует CentOS. Команда free -m
дает следующее:
total used free shared buffers cached
Mem: 2048 1948 99 0 0 140
-/+ buffers/cache: 1808 239
Swap: 1536 288 1247
Но когда я пытаюсь выяснить, какие процессы используют память, используя top
Я получаю это:
1417 mysql 20 0 496m 496m 7512 S 1.3 24.3 42:10.92 mysqld
3259 okgo 20 0 49436 48m 11m S 0.0 2.4 0:21.96 php-cgi
3175 root 20 0 49144 47m 3196 S 0.0 2.3 0:01.80 spamd
3176 popuser 20 0 46940 45m 992 S 0.0 2.2 0:00.00 spamd
3269 okgo 20 0 44372 43m 10m S 19.2 2.1 0:02.11 php-cgi
3272 okgo_for 20 0 23808 23m 10m S 0.0 1.1 0:00.79 php-cgi
27161 root 20 0 10816 10m 9460 S 0.0 0.5 0:01.97 httpd
786 root 20 0 4844 4844 2140 S 0.0 0.2 2:28.96 newrelic-daemon
1017 apache 20 0 4552 4552 2228 S 0.0 0.2 0:01.38 httpd
3277 postfix 20 0 4432 4432 2548 S 0.0 0.2 0:00.00 trivial-rewrite
Меня смущает тот факт, что free -m
Кажется, команда показывает, что эта память не кэшируется, т.е. -/+ buffers/cache
линия также показывает 1827 подержанных! Что мне здесь не хватает?
редактировать
По запросу, вот вывод /proc/meminfo (который, кажется, противоречит свободному -m?):
MemTotal: 2097152 kB
MemFree: 55808 kB
Cached: 158656 kB
Buffers: 0 kB
Active: 368924 kB
Inactive: 428580 kB
Active(anon): 273480 kB
Inactive(anon): 365368 kB
Active(file): 95444 kB
Inactive(file): 63212 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 1572864 kB
SwapFree: 1277160 kB
Dirty: 68 kB
Writeback: 0 kB
AnonPages: 638848 kB
Shmem: 4424 kB
Slab: 1243780 kB
SReclaimable: 1222584 kB
SUnreclaim: 21196 kB
Кроме того, этот пост может пролить свет на ситуацию, но / proc / meminfo здесь предполагает, что используется очень большой процент используемой памяти, который не указан в верхней части.
1 ответ
Slab - это память, используемая ядром, и она не будет отображаться сверху. Сейчас это около 1,2 ГБ, и это правильно добавляет к вашему верхнему выводу тот, который предоставляется бесплатно. Вы можете узнать более подробно, где он используется, используя команду slabtop.
PS Один из наиболее распространенных сценариев, когда используется много памяти, когда система имеет много файлов и читает / пишет их довольно много. Затем много памяти уходит на кеширование информации об инодах. Это кэширование может быть немного настроено, но за счет производительности.