dil*_*ish 5 linux performance networking kernel irq
我在 4 核 intel 机器上有一个多队列 NIC 卡,并且我将 NIC 卡的每个队列绑定在 cpu 核心上(设置 /proc/irq/xxx/smp_affinity) 假设 core0 上的queue0,core1 上的queue1 等等。
据说软中断将在发生硬件中断的同一内核上调用。为什么 ksoftirqd 无法在我的机器上并行运行?只有一个内核线程(如 ksoftirqd/2)将使用 100% 的内核,但其他线程为 0%
当我使用
cat /proc/interrupts | grep eth1
Run Code Online (Sandbox Code Playgroud)
我可以看到所有的包甚至都分发到了所有的NIC队列。
更新:
如果你能读懂中文,这里有一个100%软中断问题的解决方案 http://hi.baidu.com/higkoo/item/42ba6c353bc8aed76d15e9c3(请参见#7)如果不能,哪个博客说你可以添加另一张卡,这个问题将会得到解决
ksoftirqd 是内核中所有轮询例程的基础,包括卡的网络队列的轮询。
因此,ksoftirqd 的触发将影响其线程的性能。事实是它根本没有线程。这是因为触发 ksoftirqd 的定时器总是被传递到同一个内核。
但是,你问这个问题是有目标的。首先讨论该目标可能是有意义的,而不是讨论实现该目标的实施细节。
| 归档时间: |
|
| 查看次数: |
3225 次 |
| 最近记录: |