原文:http://www.cnblogs.com/tiwlin/archive/2011/12/15/2289234.html
在测试中内存的缺少会造成频繁的页错误,导致系统不停在磁盘和内存中交换数据,有可能表现出IO瓶颈的现象,实则内存不足。在页错误中,有分为硬件错误和 软件错误,硬件错误是指程序需要的数据不在内存中需要从硬盘读取,软件错误是指数据还在内存的缓存中但已不再程序的驻留内存里,需要从内存的其他地方读取。访问硬盘比内存要慢几个数量级,所以当系统出现很多硬件页错误时候,系统就会慢的很多,成为系统产生抖动。
如何发现硬件页错误呢?通过在性能监视器里监控一下指标:
Memory\Pages/sec, Process(All_process)\Working Set, Memory\Pages Input/sec
Memory\Pages Output/sec
同时可以通过一下计数器看到内存和磁盘之间的频繁交换:
Memory\Page Reads/sec, PhysicalDisk\Disk Reads/sec,
PhysicalDisk\Avg.Disk Read Bytes/sec
其中,Pages/sec是指由于硬件页错误而引起的页交换数量等于Pages Input/sec和Pages Output/sec的总和。Page Faults/sec是页错误的数量包括硬件的和软件的。
因此总结下来,当Pages/sec大于10的时候就表明系统存在抖动(thrashing),当Available Bytes小于4MB时就说明系统内存不足,Committed Bytes的数值明显大于内存总量的时候,系统就应该增加内存。
有一点值得注意的是,如果某个程序连续的读取内存映像文件(Memory Mapping file)的时候也会造成Pages/sec变的很大,但此时不能认定系统出现抖动,我们还要参考其他数值来确定是否内存出现瓶颈。