Windows 一个集群软件的病理行为诊断

Windows 一个集群软件的病理行为诊断,windows,performance,language-agnostic,cluster-computing,diagnostics,Windows,Performance,Language Agnostic,Cluster Computing,Diagnostics,我在一个小型集群上使用了一种负载平衡器,它能够在零持续时间请求(即工作节点立即满足的t.I.请求)上实现>2000rps。 但是,一旦请求停止为零持续时间并开始持续1毫秒,性能就会立即下降10倍以上。在两个方向上传输的数据是相同的,大小约为2kb。 这肯定与集群饱和或网络吞吐量无关,因为200rps的1ms请求是一个非常小的负载,网络是10Gbit。此外,负载平衡器和工作节点上的CPU负载仅为2-5%左右 我想知道这是否与操作系统调度器或操作系统网络堆栈的某些病态行为有关(t.I.对于非常短的交

我在一个小型集群上使用了一种负载平衡器,它能够在零持续时间请求(即工作节点立即满足的t.I.请求)上实现>2000rps。 但是,一旦请求停止为零持续时间并开始持续1毫秒,性能就会立即下降10倍以上。在两个方向上传输的数据是相同的,大小约为2kb。 这肯定与集群饱和或网络吞吐量无关,因为200rps的1ms请求是一个非常小的负载,网络是10Gbit。此外,负载平衡器和工作节点上的CPU负载仅为2-5%左右

我想知道这是否与操作系统调度器或操作系统网络堆栈的某些病态行为有关(t.I.对于非常短的交互有一些特殊情况)

我该如何诊断原因?看哪个计数器?使用什么工具或方法


(以防有人知道我特定问题的答案,我指的是MS HPC Server 2008 R2的“WCF Broker”,它通过Hyper-V在Windows Server 2008 R2上运行)

我假设存在一些共享资源和某种锁定系统?锁定是瓶颈吗?如果没有看到系统,很难猜测


你有办法了解工人的情况吗?他们大部分时间花在什么上,特别是在快速与慢速场景中?

您可以做的一件事是使用ETW跟踪来尝试并了解WCF作业运行时节点在做什么。在HPC服务器上,我有时使用clusrun xperf收集所有或特定节点上的跟踪。有许多工具可用于分析ETW跟踪,包括xperf本身。我没有使用HPC SOA(WCF)做过任何严肃的工作,但我确实编写了一个简单的WCF raytracer应用程序,然后使用xperf在几个节点上对其进行分析。

结果表明,这是一个与网络完全无关的问题,与HPC服务器的调度机制的特性有关。我通过在WCF服务配置文件的LoadBalancement部分将配置选项“serviceRequestPrefetchCount”调整为0解决了这个问题。

大多数时候,每个人都在无所事事。CPU负载接近于零。如果出现锁定问题,它将以非常低的CPU使用率表现出来。线程在完成其工作项之前正在等待某些内容。您可以尝试使用xperf进行堆栈遍历,以查看它们在做什么,也就是说,我无法对其他部分进行评论,但这是您希望在虚拟化上做的事情吗?为什么Hyper-V是个问题?