[Cake] Fwd: testers wanted for the "cake" qdisc on mainstream platforms

Dave Taht dave.taht at gmail.com
Fri Nov 24 16:28:53 EST 2017


Jesper, unlike the rest of us, is regularly testing against 10Gig+ hw,
and did a brief test run against cake.

---------- Forwarded message ----------
From: Jesper Dangaard Brouer <brouer at redhat.com>
Date: Thu, Nov 23, 2017 at 11:51 PM
Subject: Re: testers wanted for the "cake" qdisc on mainstream platforms
To: Dave Taht <dave.taht at gmail.com>
Cc: brouer at redhat.com


On Thu, 23 Nov 2017 12:46:25 -0800
Dave Taht <dave.taht at gmail.com> wrote:

> you are the only person I know with 10GigE+ hardware.
>
> I'm kind of dying to know if ack filtering has any effect there, and
> how close we get to line rates these days, unshaped.

If unloading nf_conntrack, then Cake can do 10G with large 1514 bytes
packets ~820Kpps.  With small packets (obviously) it cannot.

Details below

Quick eval on Broadwell
=======================

Host Broadwell: CPU E5-1650 v4 @ 3.60GHz

NICs: Intel ixgbe

Run pktgen on ingress ixgbe1, and forward packets egress ixgbe2.

Notice: 10G wirespeed PPS varies greatly with packet size:
 - Smallest 64 bytes packets (+interframe gap + MAC preample = 84 bytes)
 - @64 bytes = 14.88 Mpps
 - @1538 bytes = 813 Kpps

pktgen01: single flow small packets
-----------------------------------

Install qdisc ::

 sudo $TC qdisc add dev ixgbe2 root cake bandwidth 10000Mbit ack-filter

Pktgen script small 64 byte pkts::

 ./pktgen_sample03_burst_single_flow.sh -vi ixgbe2 \
 x  -m 00:1b:21:bb:9a:84 -d 10.10.10.1 -t3

Quick nstat::

 $ nstat > /dev/null && sleep 1 && nstat
 #kernel
 IpInReceives                    1584842            0.0
 IpForwDatagrams                 1584842            0.0
 IpOutRequests                   1584842            0.0
 IpExtInOctets                   72902318           0.0
 IpExtOutOctets                  139465304          0.0
 IpExtInNoECTPkts                1584832            0.0

ethtool_stats::

 $ ethtool_stats.pl --dev ixgbe1 --dev ixgbe2 --sec 3
 [...]
 Show adapter(s) (ixgbe1 ixgbe2) statistics (ONLY that changed!)
 Ethtool(ixgbe1  ) stat:   9695260 (    9,695,260) <= fdir_miss /sec
 Ethtool(ixgbe1  ) stat:  94619772 (   94,619,772) <= rx_bytes /sec
 Ethtool(ixgbe1  ) stat: 952572687 (  952,572,687) <= rx_bytes_nic /sec
 Ethtool(ixgbe1  ) stat:   5245486 (    5,245,486) <= rx_missed_errors /sec
 Ethtool(ixgbe1  ) stat:   8061456 (    8,061,456) <= rx_no_dma_resources /sec
 Ethtool(ixgbe1  ) stat:   1576996 (    1,576,996) <= rx_packets /sec
 Ethtool(ixgbe1  ) stat:   9638460 (    9,638,460) <= rx_pkts_nic /sec
 Ethtool(ixgbe1  ) stat:  94619772 (   94,619,772) <= rx_queue_4_bytes /sec
 Ethtool(ixgbe1  ) stat:   1576996 (    1,576,996) <= rx_queue_4_packets /sec
 Ethtool(ixgbe2  ) stat:  91526011 (   91,526,011) <= tx_bytes /sec
 Ethtool(ixgbe2  ) stat: 100993190 (  100,993,190) <= tx_bytes_nic /sec
 Ethtool(ixgbe2  ) stat:   1578035 (    1,578,035) <= tx_packets /sec
 Ethtool(ixgbe2  ) stat:   1578019 (    1,578,019) <= tx_pkts_nic /sec
 Ethtool(ixgbe2  ) stat:  91526011 (   91,526,011) <= tx_queue_4_bytes /sec
 Ethtool(ixgbe2  ) stat:   1578035 (    1,578,035) <= tx_queue_4_packets /sec

