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