【问题标题】:Diagnosing pathological behavior of a piece of cluster software诊断一个集群软件的病理行为
【发布时间】:2010-08-10 06:27:31
【问题描述】:

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

我想知道这是否可能与 OS 调度程序或 OS 网络堆栈的某些病态行为有关(t.i. 对于非常短的交互存在一些特殊情况行为)。

我该如何诊断原因?哪些 perfcounters 值得关注?使用什么工具或方法?

(以防有人简单地知道我的特定问题的答案,我说的是 MS HPC Server 2008 R2 的“WCF 代理”,在 Hyper-V 上的 Windows Server 2008 R2 上运行)

【问题讨论】:

  • 我无法评论其他方面,但这是您希望通过虚拟化做的事情吗? IOW 是 Hyper-V 的问题吗?

标签: windows performance language-agnostic cluster-computing diagnostics


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      我假设有一些共享资源带有某种锁定系统?锁定是瓶颈吗?不看系统很难猜。

      你有办法描述工人吗?他们将大部分时间都花在了哪些方面,尤其是在快与慢的场景中?

      【讨论】:

      • 大部分时间每个人都无所事事。 CPU 负载接近于零。
      • 如果存在锁定问题,CPU 使用率会非常低。线程在完成它们的工作项之前正在等待某些东西。您可以尝试使用 xperf 进行堆栈行走以查看他们在做什么,即 blogs.msdn.com/b/pigscanfly/archive/2009/08/06/…
      猜你喜欢
      • 2019-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-04
      • 1970-01-01
      • 1970-01-01
      • 2018-01-16
      • 1970-01-01
      相关资源
      最近更新 更多