У меня есть сервер с оперативной памятью 2 ГБ, работающий на управляемом сервере MediaTemple DV, который использует 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 (который, кажется, противоречит free -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 здесь предполагает, что используется очень большой процент памяти, который не указан в верхней части.
Slab - это память, используемая ядром, и она не будет отображаться в верхняя. В настоящее время это около 1,2 ГБ, и это правильно добавляет к вашему верхняя вывод на тот, который задается свободно. Вы можете более подробно изучить, где он используется, используя плита команда.
P.S. Один из наиболее распространенных сценариев, когда используется много блочной памяти, когда в системе много файлов и она довольно много читает / записывает их. Затем много памяти уходит на кэширование информации inode. Это кеширование можно немного настроить, но ценой производительности.