Performance 在cpu未固定且内存充足的情况下进行性能调整

Performance 在cpu未固定且内存充足的情况下进行性能调整,performance,perfmon,Performance,Perfmon,我正在对一个windows server-web应用程序进行基准测试,该应用程序有一个名为parseText()的方法 运行一个实例所需时间不到10毫秒,但是当我将其提升到10个同时请求时,速度会急剧下降。每请求一秒钟 CPU没有固定,内存充足。所以我不知道瓶颈是什么 一种想法是内存延迟或总线带宽可能是一个问题,但我不确定哪种perfmon计数器最能指示这样的情况 有人能建议一些柜台来检查一下,这可能会对这件事有所帮助吗 我的第一个猜测是磁盘IO或互斥锁 对于磁盘,尝试添加物理磁盘、读字节/秒、

我正在对一个windows server-web应用程序进行基准测试,该应用程序有一个名为parseText()的方法

运行一个实例所需时间不到10毫秒,但是当我将其提升到10个同时请求时,速度会急剧下降。每请求一秒钟

CPU没有固定,内存充足。所以我不知道瓶颈是什么

一种想法是内存延迟或总线带宽可能是一个问题,但我不确定哪种perfmon计数器最能指示这样的情况


有人能建议一些柜台来检查一下,这可能会对这件事有所帮助吗

我的第一个猜测是磁盘IO或互斥锁

对于磁盘,尝试添加物理磁盘、读字节/秒、写字节/秒以及读/秒写/秒(即读和写的总字节数和实际io操作计数),确保它们没有尖峰。如果您愿意,还可以增加队列长度。您正在寻找10Mb/秒或大量小型IOs这样的大转变

对于Mutex,这可能是内存分配的副作用(非常频繁的内存分配可能会导致这种情况),请尝试每秒添加“系统”和上下文开关,也可能每秒添加系统调用。这些会从一般负载中反弹一点,所以先感受一下,然后看看会发生什么


如果您认为这是由内存带宽(即耗尽FSB)引起的,那么我认为perfmon无法测量这一点,您需要切换到更像vtune的方式,这可能是您的选择,也可能不是。耗尽主内存带宽的一个例子是,一个程序分配大量内存,然后将每个字节初始化为某个值,并执行此操作。如果您认为这是您的问题,您可能需要使用代码探查器和其他类似工具来隔离例程,但如果您不在程序中,只是观察,这很难做到。

谢谢,是的,上下文切换/秒和系统调用/秒似乎遇到了问题。我可以增加我正在进行负载测试的线程数量,并且每次我超过一个特定的计数时,上下文切换/秒和系统调用/秒跳转和性能。水泄不通。所以我猜互斥最有可能是根本原因。。奇怪的是,它撞到了这堵墙,然后在上下文切换中进行了如此巨大的跳跃。