Linux流量整形的性能瓶颈(tc)

Linux流量整形的性能瓶颈(tc)

我有一个有趣的问题。

我们有一个安装了 Debian Stretch 的 Linux 服务器。该服务器具有单 CPU E5-2680 v2 和 Intel 82599ES 10G 双端口 NIC。其上没有运行其他服务(如 HTTP 等)。

一切看起来都很好,直到我启用流量整形。整形规则由htb qdiscbond0接口组成bond1

有一个三步哈希过滤器:

  1. 用于选择大子网的四个规则过滤器。规则如下:

    protocol ip u32 ht 800:: match ip src 10.15.0.0/18 hashkey mask 0x0000ff00 at 12 link 1:
    
  2. 60 个左右的规则表用于从大型子网中选择 /24

    protocol ip u32 ht 1:10 match ip src 10.15.16.0/24 hashkey mask 0x000000ff at 12 link 100:
    
  3. 256条规则表匹配IP

    parent 1:0 prio 100 protocol ip u32 ht 100:20: match ip src 10.15.16.32 flowid 1:20    
    class add dev bond0 parent 1:0 classid 1:1 htb rate 24Gbit ceil 24Gbit burst 4096k cburst 256k
    class add dev bond0 parent 1:1 classid 1:20 htb rate 102400Kbit  burst 4096k cburst 256k    
    qdisc add dev bond0 parent 1:20 pfifo_fast
    

现在,当我启用这些规则时,我最多可以获得大约 10Gbps 的总流量,然后 ping 时间开始上升到 100 毫秒或更长。然而,在此期间,CPU 负载几乎为零 -uptime显示负载为 0.07,每个 CPU 核心的利用率仅为 5% 左右。ping一旦我清除了整形规则,就立即变得OK。

之前我用的是sfqpfifo_fast这确实导致了很大的 CPU 负载。然后我切换到红色,它在没有 CPU 负载的情况下产生了更好的结果,然后我切换到pfifo_fast它产生与红色几乎相同的结果。

  • 还有什么其他瓶颈?
  • 有人尝试过在超过 10Gbps 的网络中使用 Linux 流量整形器吗?

相关内容