chu*_*rnd 30 windows pagefile swap
我正在使用 Process Explorer 来监视我的 Windows 服务器,同时它会重建一些数据。它主要是一个 CPU 密集型进程,但我想确保它没有交换。如何判断它是否正在使用 Process Explorer?我最初的猜测是在 System Information 窗口中,它是 Paging File Write Delta。是的?不?我是个白痴?
*截图不是服务器的...只是一个例子。
替代文字 http://www.malwareinfo.org/bootcamp/img/ProcessExplorer2.jpg
Jim*_*m B 35
“页面输入/秒是要观察的计数器,但您不必担心它会“交换”,因为 Windows 不像 *nixes 那样使用页面文件。
首先你要明白windows页面进不出。我将引用Eric Lipperts 博客文章(略有编辑)的相关部分,因为我自己说得再好不过了:
“RAM 可以被视为仅仅是一种性能优化。访问 RAM 中的数据,其中信息存储在以接近光速传播的电场中,比访问磁盘上的数据要快得多,其中信息存储在巨大而沉重的空间中黑色金属分子
操作系统会跟踪哪些进程最常访问的存储页面,并将它们复制到 RAM 中,以提高速度。当进程访问当前未缓存在 RAM 中的页面对应的指针时,操作系统会发生“页面错误”,转到磁盘,并将页面从磁盘复制到 RAM,从而做出合理的假设它很快就会被再次访问。
操作系统在共享只读资源方面也非常聪明。如果两个进程都从同一个 DLL 加载同一页代码,则操作系统可以在两个进程之间共享 RAM 缓存。由于代码可能不会被任一进程更改,因此通过共享来保存 RAM 的重复页面是完全明智的。
但即使有巧妙的共享,最终这个缓存系统也会耗尽 RAM。当这种情况发生时,操作系统会猜测哪些页面最不可能很快再次被访问,如果它们发生变化,将它们写到磁盘,并释放该 RAM 以读取更有可能再次访问的内容很快。
当操作系统猜测错误时,或者更有可能的是,当没有足够的 RAM 来存储所有正在运行的进程中的所有频繁访问的页面时,机器就会开始“颠簸”。操作系统将所有时间都花在写入和读取昂贵的磁盘存储上,磁盘持续运行,而您没有完成任何工作。
这也意味着“内存不足”很少会导致“内存不足”错误。它不是错误,而是导致性能不佳,因为存储实际上在磁盘上这一事实的全部成本突然变得相关。
另一种看待这个问题的方式是,你的程序消耗的虚拟内存总量实际上与其性能没有太大关系。相关的不是消耗的虚拟内存总量,而是 (1) 有多少内存不与其他进程共享,(2) 常用页面的“工作集”有多大,以及 ( 3) 所有活动进程的工作集是否大于可用 RAM。
到现在为止,应该清楚为什么“内存不足”错误通常与您拥有多少物理内存,甚至有多少可用存储无关。它几乎总是与地址空间有关,它在 32 位 Windows 上相对较小且容易碎片化。”
补充几点:
有关 Windows 中内存管理如何工作的完整图片,请参阅
如果您认为自己有内存问题,我首先建议您观看有关Windows 内存故障排除的演示文稿
这里有一个很好的解释,说明为什么有时你会因为内存碎片而“内存不足”:
更新:
Windows 10 在内存方面做了一些不同的事情,随着时间的推移,你会看到一个名为“系统和压缩内存”的进程,Windows 10 将一个“压缩存储”添加到分页列表中。这个 ram 是系统拥有的 USER 内存(通常系统只有内核内存)这个内存被压缩到位,平均减少到大约 30%。这允许将更多页面存储在内存中(对于那些进行数学运算的人来说,这是多出 70% 的空间)请注意,如果内存仍然有压力,则可以将压缩存储(用户模式系统进程空间)中的页面放在修改后的内存中列表(压缩)然后可以写入物理页面文件。系统会看到它们来自系统用户模式空间并被压缩,并且不会尝试将它们放回存储中。因此,在 Windows 10 系统上,系统可能看起来像是在吸入 ram,但实际上它只是想提高使用 ram 的效率。Mac 用户自 2013 年以来一直在使用类似的功能,而较新版本的 Linux 内核采用了内存压缩版本。这种节省内存的方法不仅更好,而且在其他操作系统中已经很普遍。
是的,分页增量会给您实时指示服务器分页(或“交换”)的程度,但仅限于那一刻。为了更仔细地观察并查看历史视图,我建议使用性能监视器 ( perfmon.exe )来绘制或记录这些增量(以及可能有助于将特定事件或活动与峰值相关联的任何其他感兴趣的性能计数器)分页活动)。
性能监视器 (perfmon) 是您的朋友。您正在寻找硬页面错误(即,当满足请求所需的内存页面必须从磁盘读取时的页面错误),因此监视硬页面错误和软页面错误是次优的。
使用 perfmon 观察“Memory”对象中的“Pages Input / sec”计数器,以了解发生了多少硬页面错误。