Perf report::

  Samples: 72K of event 'cycles:ppp', Event count (approx.): 66265541749
   Overhead  CPU  Shared Object           Symbol
 -   10.60%  004  [kernel.vmlinux]        [k] _raw_spin_lock
    - _raw_spin_lock
      + 10.04% sch_direct_xmit
 +    6.87%  004  [kernel.vmlinux]        [k] flow_hash_from_keys
 +    6.26%  004  [kernel.vmlinux]        [k] cake_dequeue
 +    6.12%  004  [kernel.vmlinux]        [k] fib_table_lookup
 +    5.32%  004  [kernel.vmlinux]        [k] ixgbe_poll
 +    4.62%  004  [kernel.vmlinux]        [k] ixgbe_xmit_frame_ring
 +    3.17%  004  [kernel.vmlinux]        [k] __skb_flow_dissect
 +    2.99%  004  [kernel.vmlinux]        [k] cake_enqueue
 +    2.89%  004  [kernel.vmlinux]        [k] ip_route_input_rcu
 +    2.68%  004  [kernel.vmlinux]        [k] ktime_get
 +    2.47%  004  [kernel.vmlinux]        [k] ip_rcv
 +    2.31%  004  [kernel.vmlinux]        [k] ip_finish_output2
 +    2.23%  004  [kernel.vmlinux]        [k] __netif_receive_skb_core
 +    2.14%  004  [kernel.vmlinux]        [k] cake_hash
 +    2.04%  004  [kernel.vmlinux]        [k] __dev_queue_xmit
 +    2.00%  004  [kernel.vmlinux]        [k] inet_gro_receive
 +    1.87%  004  [kernel.vmlinux]        [k] udp_v4_early_demux
 +    1.79%  004  [kernel.vmlinux]        [k] dev_gro_receive
 +    1.59%  004  [kernel.vmlinux]        [k] __qdisc_run
 +    1.51%  004  [kernel.vmlinux]        [k] ip_rcv_finish
 +    1.48%  004  [kernel.vmlinux]        [k] __build_skb
 +    1.41%  004  [kernel.vmlinux]        [k] ip_forward
 +    1.21%  004  [kernel.vmlinux]        [k] dev_hard_start_xmit
 +    1.13%  004  [kernel.vmlinux]        [k] sch_direct_xmit
 +    1.08%  004  [kernel.vmlinux]        [k] __local_bh_enable_ip
 +    1.05%  004  [kernel.vmlinux]        [k] build_skb
 +    0.91%  004  [kernel.vmlinux]        [k] fib_validate_source
 +    0.87%  004  [kernel.vmlinux]        [k] ip_finish_output
 +    0.87%  004  [kernel.vmlinux]        [k] read_tsc
 +    0.83%  004  [kernel.vmlinux]        [k] kmem_cache_alloc
 +    0.81%  004  [kernel.vmlinux]        [k] ___slab_alloc
 +    0.72%  004  [kernel.vmlinux]        [k] kmem_cache_free_bulk
 +    0.67%  004  [kernel.vmlinux]        [k] cake_advance_shaper

In the single flow test the overhead in _raw_spin_lock is FAKE.  It is
actually caused by the NIC tailptr/doorbell on TX.


pktgen02: 8 x flows small packets
---------------------------------

Pktgen 8x flows::

 ./pktgen_sample05_flow_per_thread.sh -vi ixgbe2 \
   -m 00:1b:21:bb:9a:84 -d 10.10.10.1 -t8

Quick nstat 8x flows::

 $ nstat > /dev/null && sleep 1 && nstat
 #kernel
 IpInReceives                    1163458            0.0
 IpForwDatagrams                 1163458            0.0
 IpOutRequests                   1163458            0.0
 IpExtInOctets                   53519160           0.0
 IpExtOutOctets                  102384480          0.0
 IpExtInNoECTPkts                1163461            0.0

