CPU 数据包转发时的使用

CPU Usage while packet forwarding

我正在尝试测量 CPU 在双核 ARM Cortex A9 处理器上的使用情况以对其进行基准测试。它将被用作路由器。我启用了 ip 转发,我正在 运行 iperf 测试以及使用 top 监控 CPU 使用情况。我对解释 top.

的结果有点困惑
Cpu0  :  0.0%us,  0.5%sy,  0.0%ni, 59.1%id,  0.0%wa,  0.0%hi, 40.5%si,  0.0%st
Cpu1  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

1) 在数据包转发期间,为什么内核使用率是 0.5% 而 softirq 百分比是 40.5%?所以有效的 CPU 使用率是 (40.5 + 0.5)%?

2) 为什么第二个 CPU 完全空闲?

谢谢!

  1. 这意味着进程上下文内核使用率为 0.5%,即非 IRQ/Softirq 在内核中的使用率为 0.5%。 40.5% 是软中断,你很清楚 说。有效CPU用法如你所说
  2. 可能是因为你
    a) 只有一个硬 irq 给你 网络设备并且绑定到核心 0 或
    b) 所有 IRQ 都绑定到核心 0,即使您有多个 IRQ line/have 多队列
    c) 你的基准测试有一个单一的 TCP/UDP 流所以散列是把 核心 0 上的所有内容,即使您有多个 queue/cores.