我们的开发箱之一已经出现了一个问题,其中性能偶尔会在地板上下降。 发生这种情况时,您可以听到硬盘驱动器抖动,但我不知道是什么原因造成的。
这种情况发生在高磁盘访问期间(读/写多GB文件),但不是每一次,也不是整个磁盘访问期间。 这些文件也被严格地进行碎片整理,以防止似乎正在发生的那种“寻找颠簸”。
我怀疑问题在于系统的防病毒或者我不知道的一些磁盘索引服务(AFAIK,没有任何运行,但是…)。 不幸的是,我的绩效监督员福非常非常弱(好吧,几乎不存在),我不知道如何确认/反驳我的怀疑或找出真正的罪魁祸首。
更新:
Process Explorerfind了我的罪魁祸首 – Java快速入门和Windowssearch服务。 closures前者对绩效有明显的影响,closures后者有巨大的影响(尽pipe没有任何档案可供使用)。 两者的执行速度都是其他进程的5-20倍。
感谢所有的帮助!
下载Process Explorer(sysinternals / microsoft)。
在查看下,select列,处理性能,select例如IO写入字节,IO读取字节。
您可以点击这些列进行sorting。
SysInternals有几个工具可以帮助这里。 他们的PerfMon工具将给你(详尽的)什么访问什么的细节。 如果真的是一个AV工具进行扫描,它应该显示在那里赫然显而易见。 如果它是一个Windows后台任务,事情会变得复杂一些,但是那些访问也会出现在那里。 即使哪个服务负责也不太明显。
我已经成功地使用Sysinternals FileMon来找出哪些程序正在做很多的I / O和哪些文件。 例如,当我切换到随机写入性能较差的SSD(4 IOPS,OCZ Core v1)时,FileMon告诉我哪些程序正在写入,我可以将这些文件从SSD移动到另一个HDD。 这也帮助我发现上次访问时间戳的更新会导致性能下降(当Locate32每天一次索引我所有的磁盘时),所以我能够禁用上次访问时间戳。
要validation磁盘I / O问题,您需要从性能监视器中监视每个驱动器上的逻辑磁盘/当前磁盘队列长度开始。 除非您有多个进程访问磁盘,否则通常应该保持为零。 过多的I / O或磁盘性能不佳会增加队列长度。
一旦您validation了I / O问题,请使用FileMon或Process Monitor for Microsoft( Sysinternals )之类的东西来查看导致该活动的进程。
如果你没有看到与I / O对应的进程,那么它可能是页面文件/内存问题。 回到性能监视器并添加每秒的内存/页数。 这将显示一个进程必须进入磁盘的频率,以将内存分页到RAM中。 如果这是保持在零以上,那么你需要更多的内存或应用程序有内存泄漏。 要查找内存泄漏,请使用每秒进程/页数来查看哪个进程正在强制页面。
您可以configurationPerfmon以在满足某些阈值时触发命令,因此DLuxbuild议监视当前磁盘队列长度,如果命中3或4,则设置为触发batch file。 batch file可能会触发一个实用程序,如filemon,它可以logging系统所访问的所有文件,并可以更好地了解系统正在访问的内容。
一个可能的罪魁祸首可能是过度的页面文件的使用。 您可以使用PerfMon来跟踪每秒的页面错误。 如果这些上升,当你的performance下降,这是你的答案。