[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <569694E1.6000109@gmail.com>
Date: Wed, 13 Jan 2016 10:18:09 -0800
From: John Fastabend <john.fastabend@...il.com>
To: David Miller <davem@...emloft.net>
CC: daniel@...earbox.net, eric.dumazet@...il.com, jhs@...atatu.com,
aduyck@...antis.com, brouer@...hat.com, john.r.fastabend@...el.com,
netdev@...r.kernel.org
Subject: Re: [RFC PATCH 09/12] net: sched: pfifo_fast use alf_queue
On 16-01-13 08:24 AM, David Miller wrote:
> From: John Fastabend <john.fastabend@...il.com>
> Date: Wed, 30 Dec 2015 09:54:20 -0800
>
>> This also removes the logic used to pick the next band to dequeue
>> from and instead just checks each alf_queue for packets from
>> top priority to lowest. This might need to be a bit more clever
>> but seems to work for now.
>
> I suspect we won't need to be more clever, there's only 3 bands
> after all and the head/tail tests should be fast enough.
>
Even with alf_dequeue operation dequeueing a single skb at a time and
iterating over the bands as I did here I see a perf improvement
on my desktop here,
threads mq + pfifo_fast
before after
1 1.70 Mpps 2.00 Mpps
2 3.15 Mpps 3.90 Mpps
4 4.70 Mpps 6.98 Mpps
8 9.57 Mpps 11.62 Mpps
This is using my pktgen patch previously posted and bulking set to
0 in both cases. This doesn't really say anything about the contention
cases, etc so I'll do some more testing before the merge window opens.
Also my kernel isn't really optimized I had some of the kernel hacking
stuff enabled, etc. It at least looks promising though and dequeueing
more than a single skb out of pfifo_fast should help.
Something like,
static struct sk_buff *pfifo_fast_dequeue(struct Qdisc *qdisc)
{
struct pfifo_fast_priv *priv = qdisc_priv(qdisc);
struct sk_buff *skb[8+1];
int band, n = 0, i;
skb[0] = NULL;
for (band = 0; band < PFIFO_FAST_BANDS && !skb[0]; band++) {
struct alf_queue *q = band2list(priv, band);
if (alf_queue_empty(q))
continue;
n = alf_mc_dequeue(q, skb, 8); <-- 4, 8, or something
}
.John
Powered by blists - more mailing lists