我试图将 的输出free
与 的输出进行比较sar -r
:
# sar -r
12:00:01 AM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit
12:10:01 AM 629756 65293976 99.04 586536 60321636 5094176 7.49
# free
total used free shared buffers cached
Mem: 65923732 9120348 56803384 0 403628 5789524
-/+ buffers/cache: 2927196 62996536
Swap: 2097144 0 2097144
free
在开头的行中,Mem:
很明显我们有以下内容sar
:总kbmem,克伯梅穆塞德,KBmemfree,???,kb缓冲区,KB缓存。
在开始的行上-/+
:???,???
我标记的值的名称是什么????这就是kbcommit
价值吗?我读过了Linux 吃了我的内存这确实解释了数字的含义,但没有解释它们的名称。另外,免费联机帮助页也没有给出名字。
答案1
名称实际上匹配,但sar
不free
显示完全相同的字段。
你的第一个???
不是,它是共享内存,与fromkbcommit
相同。Shmem
/proc/meminfo
第二行显示如果缓冲区和缓存使用的内存被视为空闲而不是已使用的内存使用情况。
$ free
total used free shared buffers cached
Mem: MemTotal kbmemused kbmemfree Shmem kbbuffers kbcached
-/+ buffers/cache: USED2 FREE2
Swap: 0 0 0
- MemTotal = 来自 /proc/meminfo 的 MemTotal
- Shmem = 来自 /proc/meminfo 的 Shmem
- USED2 = kbmemused - kbbuffers - kbcached
- FREE2 = kbmemfree + kbbuffers + kbcached
答案2
实际上,正如您的输出可能表明的那样,sar
skbmemused
可能是不是与 中的第二个“Mem:”字段相同free
。从man sar
:
克伯梅穆塞德 已用内存量(以千字节为单位)。这没有考虑内核本身使用的内存。
假设未考虑的部分是:
kb缓冲区 用作缓冲区的内存量由内核以千字节为单位。
KB缓存 用于缓存数据的内存量由内核以千字节为单位。
希望这不仅仅是一个误导性文档的案例;我不是sar
用户。无论如何,最上面一行free
确实包括缓冲区和高速缓存。第二行(+/- buffers/cache
)没有。请注意 403628 ( buffers
) + 5789524 ( cached
) = 6193152 和 9120348 ( Mem: used
) - 6193152 = 2927196 ( +/- buffers/cache: used
)。
他们的名字
你可以随意称呼他们。来自的名称sar
是任意的。如果您将输出的值称为free
“使用的内存减去缓存”,那么显然您指的是第二行的第一个数字,依此类推。