Thread (3 messages) flat view 3 messages, 3 authors, 2017-01-24

Re: [PATCH net] net/mlx5e: Do not recycle pages from emergency reserve

From: Eric Dumazet <hidden>
Date: 2017-01-21 19:26:51

On Sat, 2017-01-21 at 20:12 +0100, kernel netdev wrote:

Den 21. jan. 2017 7.10 PM skrev "Tom Herbert" [off-list ref]:
        On Thu, Jan 19, 2017 at 11:14 AM, Saeed Mahameed
        [off-list ref] wrote:
        > On Thu, Jan 19, 2017 at 9:03 AM, Eric Dumazet
        [off-list ref] wrote:
        >> From: Eric Dumazet [off-list ref]
        >>
        >> A driver using dev_alloc_page() must not reuse a page
        allocated from
        >> emergency memory reserve.
        >>
        >> Otherwise all packets using this page will be immediately
        dropped,
        >> unless for very specific sockets having SOCK_MEMALLOC bit
        set.
        >>
        >> This issue might be hard to debug, because only a fraction
        of received
        >> packets would be dropped.
        >
        > Hi Eric,
        >
        > When you say reuse, you mean point to the same page from
        several SKBs ?
        >
        > Because in our page cache implementation we don't reuse
        pages that
        > already passed to the stack,
        > we just keep them in the page cache until the ref count drop
        back to
        > one, so we recycle them (i,e they will be re-used only when
        no one
        > else is using them).
        >
        
        Saeed,
        
        Speaking of the mlx page cache can we remove this or a least
        make it
        optional to use. It is another example of complex
        functionality being
        put into drivers that makes things like backports more
        complicated and
        provide at best some marginal value. In the case of the mlx5e
        cache
        code the results from pktgen really weren't very impressive in
        the
        first place. Also, the cache suffers from HOL blocking where
        we can
        block the whole cache due to an outstanding reference on just
        one page
        (something that you wouldn't see in pktgen but is likely to
        happen in
        real applications).


(Send from phone in car)


To Tom, have you measured the effect of this page cache? Before
claiming it is ineffective.


My previous measurements show approx 20℅ speedup on a UDP test with
delivery to remote CPU.
I find this a bit strange. When you have time (ie not while driving your
car or during week end) please give more details, for example on message
size. Was it before skb_condense() was added ?
Removing the cache would of cause be a good usecase for speeding up
the page allocator (PCP). Which Mel Gorman and me are working on.
AFAIK current page order0 cost 240 cycles. Mel have reduced til to
180, and without NUMA 150 cycles. And with bulking this can be
amortized to 80 cycles.


--Jesper

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help