578 字
3 分钟
什么是工作集和抖动?内存不足时为何系统变慢
程序在一段时间内通常集中访问一部分页面,这种局部性形成它的工作集。工作集可理解为给定时间窗口内近期访问过的页面集合;窗口大小和统计方法会影响估算结果。若系统为活跃任务保留的物理页框足以容纳其工作集,缺页率通常较低。
当所有活跃进程的工作集总需求明显超过可用物理内存,进程不断缺页,刚换出的页面很快又被访问,内核再换入它并换出别的页,形成抖动(thrashing)。此时 CPU 利用率可能下降,大量时间消耗在磁盘或存储 I/O 和页面回收上,用户感受到系统响应迟缓。它不同于偶尔一次缺页,也不同于 CPU 忙于有效计算。
操作系统可通过工作集模型、缺页频率反馈或回收策略调整驻留页面;压力过大时可降低并发度、暂停或换出部分进程,应用侧则可减少内存占用、控制缓存和并发任务数量。容器内存限制也可能让某个 cgroup 在全机仍有空闲内存时发生局部回收压力或 OOM。
不能把“Swap 被访问”直接等同于系统抖动。少量换页可以正常发生,文件缓存回收也不一定造成明显问题。要排查应观察缺页与换页速率、内存回收、I/O 等待、进程工作集和 cgroup 统计,而不是只看 Swap 使用量这一项。
常见追问
Q:工作集为什么重要?
A:它近似表示任务近期需要保持驻留才能高效运行的页面集合,可帮助解释内存分配与缺页率之间的关系。
Q:Swap 用量高就说明在抖动吗?
A:不说明。已换出的冷页面可能长期不访问;需要看持续换入换出、缺页和 I/O 等指标及实际延迟。
Q:如何缓解抖动?
A:减少并发工作集需求、增加可用内存、调整内存限制或降低同时运行的任务数;系统也可根据缺页和回收压力暂停/回收部分任务。
什么是工作集和抖动?内存不足时为何系统变慢
https://blog.xqcherry.top/posts/interview/operating-system/working-set-thrashing/ 目录