ethtool_stats 8x flows::

 Show adapter(s) (ixgbe1 ixgbe2) statistics (ONLY that changed!)
 Ethtool(ixgbe1  ) stat:     92911 (       92,911) <= alloc_rx_page /sec
 Ethtool(ixgbe1  ) stat:   9502884 (    9,502,884) <= fdir_miss /sec
 Ethtool(ixgbe1  ) stat:  66311206 (   66,311,206) <= rx_bytes /sec
 Ethtool(ixgbe1  ) stat: 956178211 (  956,178,211) <= rx_bytes_nic /sec
 Ethtool(ixgbe1  ) stat:   5440134 (    5,440,134) <= rx_missed_errors /sec
 Ethtool(ixgbe1  ) stat:   8394967 (    8,394,967) <= rx_no_dma_resources /sec
 Ethtool(ixgbe1  ) stat:   1105187 (    1,105,187) <= rx_packets /sec
 Ethtool(ixgbe1  ) stat:   9500151 (    9,500,151) <= rx_pkts_nic /sec
 Ethtool(ixgbe1  ) stat:  11149586 (   11,149,586) <= rx_queue_0_bytes /sec
 Ethtool(ixgbe1  ) stat:    185826 (      185,826) <= rx_queue_0_packets /sec
 Ethtool(ixgbe1  ) stat:  10937155 (   10,937,155) <= rx_queue_1_bytes /sec
 Ethtool(ixgbe1  ) stat:    182286 (      182,286) <= rx_queue_1_packets /sec
 Ethtool(ixgbe1  ) stat:  11119239 (   11,119,239) <= rx_queue_2_bytes /sec
 Ethtool(ixgbe1  ) stat:    185321 (      185,321) <= rx_queue_2_packets /sec
 Ethtool(ixgbe1  ) stat:  10950508 (   10,950,508) <= rx_queue_3_bytes /sec
 Ethtool(ixgbe1  ) stat:    182508 (      182,508) <= rx_queue_3_packets /sec
 Ethtool(ixgbe1  ) stat:  10950508 (   10,950,508) <= rx_queue_4_bytes /sec
 Ethtool(ixgbe1  ) stat:    182508 (      182,508) <= rx_queue_4_packets /sec
 Ethtool(ixgbe1  ) stat:  11204211 (   11,204,211) <= rx_queue_5_bytes /sec
 Ethtool(ixgbe1  ) stat:    186737 (      186,737) <= rx_queue_5_packets /sec
 Ethtool(ixgbe2  ) stat:  62216109 (   62,216,109) <= tx_bytes /sec
 Ethtool(ixgbe2  ) stat:  68653701 (   68,653,701) <= tx_bytes_nic /sec
 Ethtool(ixgbe2  ) stat:   1072692 (    1,072,692) <= tx_packets /sec
 Ethtool(ixgbe2  ) stat:   1072714 (    1,072,714) <= tx_pkts_nic /sec
 Ethtool(ixgbe2  ) stat:   8838570 (    8,838,570) <= tx_queue_0_bytes /sec
 Ethtool(ixgbe2  ) stat:    152389 (      152,389) <= tx_queue_0_packets /sec
 Ethtool(ixgbe2  ) stat:  10584083 (   10,584,083) <= tx_queue_1_bytes /sec
 Ethtool(ixgbe2  ) stat:    182484 (      182,484) <= tx_queue_1_packets /sec
 Ethtool(ixgbe2  ) stat:  10743376 (   10,743,376) <= tx_queue_2_bytes /sec
 Ethtool(ixgbe2  ) stat:    185231 (      185,231) <= tx_queue_2_packets /sec
 Ethtool(ixgbe2  ) stat:  10599318 (   10,599,318) <= tx_queue_3_bytes /sec
 Ethtool(ixgbe2  ) stat:    182747 (      182,747) <= tx_queue_3_packets /sec
 Ethtool(ixgbe2  ) stat:  10596994 (   10,596,994) <= tx_queue_4_bytes /sec
 Ethtool(ixgbe2  ) stat:    182707 (      182,707) <= tx_queue_4_packets /sec
 Ethtool(ixgbe2  ) stat:  10853767 (   10,853,767) <= tx_queue_5_bytes /sec
 Ethtool(ixgbe2  ) stat:    187134 (      187,134) <= tx_queue_5_packets /sec

