Re: [PATCH v8 5/5] skb_array: resize support

From: Jesper Dangaard Brouer
Date: Tue Jun 14 2016 - 08:21:28 EST


On Mon, 13 Jun 2016 23:54:50 +0300
"Michael S. Tsirkin" <mst@xxxxxxxxxx> wrote:

> Update skb_array after ptr_ring API changes.
>
> Signed-off-by: Michael S. Tsirkin <mst@xxxxxxxxxx>

Acked-by: Jesper Dangaard Brouer <brouer@xxxxxxxxxx>
Tested-by: Jesper Dangaard Brouer <brouer@xxxxxxxxxx>

Also did resize unit test:
https://github.com/netoptimizer/prototype-kernel/commit/af0b4d7e7261e9

The parallel benchmark:
https://github.com/netoptimizer/prototype-kernel/blob/master/kernel/lib/skb_array_parallel01.c

Have been adjusted to use the non-BH variant of the lock. And the
parallel benchmark results, where a single producer and a single
consumer CPU runs concurrently, and the queue always partly full
(optimal case for minimize cache-contention):

On CPU i7-4790K @ 4.00GHz:
- Enqueue 32 cycles(tsc) 8.162 ns
- Dequeue 33 cycles(tsc) 8.417 ns

Notice this is an extremely good concurrency results, as it is very
close to the optimal case benchmark 26 cycles, when running
enqueue+dequeue on the same CPU in a tight loop[2].

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

[2] https://github.com/netoptimizer/prototype-kernel/blob/master/kernel/lib/skb_array_bench01.c