![内核模块的 CPU 使用情况、路由和转发规则](https://linux22.com/image/37222/%E5%86%85%E6%A0%B8%E6%A8%A1%E5%9D%97%E7%9A%84%20CPU%20%E4%BD%BF%E7%94%A8%E6%83%85%E5%86%B5%E3%80%81%E8%B7%AF%E7%94%B1%E5%92%8C%E8%BD%AC%E5%8F%91%E8%A7%84%E5%88%99.png)
我有一个安装了环回内核模块的系统。通过一系列路由和 iptable 规则,从环回接口发出的数据包通过 ipsec 隧道发送。我发现在负载下,内核会出现恐慌或转储大量消息,提示“BUG:软锁定 - CPU#0 卡住了 X 秒”。
堆栈跟踪始终位于 crypto_cbc_encrypt 或 des3_ede_encrypt 等加密函数中。 ipsec 隧道上有大量流量,系统在加密+解密上花费了大量时间。
我担心的是它始终是 CPU 0。我如何确保其他 CPU 也共享加密负载。我有时会看到 ksoftirq0 线程处于 100%。同样,它始终是 cpu0。这种情况主要发生在数据包从环回接口转发、通过 xfrm 规则并进入隧道时。
如何检查环回内核模块的 CPU 掩码?有这样的事吗?