Perf report::

  Samples: 733K of event 'cycles:ppp', Event count (approx.): 691576256580
   Overhead  CPU  Shared Object         Symbol
 -   12.32%  005  [kernel.vmlinux]      [k] queued_spin_lock_slowpath
  - queued_spin_lock_slowpath
      + 11.68% __dev_queue_xmit
      + 0.62% sch_direct_xmit
 +   12.30%  004  [kernel.vmlinux]      [k] queued_spin_lock_slowpath
 +   12.19%  003  [kernel.vmlinux]      [k] queued_spin_lock_slowpath
 +   12.03%  000  [kernel.vmlinux]      [k] queued_spin_lock_slowpath
 +   11.98%  001  [kernel.vmlinux]      [k] queued_spin_lock_slowpath
 +   11.95%  002  [kernel.vmlinux]      [k] queued_spin_lock_slowpath
 +    0.78%  002  [kernel.vmlinux]      [k] _raw_spin_lock
 +    0.76%  000  [kernel.vmlinux]      [k] _raw_spin_lock
 +    0.74%  001  [kernel.vmlinux]      [k] _raw_spin_lock
 +    0.70%  003  [kernel.vmlinux]      [k] _raw_spin_lock
 +    0.65%  005  [kernel.vmlinux]      [k] _raw_spin_lock
 +    0.64%  001  [kernel.vmlinux]      [k] cake_dequeue
 +    0.63%  004  [kernel.vmlinux]      [k] _raw_spin_lock
 +    0.53%  003  [kernel.vmlinux]      [k] cake_dequeue
 +    0.50%  000  [kernel.vmlinux]      [k] cake_dequeue
      0.49%  002  [kernel.vmlinux]      [k] cake_dequeue
      0.48%  005  [kernel.vmlinux]      [k] cake_dequeue
      0.40%  004  [kernel.vmlinux]      [k] cake_dequeue
      0.32%  002  [kernel.vmlinux]      [k] cake_enqueue
      0.32%  004  [kernel.vmlinux]      [k] cake_enqueue
      0.31%  001  [kernel.vmlinux]      [k] cake_enqueue
      0.30%  000  [kernel.vmlinux]      [k] cake_enqueue
      0.29%  005  [kernel.vmlinux]      [k] cake_enqueue
      0.28%  000  [kernel.vmlinux]      [k] __build_skb
      0.27%  003  [kernel.vmlinux]      [k] cake_enqueue
      0.27%  004  [kernel.vmlinux]      [k] __build_skb
      0.25%  003  [kernel.vmlinux]      [k] __build_skb
      0.25%  002  [kernel.vmlinux]      [k] __build_skb
      0.24%  005  [kernel.vmlinux]      [k] __build_skb
      0.22%  002  [kernel.vmlinux]      [k] __qdisc_run
      0.22%  000  [kernel.vmlinux]      [k] __qdisc_run
      0.21%  004  [kernel.vmlinux]      [k] cake_hash
      0.20%  001  [kernel.vmlinux]      [k] __build_skb
      0.19%  005  [kernel.vmlinux]      [k] cake_hash
      0.19%  002  [kernel.vmlinux]      [k] cake_hash
      0.19%  004  [kernel.vmlinux]      [k] ixgbe_poll
      0.18%  003  [kernel.vmlinux]      [k] cake_hash
      0.18%  005  [kernel.vmlinux]      [k] kmem_cache_alloc
      0.17%  001  [kernel.vmlinux]      [k] ixgbe_xmit_frame_ring
      0.17%  001  [kernel.vmlinux]      [k] cake_hash
      0.17%  000  [kernel.vmlinux]      [k] cake_hash
      0.17%  004  [kernel.vmlinux]      [k] __qdisc_run
      0.17%  002  [kernel.vmlinux]      [k] kmem_cache_alloc

In the multi-flow test the overhead/congestion on queued_spin_lock_slowpath
is real, and is simply due to cake being a single-queue qdisc.

pktgen03: 8 x flows large packets
---------------------------------

