网络延迟随着负载而减少

网络延迟随着负载而减少

我正在做一个实验,看看 CPU 负载对网络延迟的影响。我的结果毫无意义,我希望你能理解。这些机器通过两个网络链路连接。

First link:
[ Host A ] < --        InfiniBand  (200 Gbps)        -- > [ Host B ]

Second link:
[ Host A ] < -- Ethernet --> [ Switch ] <-- Ethernet -- > [ Host B ]

在此处输入图片描述

上图是空闲的主机 A 和主机 B 通过以太网和 InfiniBand ping 主机 A。以太网中位延迟为 0.550ms,InfiniBand 中位延迟为 0.330ms。

在此处输入图片描述

上图是一台受压的主机 A 和主机 B 通过以太网和 InfiniBand ping 主机 A。以太网中位延迟现在为 0.360 毫秒,InfiniBand 中位延迟为 0.115 毫秒。

两台主机均运行 Ubuntu 20.04 和 Linux 5.8。

为什么当我强调主机 A 的所有核心时我的网络延迟会减少?

答案1

这是完全正常的。让我详细解释一下。空闲内核(没有要执行的工作进程)会使 CPU 进入省电模式,并可能降低 CPU 的核心频率。

每当数据包到达网卡时,网卡都会发出中断,向内核发出“网络数据包已到达”的信号。这需要处理,直到内核网络堆栈决定发送 ping 回复。现在说到响应时间,默认的 Linux 内核调度程序并未对此进行优化,因为通常情况下,回复是在 0.3 毫秒内还是在 0.1 毫秒内到达并不重要。

现在考虑一下:活动 CPU 处于最大化 CPU 频率,不需要从省电模式唤醒……活动 CPU 对 ping 请求的响应速度比空闲 CPU 更快。(除非您启动针对响应时间进行了优化的实时内核)。

相关内容