首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >缓存内存和共享内存之和超过总内存

缓存内存和共享内存之和超过总内存
EN

Unix & Linux用户
提问于 2018-11-29 12:28:38
回答 1查看 1.4K关注 0票数 4

当我运行free -h时,我得到:

代码语言:javascript
复制
             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)?内存是否可以同时计算为缓存内存和共享内存?

EN

回答 1

Unix & Linux用户

发布于 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中创建一个文件,例如:

代码语言:javascript
复制
dd bs=1M count=100 < /dev/zero > /dev/shm/test.tmp

其结果是,sharedcachedfree -m中的数字都增加了100。

如果您只有available内存,并且没有足够的free内存来正确地测试这一点,则可以通过运行echo 1 | sudo tee /proc/sys/vm/drop_caches尽可能多地删除页面缓存来创建free内存。当然,丢弃页面缓存可能会对性能造成很大影响。不要在真正的服务器上这样做:-)。

票数 8
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/484901

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档