Pktgen 8x flows large packets::

 ./pktgen_sample05_flow_per_thread.sh -vi ixgbe2 \
   -m 00:1b:21:bb:9a:84 -d 10.10.10.1 -t8 -s 1514

TX speed measured on generator: 821,361 <= tx_packets /sec

Quick nstat 8x flows large packets::

 $ nstat > /dev/null && sleep 1 && nstat
 #kernel
 IpInReceives                    824925             0.0
 IpForwDatagrams                 824925             0.0
 IpOutRequests                   824925             0.0
 IpExtInOctets                   1224145664         0.0
 IpExtOutOctets                  2448288360         0.0
 IpExtInNoECTPkts                824895             0.0

Good result as we at 10G wirespeed with large packets.

ethtool_stats 8x flows large packets::

 Show adapter(s) (ixgbe1 ixgbe2) statistics (ONLY that changed!)
 Ethtool(ixgbe1  ) stat:     246451 (      246,451) <= alloc_rx_page /sec
 Ethtool(ixgbe1  ) stat:     820293 (      820,293) <= fdir_miss /sec
 Ethtool(ixgbe1  ) stat: 1226074253 (1,226,074,253) <= rx_bytes /sec
 Ethtool(ixgbe1  ) stat: 1232080619 (1,232,080,619) <= rx_bytes_nic /sec
 Ethtool(ixgbe1  ) stat:       1806 (        1,806) <= rx_no_dma_resources /sec
 Ethtool(ixgbe1  ) stat:     818474 (      818,474) <= rx_packets /sec
 Ethtool(ixgbe1  ) stat:     820286 (      820,286) <= rx_pkts_nic /sec
 Ethtool(ixgbe1  ) stat:  153599624 (  153,599,624) <= rx_queue_0_bytes /sec
 Ethtool(ixgbe1  ) stat:     102536 (      102,536) <= rx_queue_0_packets /sec
 Ethtool(ixgbe1  ) stat:  153600115 (  153,600,115) <= rx_queue_1_bytes /sec
 Ethtool(ixgbe1  ) stat:     102537 (      102,537) <= rx_queue_1_packets /sec
 Ethtool(ixgbe1  ) stat:  306006517 (  306,006,517) <= rx_queue_2_bytes /sec
 Ethtool(ixgbe1  ) stat:     204277 (      204,277) <= rx_queue_2_packets /sec
 Ethtool(ixgbe1  ) stat:  153601585 (  153,601,585) <= rx_queue_3_bytes /sec
 Ethtool(ixgbe1  ) stat:     102538 (      102,538) <= rx_queue_3_packets /sec
 Ethtool(ixgbe1  ) stat:  153603546 (  153,603,546) <= rx_queue_4_bytes /sec
 Ethtool(ixgbe1  ) stat:     102539 (      102,539) <= rx_queue_4_packets /sec
 Ethtool(ixgbe1  ) stat:  305662865 (  305,662,865) <= rx_queue_5_bytes /sec
 Ethtool(ixgbe1  ) stat:     204047 (      204,047) <= rx_queue_5_packets /sec
 Ethtool(ixgbe2  ) stat: 1223143065 (1,223,143,065) <= tx_bytes /sec
 Ethtool(ixgbe2  ) stat: 1226420442 (1,226,420,442) <= tx_bytes_nic /sec
 Ethtool(ixgbe2  ) stat:     816517 (      816,517) <= tx_packets /sec
 Ethtool(ixgbe2  ) stat:     816525 (      816,525) <= tx_pkts_nic /sec
 Ethtool(ixgbe2  ) stat:  152763623 (  152,763,623) <= tx_queue_0_bytes /sec
 Ethtool(ixgbe2  ) stat:     101978 (      101,978) <= tx_queue_0_packets /sec
 Ethtool(ixgbe2  ) stat:  152922976 (  152,922,976) <= tx_queue_1_bytes /sec
 Ethtool(ixgbe2  ) stat:     102085 (      102,085) <= tx_queue_1_packets /sec
 Ethtool(ixgbe2  ) stat:  305999422 (  305,999,422) <= tx_queue_2_bytes /sec
 Ethtool(ixgbe2  ) stat:     204272 (      204,272) <= tx_queue_2_packets /sec
 Ethtool(ixgbe2  ) stat:  152759210 (  152,759,210) <= tx_queue_3_bytes /sec
 Ethtool(ixgbe2  ) stat:     101975 (      101,975) <= tx_queue_3_packets /sec
 Ethtool(ixgbe2  ) stat:  152875415 (  152,875,415) <= tx_queue_4_bytes /sec
 Ethtool(ixgbe2  ) stat:     102053 (      102,053) <= tx_queue_4_packets /sec
 Ethtool(ixgbe2  ) stat:  305822417 (  305,822,417) <= tx_queue_5_bytes /sec
 Ethtool(ixgbe2  ) stat:     204154 (      204,154) <= tx_queue_5_packets /sec

