我对free的输出的理解是缓冲区/caching值是可用内存的真实反映。
我已经分配了512M到PHP APC操作码caching,虽然它利用了所有这些,但是免费的输出仍然是一样的。
我知道问题在于我对内存pipe理的理解(或缺乏)。 有人能给我一些这方面的见解吗?
更新:
我对记忆的理解来自我所做的集会学习。 我不知道的是(至less我认为)Linux内核如何pipe理内存。
自从发布这个问题我读了更多,我的理解是,在最简单的层面,他们是他们的名字build议 – caching是内核镜像文件到RAM更快的访问和缓冲区是个人使用的瞬态信息位stream程。
APC运行(512M充分利用):
total used free shared buffers cached Mem: 1498 1452 46 0 36 796 -/+ buffers/cache: 619 879
在APC禁用后重新启动PHP FPM后立即执行:
total used free shared buffers cached Mem: 1498 776 721 0 36 285 -/+ buffers/cache: 454 1043
忽略交换空间,因为它保持不变:
第一行对我有意义,内存从APC(512M)和PHP工作者(721-46-512 = 163M)中解脱出来。 分配给caching的内存不再有APC处理,减less了796-285 =〜512M(或者这只是一个巧合?)。
这是令我困惑的第二条线。 这些数字是内核为缓冲区保留了多less,其余的分配给caching,即使目前没有实际使用。 这是有道理的,因为它的下降量与我使用PHP相同,反映了PHP的工作。
如果我是正确的,那么会出现另一个问题。 第一行的“缓冲区”反映了什么?
total used free shared buffers cached Mem: 1498 776 721 0 36 285 -/+ buffers/cache: 454 1043
第二行454 =使用(776) – (缓冲区(36)+caching(285))
1043 =免费(721)+(buffres(36)+caching(285))
值将近似。
什么是缓冲区?
https://stackoverflow.com/questions/6345020/linux-memory-buffer-vs-cache