首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >_spin_unlock_irqrestore()在我的kvm中有很高的采样率,为什么?

_spin_unlock_irqrestore()在我的kvm中有很高的采样率,为什么?
EN

Stack Overflow用户
提问于 2013-02-05 08:48:10
回答 1查看 2.5K关注 0票数 6

我在我的KVM虚拟机中运行一个SPECJbb基准测试。它显示了仓库2和仓库3之间的吞吐量急剧下降(它们之间的不同只是在并发任务上添加)。

然后在我的来宾虚拟机中使用perf。结果表明,_spin_unlock_irqrestore具有很高的采样率。

活动: 31K周期

  • 74.89%内核_spin_unlock_irqrestore
  • 1968年地图占7.36%。0x7f84b913e064
  • 6.82%内核__do_softirq
  • 6.39%内核handle_IRQ_event

..。

似乎只有7.36%的cpu运行我的Java程序。为什么自旋解锁的采样率这么高?那它是做什么的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-05 15:19:30

这是perf的坏报告,而不是_spin_unlock_irqrestore消耗的周期。

当IRQ被禁用时,perf的中断将不被处理。相反,当中断重新启用时,它们将被处理。当perf的中断处理程序查看指令指针以查看正在运行的代码时,它会找到启用中断的函数--通常是_spin_unlock_irqrestore

因此,您所知道的是,这些周期是由禁用中断并使用_spin_unlock_irqrestore启用的代码所消耗的。

如果您可以使用NMI (非屏蔽中断),它可以解决这个问题。

我知道可以通过更改makefile来实现oprofile ( perf的前身),但不知道perf。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14703328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档