我目前正致力于优化大型程序的内存管理。对于一些pupose,我想将页面缓存放在我的主内存中。
我使用互联网广泛建议的sync && echo 3 > /proc/sys/vm/drop_caches
,但它不会将缓存降低到程序启动之前的水平。这意味着程序启动后主内存中有一些无法使用的缓存。
但不是echo 3
意味着缓存内存中的免费pagecache,dentries和inode ?是否还有其他类型的缓存无法通过此命令释放?
答案 0 :(得分:0)
在发出drop cache之前和之后收集cat / proc / vmstat的输出。
它将提供nr_inactive_file,nr_active_file,nr_file_pages,nr_isolated_file。如果drop cache工作,则总共大于4应该小于发出drop cache之前。
答案 1 :(得分:0)
是的,有些类型的缓存无法删除。例如,tmpfs
文件系统存储在页面缓存中。但是这些在使用时无法冲洗。通过使用free
命令并检查available
列,您可以更好地了解实际可用的内存量。您会注意到可用内存小于可用+缓冲区+缓存。有时要小得多。
有关使用缓存的tmpfs
的更多信息,请参见this answer。