• Eric Dumazet's avatar
    fq_codel: add memory limitation per queue · 95b58430
    Eric Dumazet authored
    On small embedded routers, one wants to control maximal amount of
    memory used by fq_codel, instead of controlling number of packets or
    bytes, since GRO/TSO make these not practical.
    
    Assuming skb->truesize is accurate, we have to keep track of
    skb->truesize sum for skbs in queue.
    
    This patch adds a new TCA_FQ_CODEL_MEMORY_LIMIT attribute.
    
    I chose a default value of 32 MBytes, which looks reasonable even
    for heavy duty usages. (Prior fq_codel users should not be hurt
    when they upgrade their kernels)
    
    Two fields are added to tc_fq_codel_qd_stats to report :
     - Current memory usage
     - Number of drops caused by memory limits
    
    # tc qd replace dev eth1 root est 1sec 4sec fq_codel memory_limit 4M
    ..
    # tc -s -d qd sh dev eth1
    qdisc fq_codel 8008: root refcnt 257 limit 10240p flows 1024
     quantum 1514 target 5.0ms interval 100.0ms memory_limit 4Mb ecn
     Sent 2083566791363 bytes 1376214889 pkt (dropped 4994406, overlimits 0
    requeues 21705223)
     rate 9841Mbit 812549pps backlog 3906120b 376p requeues 21705223
      maxpacket 68130 drop_overlimit 4994406 new_flow_count 28855414
      ecn_mark 0 memory_used 4190048 drop_overmemory 4994406
      new_flows_len 1 old_flows_len 177
    Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
    Cc: Jesper Dangaard Brouer <brouer@redhat.com>
    Cc: Dave Täht <dave.taht@gmail.com>
    Cc: Sebastian Möller <moeller0@gmx.de>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    95b58430
sch_fq_codel.c 18.6 KB