当我运行时free -h
,我得到:
total used free shared buffers cached
Mem: 251G 208G 43G 179G 144M 190G
-/+ buffers/cache: 17G 233G
Swap: 5.6G 5.6G 1.1M
Run Code Online (Sandbox Code Playgroud)
共享内存(179G)+缓存内存(190G)如何超过总内存(251G)?内存可以算作缓存内存和共享内存吗?
所有shared
内存也算作cached
。
shared
内存是使用tmpfs
内部实现的。 tmpfs
被实现为页面缓存的瘦包装器,只是没有任何后备存储(除了tmpfs
可交换的)。
man free
不解释这一点。至少在我的系统上(由 procps-ng 提供,上次更新时间为 2016-06-03)。对不起。所有man free
告诉你的cache
是取自Cached
in /proc/meminfo
。如果您阅读man proc
(从手册页,更新于 2017-09-15),它有文件中字段的meminfo
文档,但它仍然无法通知您Cached
包含Shmem
.
你可以通过实验看到这一点。当您有free
内存(没有available
)时,您可以在 tmpfs 中创建一个文件,例如:
dd bs=1M count=100 < /dev/zero > /dev/shm/test.tmp
Run Code Online (Sandbox Code Playgroud)
这样做的结果是shared
和 的cached
数字都free -m
增加了 100。
如果您只有available
内存,并且没有足够的free
内存来正确测试,您可以free
通过运行echo 1 | sudo tee /proc/sys/vm/drop_caches
. 当然,删除页面缓存可能对性能非常不利。不要在真正的服务器上这样做:-)。
归档时间: |
|
查看次数: |
861 次 |
最近记录: |