什么是工作集?

Por*_*rco 15 memory windows operating-system process

在阅读Windows研究内核的内存管理代码时,我对工作集的概念感到困惑.

Tom*_*eys 18

"工作集"是"当前算法正在使用的内存部分"的简写,由CPU恰好访问的内存部分决定.这对你来说是完全自动的.如果您正在处理数组并将结果存储在表中,则数组和表是您的工作集.

这是讨论的原因,因为CPU会自动将访问的内存存储在缓存中,靠近处理器.工作集是描述您想要存储的内存的好方法.如果它足够小,它可以全部适合缓存,你的算法将运行得非常快.在操作系统级别,内核必须告诉CPU每次访问新页面(通常是4k大小)时,应用程序在哪里找到物理内存(解析虚拟地址),所以你也要避免那么多的命中尽可能.

了解每个程序员应该了解的内存 - PDF用于算法性能与工作集大小的关系图(第23页左右)和许多其他有趣的信息.

基本上 - 编写代码以访问可能的最小内存(即类很小,而不是太多),并尝试确保在该内存的非常小的子集上运行紧密循环.


Dav*_*ave 6

粗略地说,工作集是活动使用的内存区域.http://en.wikipedia.org/wiki/Working_set


Cur*_*son 5

"工作集"是一个非正式术语,意思是应用程序或应用程序集"经常"(经常用于某些定义)访问的内存.应用程序还可以分配他们不经常访问的内存(每隔几十秒不超过一次,甚至可能不是每小时一次); 这将超出工作集.

一个例子可能是你有两个Firefox Windows,一个你几个小时没看过的最小化的Windows,以及你现在正在浏览的开放的一个.用于存储与打开窗口相关联的数据的存储器将位于工作集中; 用于存储与未打开的窗口相关联的数据以及几个小时未查看的数据的内存不在工作集中.

这主要用于讨论系统中是否有足够的RAM.如果您的工作集小于RAM,则可以舒适地工作,因为程序或程序经常访问的数据始终在内存中.如果您的工作集大于RAM,操作系统将不断地将页面交换到磁盘,以便腾出空间来交换应用程序想要访问的页面; 这些换出的页面,在工作集中,几乎会立即再次需要,这意味着你必须把其他页面写到磁盘上,它就像这样继续下去.这被称为"颠簸".

如果你不是在读或写很多文件,那么你的磁盘灯就会一直亮着,你的系统感觉非常慢,这是一个很好的迹象,表明你正在挣扎.