如何减少inode和dentry的缓存以尽量避免OOM

=Start=

缘由:

在服务器上执行某个find操作时,导致内存占用升高,业务进程的内存占用也持续升高且恢复缓慢,初步排查看上去像是因为proc_inode_cache的占用升高导致。

正文:

参考解答:

通过学习 [Linux Used内存到底哪里去了? | http://blog.yufeng.info/archives/2456] 了解到「内存的去向主要有3个:1.进程消耗;2.slab消耗;3.pagetable消耗。」

struct page是系统boot的时候就会根据内存大小算出来分配出去的,18内核是1.56%左右,32内核由于cgroup的原因会在2.3%

查看slab使用情况的方法
$ slabtop
[OR]
$ cat /proc/slabinfo |awk '{print $1,$3*$4/1024,"KB"}' | sort -k2 -n | tail 

&

比较危险的做法
echo 1 > /proc/sys/vm/drop_caches  # free pagecache
     [OR]
echo 2 > /proc/sys/vm/drop_caches  # free dentries and inodes
     [OR]
echo 3 > /proc/sys/vm/drop_caches  # free pagecache, dentries and inodes
sync  # forces the dump to be destructive

&

温和一点的做法
echo 300 > /proc/sys/vm/vfs_cache_pressure  # Increasing vfs_cache_pressure beyond 100 causes the kernel to prefer to reclaim dentries and inodes
参考链接:

=END=

声明: 除非注明,CrazyOf.me文章均为原创,转载请以链接形式标明本文地址,谢谢!
https://crazyof.me/blog/archives/3238.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注