我正在尝试使用 perfmon,并且根据微软,“系统代码总字节数”计数器...
显示当前虚拟内存中可分页操作系统代码的大小(以字节为单位)。它是操作系统正在使用的物理内存量的度量,这些物理内存在未使用时可以写入磁盘。此值是通过将 Ntoskrnl.exe、Hal.dll、启动驱动程序和 Ntldr/osloader 加载的文件系统中的字节数相加而计算得出的。此计数器不包括必须保留在物理内存中且不能写入磁盘的代码。
但这不是矛盾的吗?它说它是“虚拟内存的大小”,而下一句又说它是“正在使用的物理内存量”。据我所知,虚拟内存存在并不意味着有任何物理内存映射到它,因为当物理内存不足时,内存可以分页到磁盘上的页面文件。因此虚拟内存的大小和物理内存的大小截然不同。
另一件让我困惑的事情是“该值是通过将 Ntoskrnl.exe、Hal.dll、启动驱动程序和 Ntldr/osloader 加载的文件系统中的字节相加而计算出来的”。那么,无论有多少文件被加载到虚拟/物理内存中,该数字难道不是一个常数吗?
有人能帮助我理解这个计数器的含义吗?
答案1
这可能是打字错误,因为相关计数器“系统代码驻留字节数”包括描述“显示当前物理内存中操作系统代码的大小(以字节为单位),这些代码在不使用时可以写入磁盘。” 进一步解释说:“该值是内存\系统代码总字节数的组成部分,其中还包括磁盘上的操作系统代码。”
因此,“系统代码总字节数”是虚拟内存中的总字节数,包括常驻(在物理内存中)和非常驻(在磁盘上)。
关于第二个问题:“系统代码总字节数”的值可能确实相当稳定,但“系统代码驻留字节数”可能不是。总字节数有助于计算驻留/非常驻字节的百分比。