加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux-kernel – _spin_unlock_irqrestore()在我的kvm中有很高的

发布时间:2020-12-14 00:52:49 所属栏目:Linux 来源:网络整理
导读:我在KVM虚拟机中运行了SPECJbb基准测试.它显示仓库2和仓库3之间的吞吐量急剧下降(它们之间的差异只是在并行任务上添加) 然后我在我的来宾虚拟机中使用perf.它表明_spin_unlock_irqrestore具有非常高的采样率. 事件:31K周期 74.89%[kernel] [k] _spin_unloc
我在KVM虚拟机中运行了SPECJbb基准测试.它显示仓库2和仓库3之间的吞吐量急剧下降(它们之间的差异只是在并行任务上添加)

然后我在我的来宾虚拟机中使用perf.它表明_spin_unlock_irqrestore具有非常高的采样率.

事件:31K周期

> 74.89%[kernel] [k] _spin_unlock_irqrestore
> 7.36%perf-1968.map [.] 0x7f84b913e064
> 6.82%[kernel] [k] __do_softirq
> 6.39%[kernel] [k] handle_IRQ_event

似乎只有7.36%的cpu时间运行我的Java程序.为什么_spin_unlock_irqrestore的采样率如此之高?它做了什么?

解决方法

这是由perf报告的错误,而不是_spin_unlock_irqrestore消耗的周期.

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

所有你知道的是,循环被禁用了中断的代码消耗,并使用_spin_unlock_irqrestore启用它们.

如果你可以使用perf来使用NMI(不可屏蔽中断),它可以解决这个问题.我知道可以通过更改makefile来完成oprofile(perf的前身),但不知道perf.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读