Perf report 8x flows large packets::

 Samples: 136K of event 'cycles:ppp', Event count (approx.): 104319432585
   Overhead  CPU  Shared Object     Symbol
 +   23.06%  005  [kernel.vmlinux]  [k] queued_spin_lock_slowpath
    - queued_spin_lock_slowpath
       + 20.49% __dev_queue_xmit
       + 2.41% sch_direct_xmit
 +   22.16%  002  [kernel.vmlinux]  [k] queued_spin_lock_slowpath
 +    3.09%  005  [kernel.vmlinux]  [k] cake_dequeue
 +    3.02%  005  [kernel.vmlinux]  [k] _raw_spin_lock
 +    2.77%  002  [kernel.vmlinux]  [k] cake_dequeue
 +    2.76%  002  [kernel.vmlinux]  [k] _raw_spin_lock
 +    2.48%  001  [kernel.vmlinux]  [k] queued_spin_lock_slowpath
 +    2.03%  000  [kernel.vmlinux]  [k] queued_spin_lock_slowpath
 +    1.29%  003  [kernel.vmlinux]  [k] queued_spin_lock_slowpath
 +    1.20%  002  [kernel.vmlinux]  [k] __build_skb
 +    1.12%  005  [kernel.vmlinux]  [k] __build_skb
 +    1.08%  005  [kernel.vmlinux]  [k] ixgbe_xmit_frame_ring
 +    0.91%  002  [kernel.vmlinux]  [k] ixgbe_xmit_frame_ring
 +    0.91%  002  [kernel.vmlinux]  [k] cake_enqueue
 +    0.85%  005  [kernel.vmlinux]  [k] ixgbe_poll
 +    0.84%  005  [kernel.vmlinux]  [k] cake_enqueue
 +    0.82%  002  [kernel.vmlinux]  [k] ixgbe_poll
 +    0.70%  004  [kernel.vmlinux]  [k] queued_spin_lock_slowpath
 +    0.68%  005  [kernel.vmlinux]  [k] cake_dequeue_one
 +    0.59%  002  [kernel.vmlinux]  [k] cake_dequeue_one
 +    0.53%  002  [kernel.vmlinux]  [k] cake_hash
 +    0.52%  002  [kernel.vmlinux]  [k] __dev_queue_xmit
 +    0.51%  005  [kernel.vmlinux]  [k] prandom_u32_state
 +    0.50%  005  [kernel.vmlinux]  [k] __qdisc_run
 +    0.50%  002  [kernel.vmlinux]  [k] netif_skb_features
      0.50%  002  [kernel.vmlinux]  [k] prandom_u32_state
      0.50%  002  [kernel.vmlinux]  [k] flow_hash_from_keys
      0.49%  005  [kernel.vmlinux]  [k] __dev_queue_xmit
      0.49%  002  [kernel.vmlinux]  [k] __qdisc_run
      0.48%  005  [kernel.vmlinux]  [k] cake_hash
      0.47%  005  [kernel.vmlinux]  [k] flow_hash_from_keys



