mirror of
https://github.com/torvalds/linux
synced 2024-10-07 03:42:55 +00:00
net_sched: sch_fq: always garbage collect
FQ performs garbage collection at enqueue time, and only if number of flows is above a given threshold, which is hit after the qdisc has been used a bit. Since an RB-tree traversal is needed to locate a flow, it makes sense to perform gc all the time, to keep rb-trees smaller. This reduces by 50 % average storage costs in FQ, and avoids 1 cache line miss at enqueue time when fast path added in prior patch can not be used. Signed-off-by: Eric Dumazet <edumazet@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
076433bd78
commit
8f6c4ff9e0
|
@ -367,9 +367,7 @@ static struct fq_flow *fq_classify(struct Qdisc *sch, struct sk_buff *skb)
|
|||
|
||||
root = &q->fq_root[hash_ptr(sk, q->fq_trees_log)];
|
||||
|
||||
if (q->flows >= (2U << q->fq_trees_log) &&
|
||||
q->inactive_flows > q->flows/2)
|
||||
fq_gc(q, root, sk);
|
||||
fq_gc(q, root, sk);
|
||||
|
||||
p = &root->rb_node;
|
||||
parent = NULL;
|
||||
|
|
Loading…
Reference in a new issue