From: Eric Dumazet <eric.dumazet@gmail.com>
To: David Miller <davem@davemloft.net>
Cc: netdev@vger.kernel.org
Subject: Re: [PATCH net-next] niu: fix skb truesize underestimation
Date: Fri, 14 Oct 2011 20:27:04 +0200 [thread overview]
Message-ID: <1318616824.2525.12.camel@edumazet-laptop> (raw)
In-Reply-To: <20111014.003427.1515514811425011051.davem@davemloft.net>
Le vendredi 14 octobre 2011 à 00:34 -0400, David Miller a écrit :
>
> It would be pretty amazing for a leak of this magnitude to exist for
> so long. :-)
>
> A page can be split into multiple blocks, each block is some power
> of two in size.
>
> The chip splits up "blocks" into smaller (also power of two)
> fragments, and these fragments are what we en-tail to the SKBs.
>
> So at the top level we give the chip blocks. We try to make this
> equal to PAGE_SIZE. But if PAGE_SIZE is really large we limit the
> block size to 1 << 15. Note that it is only when we enforce this
> block size limit that the compount_page(page)->_count atomic increment
> will occur. As long as PAGE_SIZE <= 1 << 15, rbr_blocks_per_page
> will be 1.
>
> When the chip takes a block and starts using it, it decides which
> fragment size to use for that block. Once a fragment size has been
> choosen for a block, it will not change.
>
> The fragment sizes the chip can use is stored in rp->rbr_sizes[]. We
> always configure the chip to use 256 byte and 1024 byte blocks, then
> depending upon the MTU and the PAGE_SIZE we'll optionally enable other
> sizes such as 2048, 4096, and 8192.
>
> When we get an RX packet the descriptor tells us the DMA address
> and the fragment size in use for the block that the memory at
> DMA address belongs to.
>
> So the two seperate page reference count grabs you see are handling
> references for memory being chopped up at two different levels.
>
> I can't see how we could optimize the intra-block refcounts any
> further. Part of the problem is that we don't know apriori what
> fragment size the chip will use for a given block.
>
Thanks for taking the time to explain this David :)
prev parent reply other threads:[~2011-10-14 18:27 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-10-13 22:39 [PATCH net-next] niu: fix skb truesize underestimation Eric Dumazet
2011-10-14 2:26 ` David Miller
2011-10-14 3:33 ` Eric Dumazet
2011-10-14 4:34 ` David Miller
2011-10-14 18:27 ` Eric Dumazet [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1318616824.2525.12.camel@edumazet-laptop \
--to=eric.dumazet@gmail.com \
--cc=davem@davemloft.net \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox