我观察到Linux和Solaris页面缓存的行为存在以下差异。
1。当我们在solaris平台上执行缓冲写操作时-pagecache(缓冲写操作)使用了空闲内存,并且如果其他应用程序没有内存需求,它将消耗几乎所有可用内存。
上述场景的再现:
操作系统/平台:Solaris 11(5.11)
总物理内存:116GB
文件系统:ZFS。
步骤:
-bash-4.4# mkfile 110g file //this will create 'file' filled with 0s size = 110g
如果我使用“ top”检查可用内存,它将开始减少并达到几乎几个KB。
从echo "::memstat" | mdb -k
中,我看到“ pagecache”列占用了大部分内存。
根据OS设计,以上行为似乎是正常的。因为:
1)当时没有其他应用程序的内存需求。
2)由于页面缓存中存在数据,因此对文件的后续读取将更快。
如果我生成一个需要内存的应用程序(>而不是当前的可用内存),则可以通过从页面缓存(刷新到磁盘的页面)中窃取页面来满足请求。
我的问题是-为什么在Linux上未观察到此行为,我在Linux上尝试了上述Scenerio(其他配置相同)。我没有看到空闲内存大量消耗。 Linux的页面缓存与Sol的页面缓存有何不同?