我正在对Windows服务器进行基准测试 - 为了论证,Web应用程序有一个名为parseText()的方法。
运行单个实例的时间不到10毫秒,但是当我将其同步到10个请求时,事情会急剧减慢。每个请求说1秒。
CPU没有固定,并且有足够的可用内存。所以我对瓶颈是什么感到困惑。
有人认为内存延迟或总线带宽可能是一个问题,但我不确定哪个perfmon计数器最能表明这样的事情。
有人可以建议一些柜台检查可能会对此事有所了解吗?
答案 0 :(得分:1)
我的第一个猜测是磁盘IO或互斥。
对于磁盘,尝试添加物理磁盘,读取字节数/秒和写入字节数/秒以及读取/秒写入/秒(即读取和写入的总字节数和实际操作数)确保它们没有尖峰。如果你热衷的话,还可以添加队列长度。您正在寻找像10Mb /秒或许多小IO的大转变。
对于互斥体,这可能是内存分配的副作用(非常频繁的内存分配可能导致这种情况),尝试添加“系统”和上下文切换/秒以及系统调用/秒。这些从一般负载反弹一点,所以首先感受一下然后看看会发生什么。
如果您认为它是由内存带宽引起的(即耗尽FSB),那么我认为perfmon不能测量它,您需要切换到更像vtune的东西,这可能是也可能不是你的选择。耗尽主存储器带宽的一个例子是分配大量存储器然后将每个字节初始化为某个值的程序,并且这样做很多。如果您认为这是您的问题,您可能需要使用代码分析器和其他工具来隔离例程,但如果您不在程序之外并且只是观察,那么这很难。