Назад | Перейти на главную страницу

Кэшированная память Linux: более 85% кэшированной памяти и использование подкачки

Я читал о Linux и памяти cachd на linuxatemyram но есть кое-что, что для меня не имеет смысла, если сервер имеет даже низкую нагрузку, вместо освобождения некоторой кэшированной памяти он начинает использовать подкачку, что замедляет работу сервера ..

Даже сейчас, когда нагрузка на сервер load average: 0.00, 0.00, 0.00 некоторая память заменяется местами, в то время как более 85% памяти используется для обмена.

Я читал похожие вопросы, например этот и этот, но упоминается, что подкачки не должно происходить. Кроме того, еще 3 недели назад кеш-память занимала гораздо меньшую часть памяти, и мы не меняли ничего, что могло бы повлиять на кешированную память.

Не могли бы вы сказать мне, все ли в порядке с этими значениями или может быть у меня проблема?

Спасибо!

[root@web01 ~]# cat  /proc/meminfo
MemTotal:      5183448 kB
MemFree:        249260 kB
Buffers:        330848 kB
Cached:        4317828 kB
SwapCached:         92 kB
Active:        2883596 kB
Inactive:      1882468 kB
HighTotal:     4315324 kB
HighFree:        63516 kB
LowTotal:       868124 kB
LowFree:        185744 kB
SwapTotal:     5799928 kB
SwapFree:      5799796 kB
Dirty:             368 kB
Writeback:           0 kB
AnonPages:      117356 kB
Mapped:          21076 kB
Slab:           152668 kB
PageTables:       4184 kB
NFS_Unstable:        0 kB
Bounce:              0 kB
CommitLimit:   8391652 kB
Committed_AS:   268708 kB
VmallocTotal:   116728 kB
VmallocUsed:      5404 kB
VmallocChunk:   110964 kB
HugePages_Total:     0
HugePages_Free:      0
HugePages_Rsvd:      0
Hugepagesize:     2048 kB

[root@web01 ~]# free
             total       used       free     shared    buffers     cached
Mem:       5183448    4932936     250512          0     330840    4317340
-/+ buffers/cache:     284756    4898692
Swap:      5799928        132    5799796

[root@web01 ~]# uname -a
Linux web01 2.6.18-164.15.1.el5PAE #1 SMP Wed Mar 17 12:14:29 EDT 2010 i686 i686 i386 GNU/Linux

Нет! В вашем примере сообщения для обмена фактически ничего не используется. Вы используете 92 КБ (или 132 КБ на втором снимке экрана) подкачки, что случайно и тривиально.

Кэшированная память - это свободная память, заполненная содержимым блоков на диске. Он будет освобожден, как только место понадобится для чего-то еще. Это хорошая вещь, которая повышает производительность.

Сравните свой вопрос с Сервер отказывается использовать раздел подкачки.

Что касается того, почему сервер может обменивать данные вместо освобождения кеша, возможно, ваши кэшированные данные читались намного больше, чем ваши данные, хранящиеся в памяти. Иногда в программах есть страницы, которые они редко посещают, если вообще посещают. Это пространство лучше использовать для кеширования.

Параметр vm.swappiness (также изменяемый через / proc ...) повлияет на это, но потратьте некоторое время на то, чтобы внимательно посмотреть, что происходит, прежде чем настраивать его, особенно с вашими счетчиками входа / выхода. sar и atop полезные инструменты для этого.

Попробуй добавить vm.swappiness = 0 к /etc/sysctl.conf и беги sysctl -p затем это заставит ядро ​​более агрессивно освобождать память, занятую файловым кешем, если пользовательское приложение требует от ядра область памяти.