0
点赞
收藏
分享

微信扫一扫

内核机制引起Page Cache被回收而产生的业务性能下降

内存紧张时,会触发内存回收,内存回收会尝试回收reclaimable(可被回收的)内存,这部分内存既包含Page Cache又包含reclaimable kernel memory(比如slab):

内核机制引起Page Cache被回收而产生的业务性能下降_用户线程

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被释放后,能通过观察来发现是否因为该事件导致。

举报

相关推荐

0 条评论