Смотрю состояние памяти на виртуалке:
[user@server ~]$ free -h -w
total used free shared buffers cache available
Mem: 7,5Gi 385Mi 138Mi 4,1Gi 0,0Ki 7,0Gi 2,8Gi
Swap: 1,0Gi 140Mi 883Mi
На виртуалке запущен PostgreSQL, который использует 4Гб shared_buffers. Пытаюсь интерпретировать вывод free
.
- total — объем физической памяти;
- used — память, выделенная через malloc (used = total - free - shared - buffers - cache);
- free — свободная память;
- shared — память под tmpfs и shmget/mmap; buffers — память, используемая для буферизации ввода/вывода;
- cache — файловый кеш;
- available — сколько памяти можно получить с учетом free и освобождения части cache.
Возникает вопрос: как связаны колонки shared и cache в выводе? Изначально я думал, что shared никак не пересекается с cache и used + free + shared + buffers + cache должны давать в сумме total. Но в представленном выше листинге видно, что это не так.