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

Linux: Drop Cache не освобождает буферы / кеш - почему?

Поскольку я нашел обсуждение буферов / кеша на этом сайте, а не в Unix of SE, я публикую здесь свой вопрос. я прочел В Linux, в чем разница между «буферами» и «кешем», сообщаемыми командой free? и Значение строки буферов / кеша в выводе free, где написано:

кеши будут освобождены автоматически, если памяти станет мало, поэтому они не имеют особого значения.

В настоящее время free сообщает о 8 ГБ буферов / кеша, однако система при приближении к нулю свободной памяти перестает отвечать на запросы в течение длительного времени и sync; echo 3 > /proc/sys/vm/drop_caches не сильно меняется. Зачем? Я публикую вывод free -m а также более подробный вывод cat /proc/meminfo:

              total        used        free      shared  buff/cache   available
Mem:          15740        4508        2366        8453        8865        2474

MemTotal:       16118172 kB
MemFree:          528472 kB
MemAvailable:     475820 kB
Buffers:            1588 kB
Cached:          8939100 kB
SwapCached:            0 kB
Active:          6711540 kB
Inactive:        8440460 kB
Active(anon):    6621624 kB
Inactive(anon):  8402256 kB
Active(file):      89916 kB
Inactive(file):    38204 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:       6211412 kB
Mapped:          1534592 kB
Shmem:           8812568 kB
Slab:             203244 kB
SReclaimable:     106932 kB
SUnreclaim:        96312 kB
KernelStack:       18736 kB
PageTables:        93880 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     8059084 kB
Committed_AS:   23933660 kB
VmallocTotal:   34359738367 kB
VmallocUsed:           0 kB
VmallocChunk:          0 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
ShmemPmdMapped:        0 kB
CmaTotal:              0 kB
CmaFree:               0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:     1761344 kB
DirectMap2M:    14704640 kB
DirectMap1G:     1048576 kB

/proc/sys/vm/drop_caches не используется в системных операциях. Не используйте его, только замедлит работу.

Что ж, у него есть некоторые применения, но они, как правило, являются крайними случаями. Тестирование хранилища с холодным кешем, необычные рабочие нагрузки виртуальной памяти. См. Ранее о сбое сервера: Зачем сбрасывать кеши в Linux?


Даже игнорируя Cached как если бы он был нулевым, эта система уже имеет относительно высокий уровень использования памяти. AnonPages + Shmem составляет 14 ГБ и меняется, только на 1 ГБ меньше MemTotal. И действительно, добавьте еще кое-что и MemAvailable составляет 0,5 ГБ.

Одно предположение о том, сколько оперативной памяти будет достаточно, зависит от ядра, Committed_AS. Достаточно, чтобы не выходить на страницу. Это может быть проблематичной метрикой, но это одна из немногих, которые напрямую оценивают использование физической памяти. Из вашего вывода meminfo около 23 ГБ, или 150% от MemTotal. Снова наполовину то, что у вас есть, может подойти для некоторых рабочих нагрузок, но мне было бы неудобно в системе без подкачки и предполагаемых проблем с объемом памяти.

Некоторые итоги составляют более 100%, потому что система виртуальной памяти и ленива, и умна. Но только на то, что он может сделать. Общая память (предположительно база данных) и анонимная память приложений, добавляющая почти столько же, сколько и хост, рискуют низкой производительностью.