gpt4 book ai didi

c - linux softirq cpu 使用看起来很奇怪

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:20:21 30 4
gpt4 key购买 nike

我在客户端运行一个简单的程序,它继续向服务器发送 udp 数据包。服务器的接口(interface)是一个多队列网卡,但是我把它的udp4的rx-flow-hash设置为sd。因此所有数据包都将在一个 CPU 中生成。

当我收到 40Wpackets/s 时,服务器的那个 CPU 在 softirq 中消耗了 1%。当我收到 60Wpackets/s 时,服务器的 CPU 在 softirq 中消耗了 8%。当我收到 90Wpackets/s 时,服务器的 CPU cosr 100% 在 softirq 中。

接收到的号码是通过运行sar -n UDP 1一段时间得到的。cpu 成本是通过 mpstat -P ALL 1 获得的。

所以我对此很困惑。

为什么不是线性的?

最佳答案

软中断是在硬中断之后执行的,它占用了部分不需要立即处理的代码。

所以软中断可以被硬中断抢占。一般硬中断执行完后,再执行软中断(中断下半部分)。

但如果此时有硬中断,软中断会被抢占。

这样,当软中断队列超过10个后,就会唤醒ksoftirqd线程来处理软中断。 Ksoftirqd thread占用cpu在soft%的问题中有描述。

所以包少的时候,ksoftirq被唤醒的少,soft%很低。 idle进程中有很多软中断被硬中断打断,cpu消耗记录在idle%里面。

负载高的时候,软中断被硬中断打断,所以ksoftirqd一直在运行,所以soft%会突然增加很多。

关于c - linux softirq cpu 使用看起来很奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44063602/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com