Я немного смущен о том, как числа памяти складывают в вершине.
Если я понял правильно, сумма "действительно" используемой памяти является общей - свободный - буферы - кэшируемый. В примере ниже этого был бы 14370248k - 75736k - 178892k - 10459552k = 3656068k, который составляет 25% общей памяти (3656068/14370248).
Снова, если я понял правильно, числа, показанные в RES и %MEM столбцах, показывают объем физической памяти, которую "действительно" использует процесс. Сумма значений RES просто httpd процессы составляет 7254 м, или 7428096k (7254*1024), который составляет 52% общей памяти (7428096/14370248). Сумма значений %MEM процессов httpd составляет 53%, достаточно близко.
Каким образом сводная часть показывает всего 25% используемой памяти, в то время как одни только httpd процессы утверждают, что использовали более чем 50% памяти? Что я пропускаю здесь?
top - 15:37:00 up 117 days, 18:27, 6 users, load average: 4.82, 4.44, 3.60
Tasks: 433 total, 4 running, 429 sleeping, 0 stopped, 0 zombie
Cpu(s): 59.6%us, 6.5%sy, 0.0%ni, 33.0%id, 0.1%wa, 0.0%hi, 0.8%si, 0.0%st
Mem: 14370248k total, 14294512k used, 75736k free, 178892k buffers
Swap: 8388600k total, 116k used, 8388484k free, 10459552k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3566 mysql 21 0 554m 60m 4576 S 74.6 0.4 11422:52 mysqld
23305 apache 15 0 327m 27m 3792 S 3.2 0.2 0:01.30 httpd
23474 apache 15 0 327m 27m 3800 S 3.2 0.2 0:01.09 httpd
...
Процессы httpd, вероятно, совместно используют некоторую память, потому что они разветвлены друг от друга. Из-за механизма копии на записи они все утверждают, что память как их собственная виртуальная память даже при том, что это только существует однажды в физической памяти.
В целом вывод памяти на Linux содержит различный bogosities этого вида. Я не попытался бы иметь слишком много смысла его. Полезно видеть, ведет ли процесс себя по-другому по сравнению с тем, как это должно; но числа не обязательно складывают.