当我运行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共享内存(179 G)+缓存内存(190 G)如何超过总内存(251 G)?内存是否可以同时计算为缓存内存和共享内存?
发布于 2018-11-29 15:44:45
所有shared内存也被计算为cached。
shared内存是在内部使用tmpfs实现的。tmpfs是作为页面缓存的薄包装实现的,只是没有任何后备存储(除了tmpfs是可交换的)。
man free没有解释这一点。至少在我的系统上(由procps提供,最后更新2016-06-03)。抱歉的。所有man free告诉您的是,cache是从/proc/meminfo中的Cached中提取的。如果您阅读man proc (从手册页中,更新了2017-09-15),它有meminfo文件中字段的文档,但是它仍然没有通知您Cached包含Shmem。
你可以通过一个实验看到这一点。当您拥有free内存(而不是available)时,您可以在tmpfs中创建一个文件,例如:
dd bs=1M count=100 < /dev/zero > /dev/shm/test.tmp其结果是,shared和cached在free -m中的数字都增加了100。
如果您只有available内存,并且没有足够的free内存来正确地测试这一点,则可以通过运行echo 1 | sudo tee /proc/sys/vm/drop_caches尽可能多地删除页面缓存来创建free内存。当然,丢弃页面缓存可能会对性能造成很大影响。不要在真正的服务器上这样做:-)。
https://unix.stackexchange.com/questions/484901
复制相似问题