Gus*_*uss 28 linux kernel memory-management linux-kernel
我想强制Linux内核在缓存开始占用太多内存后为应用程序分配更多内存(可以通过'free'的输出看到).
我跑了
sudo sync; sudo sysctl -w vm.drop_caches=3; free
Run Code Online (Sandbox Code Playgroud)
(为了释放光盘dentry/inode缓存和页面缓存),我发现只有大约一半的已用缓存被释放 - 其余的仍然存在.如何判断占用缓存的其余部分并强制释放?
Tim*_*ost 17
您可能希望增加vfs_cache_pressure以及设置swappiness为0.
这样做会使内核更快地回收缓存,同时在决定被调出的内容时给予进程相同或更多的优势.
你可能只是想这样做,如果你在乎过程做很少的磁盘I/O.
如果网络I/O绑定进程必须交换来处理请求,那就是一个问题,真正的解决方案是将它放在竞争力较弱的服务器上.
使用默认swappiness设置,内核几乎总是倾向于将FS相关缓存保留在实内存中.
因此,如果您增加缓存压力,请务必同等调整swappiness.
hil*_*llu 16
/ proc/meminfo的内容告诉你内核使用RAM的内容.
您可以使用/ proc/sys/vm/vfs_cache_pressure强制内核更懒惰地或急切地回收用于与文件系统相关的缓存的内存.
请注意,如果您的应用程序很少或没有磁盘I/O,那么您的应用程序可能只会受益于调整此参数.
Ste*_*nne 15
您可能会发现John Nilsson对我的问题的回答对于清除缓存很有用,以便测试它是否与您的问题有关:
sync && echo 1 > /proc/sys/vm/drop_caches
虽然我猜测唯一真正的区别是1 vs 3
| 归档时间: |
|
| 查看次数: |
35193 次 |
| 最近记录: |