WiFi 适配器在低吞吐量时延迟数据包

WiFi 适配器在低吞吐量时延迟数据包

当我注意到抖动时,我正在测试 WebSocket 连接;一些 TCP 数据包出现延迟。于是我开始 ping 目的地。 TCP 数据包不再延迟。我停止了 ping;我又开始紧张起来。

看起来,如果我有一定的流量阈值,那么网络适配器就不再有抖动,低于该阈值,但它似乎会延迟数据包。

我通过 ping 与 WebSocket 连接路径无关的其他站点再次测试了它,这也消除了抖动。无论流量和路径如何,它也会发生,例如,如果我从不同的目的地流式传输数据并测试 WS 连接,则不会出现抖动。这似乎表明它特定于本地网络接口,因为这是这里唯一的常量。

在我看来,如果流量不多,本地网络适配器就会进入“睡眠/低功耗”状态。这可能吗?有什么方法可以诊断或调查这个问题吗?

答案1

这是由无线网卡上的主动电源管理引起的。

运行此命令可关闭 NIC 的电源管理,从而修复此问题:

sudo iwconfig wlp3s0 power off

似乎此特定 NIC 的电源管理在极短的超时时间内处于活动状态。例如,约 200 毫秒内没有传输任何流量将使 NIC 进入低功耗模式。这意味着 NIC 必须在低流量时不断被唤醒,从而导致数据包延迟。

相关内容