如何衡量一把锁的争用率

Posted

技术标签:

【中文标题】如何衡量一把锁的争用率【英文标题】:howto measure contention rate of one lock 【发布时间】:2012-03-07 09:20:54 【问题描述】:

我目前在维护的部分应用程序(.net 4.0、c#)的争用率方面存在问题。 如果无法获得一个部分锁,我想做的是编写一个 PerfCounter 。现在我只有 .net 提供的整体计数器,但我想为某些选定的锁提供一个 PerfCounter。

Profiler 等对我来说不是一个选项,因为这是一个我无法触及的高性能生产环境,我可以记录 perfcounters。

【问题讨论】:

这行不通,你不能只是将性能计数器栓在锁上。你真的需要一个分析器,VS Ultimate 中的并发可视化器会做得很好。您需要先解决“无法触摸”的问题。使用假数据创建模拟运行时环境。 【参考方案1】:

ETW 事件可能已经提供了有关您需要的信息。见ETW overview 和Lock contention。

【讨论】:

以上是关于如何衡量一把锁的争用率的主要内容,如果未能解决你的问题,请参考以下文章

Linux(内核剖析):28---内核同步之(临界区竞争条件同步锁常见的内核并发SMNP和UP配置选项锁的争用和扩展性(锁粒度))

如何设计一把可靠的分布式锁?

如何模拟硬件来衡量 .net 应用程序的性能?

遨游浏览器上的地址栏网址显示为黄色啥意思?而且网址最后边还有一把锁的符号。

当大多数类并发时如何找出java中的争用问题

如何避免 ConcurrentBag<T>.GetEnumerator() 上的争用