top 如何计算 Linux 上的内存数字?

top 如何计算 Linux 上的内存数字?

我对于内存数字如何累加有点困惑。

如果我理解正确的话,“真正”使用的内存量是全部的-自由的-緩衝器-缓存。在下面的例子中,该值为 14370248k - 75736k - 178892k - 10459552k = 3656068k,占总内存的 25% (3656068/14370248)。

再次,如果我理解正确的话,可再生能源%内存列显示进程“实际”使用的物理内存量。总和可再生能源仅 httpd 进程的值就为 7254m,即 7428096k (7254*1024),占总内存 (7428096/14370248) 的 52%。%内存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
...

答案1

httpd 进程可能共享一些内存,因为它们彼此分叉。由于写时复制机制,它们都声称该内存是自己的虚拟内存,尽管它在物理内存中只存在一次。

一般来说,Linux 上的内存输出包含各种此类虚假信息。我不会试图过多地理解它。查看进程的行为是否与应有的行为不同很有用;但数字不一定相加。

相关内容