Поскольку я нашел обсуждение буферов / кеша на этом сайте, а не в 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%, потому что система виртуальной памяти и ленива, и умна. Но только на то, что он может сделать. Общая память (предположительно база данных) и анонимная память приложений, добавляющая почти столько же, сколько и хост, рискуют низкой производительностью.