所有共享内存也计为缓存.
共享内存是在内部使用tmpfs实现的. tmpfs实现为页面缓存的瘦包装器,只是没有任何后备存储(除了tmpfs是可交换的).
男人自由不解释这个.至少在我的系统上(由procps-ng提供,最后更新2016-06-03).抱歉.所有man free告诉你,缓存是从/ proc / meminfo中的缓存中获取的.如果您阅读man proc(来自man-pages,更新时间为2017-09-15),它有meminfo文件中字段的文档,但仍然无法通知您Cached包含Shmem.
您可以通过实验看到这一点.虽然您有可用内存(不可用),但您可以在tmpfs中创建文件,例如:
dd bs=1M count=100 < /dev/zero > /dev/shm/test.tmp
结果是free -m中的共享和缓存数字都增加了100.
如果你只有可用内存,并且没有足够的可用内存来正确测试,你可以通过运行echo 1来尽可能多地减少页面缓存来创建空闲内存. sudo tee / proc / sys / vm / drop_caches.当然,丢弃页面缓存可能对性能非常不利.不要在真实的服务器上执行此操作:-).