> ---------- Forwarded message ----------
> From: Dave Taht <dave.taht at gmail.com>
> Date: Thu, Nov 23, 2017 at 9:33 AM
> Subject: testers wanted for the "cake" qdisc on mainstream platforms
> To: "cerowrt-devel at lists.bufferbloat.net"
> <cerowrt-devel at lists.bufferbloat.net>, bloat
> <bloat at lists.bufferbloat.net>, Cake List <cake at lists.bufferbloat.net>
>
>
> It is my hope to get  the cake qdisc into the Linux kernel in the next
> release cycle. We could definitely use more testers! The version we
> have here will compile against almost any kernel on any platform,
> dating back as far as 3.10, and has been integrated into the
> sqm-scripts and shipped in lede for ages...
>
> But what I'm hoping for is for people to try it against their current
> linux kernels on x86, arm, ppc64, arm64, etc hardware, and document
> the kernel version, linux distribution, and any anomalies.
>
> To build it you need to have installed your kernel headers, and:
>
> git clone -b cobalt https://github.com/dtaht/sch_cake.git
> git clone https://github.com/dtaht/iproute2-cake-next.git
> cd sch_cake; make; sudo make install; cd ..
> cd iproute2-cake-next; make;
> # don't do a make install, instead something like export TC=`pwd`/tc/tc
>
> $TC qdisc add dev your_device root cake bandwidth XXMbit ack-filter
>
> And then pound it flat with whatever traffic types you like. In particular,
> getting some videoconferencing and flooding results would be great.
>
> There are a TON of features documented on the man page, several
> (ack-filter, wash) are not, as I write.
>
> Please comment via the cake at lists.bufferbloat.net mailing list. THX!
>
> NOTE: flent has gained a lot of new features of late, including
> support for the new go based irtt tool, which can measure one way
> delay (which is also pretty nifty at the command line)
>
>
> flent: https://github.com/tohojo/
> irtt: https://github.com/peteheist/irtt
>
> From the pending commit message:
>
>    Add Common Applications Kept Enhanced (sch_cake) qdisc
>
>     sch_cake is intended to squeeze the most bandwidth and lowest
> latency out of even the slowest ISP links and routers, while
> presenting an API simple enough that even an ISP can configure it.
>
>     Example of use on an ISP uplink:
>
>     tc qdisc add dev eth0 cake bandwidth 20Mbit nat docsis ack-filter
>
>     Cake can also be used in unlimited mode to drive packets at the
> speed of the underlying link.
>
>     Cake is filled with:
>
>     * A hybrid Codel/Blue AQM algorithm, “Cobalt”, tied to an FQ_Codel
>       derived Flow Queuing system, which autoconfigures based on the bandwidth.
>     * A unique "triple-isolate" mode (the default) which balances per-flow
>       and per-host flow FQ even through NAT.
>     * An integral deficit based shaper with extensive dsl and docsis support
>       that can also be used in unlimited mode.
>     * 8 way set associative queuing to reduce flow collisions to a minimum.
>     * A reasonable interpretation of various diffserv latency/loss tradeoffs.
>     * Support for washing diffserv for entering and exiting traffic.
>     * Perfect support for interacting with Docsis 3.0 shapers.
>     * Extensive support for DSL framing types.
>     * (New) Support for ack filtering.
>       - 20 % better throughput at a 16x1 down/up ratio on the rrul test.
>     * Extensive statistics for measuring, loss, ecn markings, latency variation.
>
>     There are some features still considered experimental, notably the
>     ingress_autorate bandwidth estimator and cobalt itself.
>
> sch_cake replaces a combination of iptables, tc filter, htb and fq_codel in
> the sqm-scripts, with sane defaults and vastly easier configuration.
>
> Cake's principal author is Jonathan Morton, with contributions from
> Kevin Darbyshire-Bryant, Toke Høiland-Jørgensen, Sebastian Moeller,
> Ryan Mounce, Dean Scarff, Guido Sarducci, Nils Andreas Svee, Dave
> Täht, and Loganaden Velvindron.
>
>
>
>
>
> --
>
> Dave Täht
> CEO, TekLibre, LLC
> http://www.teklibre.com
> Tel: 1-669-226-2619
>
>



--
Best regards,
  Jesper Dangaard Brouer
  MSc.CS, Principal Kernel Engineer at Red Hat
  LinkedIn: http://www.linkedin.com/in/brouer


-- 

Dave Täht
CEO, TekLibre, LLC
http://www.teklibre.com
Tel: 1-669-226-2619


More information about the Cake mailing list