内核机制引起Page Cache被回收而产生的业务性能下降
Posted 公众号JavaEdge
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了内核机制引起Page Cache被回收而产生的业务性能下降相关的知识,希望对你有一定的参考价值。
内存紧张时,会触发内存回收,内存回收会尝试回收reclaimable(可被回收的)内存,这部分内存既包含Page Cache又包含reclaimable kernel memory(比如slab):
Reclaimer指回收者,可以是内核线程(包括kswapd)、用户线程。回收时,它会依次扫描pagecache page、slab page中有哪些可被回收:
- 若有,就尝试去回收
- 若无,就跳过
在扫描可回收page的过程中,回收者一开始扫描的较少,然后逐渐增加扫描比例,直至全部都扫完。这就是内存回收大致过程。
若inode被回收,则其对应Page Cache也都会被回收,所以若业务进程读取的文件对应的inode被回收,则该文件所有Page Cache都会被释放,这也易导致性能问题。
该行为能否观察?也通过/proc/vmstat观察:
$ grep inodesteal /proc/vmstat
pginodesteal 114341
kswapd_inodesteal 1291853
该行为对应事件为inodesteal,就是上面这俩事件,其中kswapd_inodesteal是指在kswapd回收的过程中,因为回收inode而释放的pagecache page个数;pginodesteal是指kswapd之外其他线程在回收过程中,因为回收inode而释放的pagecache page个数。所以你发现业务的Page Cache被释放后,能通过观察来发现是否因为该事件导致。
以上是关于内核机制引起Page Cache被回收而产生的业务性能下降的主要内容,如果未能解决你的问题,请参考以下文章