swap什么时候触发或者如何计算swap_tendency?

swap什么时候触发或者如何计算swap_tendency?

我正在尝试使用 Redis 进行生产服务并尝试避免交换,这对性能不利。

我了解到交换是由 swap_tendency 触发的,这取决于

swap_tendency =mapped_ratio/2 + 交换度 + 痛苦

如何从/proc/meminfo我的监控脚本中获取mapped_ratio/distress?

或者有什么参数可以告诉我系统将要交换页面?

答案1

映射比率

mapped_ratio可以这样计算:

mapped ratio = (nr mapped * 100) / total memory;

来源:https://www.cs.columbia.edu/~smb/classes/s06-4118/l19.pdf

编号映射

该值nr_mapped可以从以下位置读取/proc/vmstat

$ grep nr_mapped /proc/vmstat
nr_mapped 47640

苦恼

根据这篇文章,标题为:Linux 内存 - 实施说明

“这是衡量虚拟机回收页面的难度的指标。每次虚拟机尝试回收内存时,它都会扫描每个区域中非活动列表的 1/n,以努力回收页面。每次遍历列表时,如果该区域中不活动的干净+空闲页面的数量未超过低水位线,则 n 减一。痛苦的测量值为 100 >> n”5

在研究许多文档时,听起来好像“遇险”是一个内核计数器,但事实并非如此。相反,它是在扫描每个内存区域时使用的值,随着内核扫描内存页帧以尝试回收它们,该值逐渐增加。对此的讨论超出了本问答的范围,但如果您对本书的“理解 Linux 内核”部分感到好奇,第17章:页框回收。当区域被扫描时,“distress”的值来自值“prev_priority”。

参考

相关内容