[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <1350630063.2293.177.camel@edumazet-glaptop>
Date: Fri, 19 Oct 2012 09:01:03 +0200
From: Eric Dumazet <eric.dumazet@...il.com>
To: JoonSoo Kim <js1304@...il.com>
Cc: David Rientjes <rientjes@...gle.com>,
Andi Kleen <andi@...stfloor.org>,
Ezequiel Garcia <elezegarcia@...il.com>,
Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
linux-mm@...ck.org, Tim Bird <tim.bird@...sony.com>,
celinux-dev@...ts.celinuxforum.org
Subject: Re: [Q] Default SLAB allocator
On Fri, 2012-10-19 at 09:03 +0900, JoonSoo Kim wrote:
> Hello, Eric.
> Thank you very much for a kind comment about my question.
> I have one more question related to network subsystem.
> Please let me know what I misunderstand.
>
> 2012/10/14 Eric Dumazet <eric.dumazet@...il.com>:
> > In latest kernels, skb->head no longer use kmalloc()/kfree(), so SLAB vs
> > SLUB is less a concern for network loads.
> >
> > In 3.7, (commit 69b08f62e17) we use fragments of order-3 pages to
> > populate skb->head.
>
> You mentioned that in latest kernel skb->head no longer use kmalloc()/kfree().
I hadnt the time to fully explain what was going on, only to give some
general ideas/hints.
Only incoming skbs, delivered by NIC are built this way.
I plan to extend this to some kind of frames, for example TCP ACK.
(They have a short life, so using __netdev_alloc_frag makes sense)
But when an application does a tcp_sendmsg() we use GFP_KERNEL
allocations and thus still use kmalloc().
> But, why result of David's "netperf RR" test on v3.6 is differentiated
> by choosing the allocator?
Because outgoing skb are still using a kmalloc() for their skb->head
RR sends one frame, receives one frame for each transaction.
So with 3.5, each RR transaction using a NIC needs 3 kmalloc() instead
of 4 for previous kernels.
Note that loopback traffic is different, since we do 2 kmalloc() per
transaction, and there is no difference on 3.5 for this kind of network
load.
> As far as I know, __netdev_alloc_frag may be introduced in v3.5, so
> I'm just confused.
> Does this test use __netdev_alloc_skb with "__GFP_WAIT | GFP_DMA"?
>
> Does normal workload for network use __netdev_alloc_skb with
> "__GFP_WAIT | GFP_DMA"?
>
Not especially.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists