如何解释 Windows XP 的虚拟内存信息 - 10 个数字和 1 个图表

如何解释 Windows XP 的虚拟内存信息 - 10 个数字和 1 个图表

如何解释 Windows XP 虚拟内存信息中的数字?我实际上只对以下内容感兴趣:

1)“未动用”的物理 RAM 的总大小是多少,以便系统根本不会进行交换

为了实验,我使用 Windows 7 设置了一个虚拟机,运行 Windows XP,内存为 768MB。 为了简单起见,虚拟内存设置为“0”(不使用任何页面文件)。 以下是系统信息和图表:

替代文本

那么 145MB(大约)是“未动过的”物理 RAM 吗?实际上,当这个数字约为 120MB 时,XP 会在任务栏弹出一个小气球,提示“虚拟内存不足”。我相信我运行的小应用程序应该只要求几 MB。所以 120MB 应该足够了。所以我想知道这是为什么。

那么其他数字怎么样?

785904
145432 (listing here to make a complete list)
128436

29312
23620
5692

25
740252
735132

582MB (the bar for PF Usage)

and the horizontal line for "Page File Usage History"

现在,由于虚拟内存设置为“不使用任何页面文件”,那么 PF 使用率不应该是 0 吗?那么“页面文件使用历史记录”的水平线应该始终保持在 0 吗?谢谢。

更新: 假设页面文件的大小固定为256MB,并且信息也如上图所示,那么这10个数字该如何解释呢?

在这种情况下,如果“可用”空间缓慢下降,现在仍然是 120MB,那么这应该意味着页面文件根本没有被使用吗?

答案1

如何解读任务管理器的“性能”选项卡?

首先,我们来谈谈数字。它们分为 4 组,分别标记为总计、提交费用、物理内存和内核内存。

总计:告诉您操作系统中分配了多少句柄、进程和线程。这些数字是简单的计数器,但这些词语很难解释,因为它们是基本的编程概念,而基本概念总是很难解释(尝试解释动词“to be”)。

句柄:内核为程序提供“对象”,例如文件、共享内存部分、注册表项等。程序统一通过句柄来操作对象,句柄是与对象的临时连接。句柄不是对象;例如,如果一个文件同时被打开用于 17 种不同的用途,那么它将有 17 个不同的句柄与之连接。

流程:进程是正在执行的程序的一个实例。如果您运行 Explorer 3 次,那么将有 3 个进程在运行。发现区别了吗?程序是持久的东西 - 您昨天使用的程序就是您今天使用的程序(除非您做了什么!)。进程来来去去。

主题:进程中实际运行的内容。每个进程由一个或多个线程组成,由程序员决定。线程以或多或少独立的方式执行。如果您有足够的处理器,它们实际上可以同时执行。否则,它们只是看起来同时运行。

这些数字都没有“正确”的值。大多数情况下,如果它们开始无限制地增加,那么就该怀疑出问题了。例如,程序可能会因无法关闭文件而导致“句柄泄漏”(尽管如果您终止该进程,则操作系统将关闭其所有句柄;这不是 DOS)。

承担费用:这测量的是“已提交的虚拟内存”的数量(参见虚拟机常见问题解答系统中的虚拟内存(用于后台)是指进程请求的所有内存,这些内存不受某些命名文件的支持(例如,程序指令存储在 program.exe 文件中,因此不计入提交费用)。一种看待这种情况的方式是,系统对虚拟内存有一定的预算,每个程序请求都从该预算中扣除。

全部的提交费用是当前正在使用的值;限制是页面文件大小与原则上可供程序使用的物理内存的总和(即不计算所有永久驻留的部分)。

顶峰只是自启动以来记录的最高值。

物理内存:这很简单。总数是操作系统检测到的内存量,可用量几乎就是您所期望的。所谓的系统缓存大小实际上是系统“工作集”的大小(即系统进程 pid 4 使用的物理内存量,该进程是连接到内核并代表内核和设备驱动程序执行线程的进程)。系统文件缓存暂时保存文件内容,以加快系统性能,并且可能是系统进程中最大的内存消耗者,因此这是一个合理的近似值。

内核内存:告诉您内核和设备驱动程序使用了多少内存。我相信(但我可能错了)这里的数字是虚拟内存计数。对于非分页内存,没有区别:虚拟内存始终驻留在物理内存中。对于分页内存,大小是虚拟的;物理内存占用可能更少。

现在,图表和仪表。尽管它们的标题不同,PF 使用情况页面文件使用历史记录显示不测量页面文件使用情况。它们测量总提交费用。总提交计数与页面文件使用情况有点相关;它是如果所有可能写入页面文件的内容实际上都写入了页面文件,您将使用多少页面文件。在 Windows 2000 上,相同的显示被称为内存使用情况,这让人们认为它们测量的是物理内存使用情况。这也不对。

无论如何,您对一个自称为“任务管理器”的程序有什么期望?操作系统内核中没有所谓的“任务” - 操作系统有“进程”和“线程”。DOS 有“任务”。英特尔硬件有“任务”结构,但操作系统不使用它们,因为它自己执行速度更快。(最近,出现了一个名为“任务调度程序”的用户模式程序,但内核对这些任务一无所知,此外,这是“任务”的完全不同的用法)。

CPU使用率CPU 使用率历史记录显示确实可以测量 CPU 使用率!也就是说,它们会计算除系统空闲循环中非中断级别的 CPU 使用率之外的所有 CPU 使用率。因此,它可以很好地反映出您的系统实际上有多繁忙。

在多处理器系统上,我认为总数是根据一个 CPU 的功率给出的(它们总是相同的 CPU)。因此,双 CPU 系统有“200%”可用。如果您愿意,您可以为每个 CPU 显示一个图表。如果有人愿意给我一个双 CPU 系统,我会验证这些说法。

通常,绿线表示总 CPU 使用率。您可以随意添加一条红线,显示内核模式所用的时间;这有时对于问题隔离很方便,或者可能只是为了看起来更美观。使用“查看”菜单中的“显示内核时间”。

底端状态行重复 CPU 使用、提交费用和进程总数。

来源

答案2

您将获得良好的注释和描述马克·鲁西诺维奇的博客文章
突破Windows的极限:手柄 以及其他 4 篇较早的帖子从那里链接。

  1. 物理内存
  2. 虚拟内存
  3. 分页池和非分页池
  4. 进程和线程

马克写的很好系统内部实用程序,目前正在与微软合作。

答案3

简短回答:经过一整天(或一周)的实际(甚至高于平均)工作量后,查看峰值承诺费用。这是“在给定时刻使用最多的‘内存’”。四舍五入到下一个半 GB,这就是您应该拥有的 RAM 大小。如果超过 3GB,请考虑升级到 64 位操作系统。

然后,如果您愿意,可以留出 1GB 左右的交换空间用于“优雅降级”(为什么所有东西都运行得这么慢,硬盘灯闪烁得这么厉害?)。所有关于 1.5X 或 2X RAM 的建议(大部分)都是废话。

该截图很可疑,因为框内显示“总计 25”,而右下角的状态栏中却显示“596564K”,与图表中的“582MB”相符。

相关内容