* Re: [PATCH net-next V2 05/11] net/mlx5e: Support RX multi-packet WQE (Striding RQ)
[not found] ` <1460989033.10638.120.camel@edumazet-glaptop3.roam.corp.google.com>
@ 2016-04-19 16:25 ` Jesper Dangaard Brouer
2016-04-19 17:39 ` Mel Gorman
2016-04-19 18:30 ` Saeed Mahameed
0 siblings, 2 replies; 4+ messages in thread
From: Jesper Dangaard Brouer @ 2016-04-19 16:25 UTC (permalink / raw)
To: Eric Dumazet
Cc: brouer, Saeed Mahameed, Saeed Mahameed, David S. Miller,
Linux Netdev List, Or Gerlitz, Tal Alon, Tariq Toukan,
Eran Ben Elisha, Achiad Shochat, Mel Gorman, linux-mm
On Mon, 18 Apr 2016 07:17:13 -0700
Eric Dumazet <eric.dumazet@gmail.com> wrote:
> On Mon, 2016-04-18 at 16:05 +0300, Saeed Mahameed wrote:
> > On Mon, Apr 18, 2016 at 3:48 PM, Eric Dumazet <eric.dumazet@gmail.com> wrote:
> > > On Sun, 2016-04-17 at 17:29 -0700, Eric Dumazet wrote:
> > >
> > >>
> > >> If really you need to allocate physically contiguous memory, have you
> > >> considered converting the order-5 pages into 32 order-0 ones ?
> > >
> > > Search for split_page() call sites for examples.
> > >
> > >
> >
> > Thanks Eric, we are already evaluating split_page as we speak.
> >
> > We did look but could not find any specific alloc_pages API that
> > allocates many physically contiguous pages with order0 ! so we assume
> > it is ok to use split_page.
>
> Note: I have no idea of split_page() performance :
Maybe Mel knows? And maybe Mel have an opinion about if this is a good
or bad approach, e.g. will this approach stress the page allocator in a
bad way?
> Buddy page allocator has to aggregate pages into order-5, then we would
> undo the work, touching 32 cache lines.
>
> You might first benchmark a simple loop doing
>
> loop 10,000,000 times
> Order-5 allocation
> split into 32 order-0
> free 32 pages
>
>
> Another idea would be to have a way to control max number of order-5
> pages that a port would be using.
>
> Since driver always own a ref on a order-5 pages, idea would be to
> maintain a circular ring of up to XXX such pages, so that we can detect
> an abnormal use and fallback to order-0 immediately.
That is part of my idea with my page-pool proposal. In the page-pool I
want to have some watermark counter that can block/stop the OOM issue at
this RX ring level.
See slide 12 of presentation:
http://people.netfilter.org/hawk/presentations/MM-summit2016/generic_page_pool_mm_summit2016.pdf
--
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
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH net-next V2 05/11] net/mlx5e: Support RX multi-packet WQE (Striding RQ)
2016-04-19 16:25 ` [PATCH net-next V2 05/11] net/mlx5e: Support RX multi-packet WQE (Striding RQ) Jesper Dangaard Brouer
@ 2016-04-19 17:39 ` Mel Gorman
2016-04-20 16:46 ` Saeed Mahameed
2016-04-19 18:30 ` Saeed Mahameed
1 sibling, 1 reply; 4+ messages in thread
From: Mel Gorman @ 2016-04-19 17:39 UTC (permalink / raw)
To: Jesper Dangaard Brouer
Cc: Eric Dumazet, Saeed Mahameed, Saeed Mahameed, David S. Miller,
Linux Netdev List, Or Gerlitz, Tal Alon, Tariq Toukan,
Eran Ben Elisha, Achiad Shochat, linux-mm
On Tue, Apr 19, 2016 at 06:25:32PM +0200, Jesper Dangaard Brouer wrote:
> On Mon, 18 Apr 2016 07:17:13 -0700
> Eric Dumazet <eric.dumazet@gmail.com> wrote:
>
> > On Mon, 2016-04-18 at 16:05 +0300, Saeed Mahameed wrote:
> > > On Mon, Apr 18, 2016 at 3:48 PM, Eric Dumazet <eric.dumazet@gmail.com> wrote:
> > > > On Sun, 2016-04-17 at 17:29 -0700, Eric Dumazet wrote:
> > > >
> > > >>
> > > >> If really you need to allocate physically contiguous memory, have you
> > > >> considered converting the order-5 pages into 32 order-0 ones ?
> > > >
> > > > Search for split_page() call sites for examples.
> > > >
> > > >
> > >
> > > Thanks Eric, we are already evaluating split_page as we speak.
> > >
> > > We did look but could not find any specific alloc_pages API that
alloc_pages_exact()
> > > allocates many physically contiguous pages with order0 ! so we assume
> > > it is ok to use split_page.
> >
> > Note: I have no idea of split_page() performance :
>
> Maybe Mel knows?
Irrelevant in comparison to the cost of allocating an order-5 pages if
one is not already available.
> And maybe Mel have an opinion about if this is a good
> or bad approach, e.g. will this approach stress the page allocator in a
> bad way?
>
It'll contend on the zone lock minimally but again, irrelevant in
comparison to having to reclaim/compact an order-5 page if one is not
already free.
It'll appear to work well in benchmarks and then fall apart when the
system is running for long enough.
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH net-next V2 05/11] net/mlx5e: Support RX multi-packet WQE (Striding RQ)
2016-04-19 16:25 ` [PATCH net-next V2 05/11] net/mlx5e: Support RX multi-packet WQE (Striding RQ) Jesper Dangaard Brouer
2016-04-19 17:39 ` Mel Gorman
@ 2016-04-19 18:30 ` Saeed Mahameed
1 sibling, 0 replies; 4+ messages in thread
From: Saeed Mahameed @ 2016-04-19 18:30 UTC (permalink / raw)
To: Jesper Dangaard Brouer
Cc: Eric Dumazet, Saeed Mahameed, David S. Miller, Linux Netdev List,
Or Gerlitz, Tal Alon, Tariq Toukan, Eran Ben Elisha,
Achiad Shochat, Mel Gorman, linux-mm
On Tue, Apr 19, 2016 at 7:25 PM, Jesper Dangaard Brouer
<brouer@redhat.com> wrote:
> On Mon, 18 Apr 2016 07:17:13 -0700
> Eric Dumazet <eric.dumazet@gmail.com> wrote:
>
>> Another idea would be to have a way to control max number of order-5
>> pages that a port would be using.
>>
>> Since driver always own a ref on a order-5 pages, idea would be to
>> maintain a circular ring of up to XXX such pages, so that we can detect
>> an abnormal use and fallback to order-0 immediately.
>
> That is part of my idea with my page-pool proposal. In the page-pool I
> want to have some watermark counter that can block/stop the OOM issue at
> this RX ring level.
>
> See slide 12 of presentation:
> http://people.netfilter.org/hawk/presentations/MM-summit2016/generic_page_pool_mm_summit2016.pdf
>
Cool Idea guys, and we already tested our own version of it,
we tried to recycle our own driver pages but we saw that the stack
took too long to release them, we had to work with 2X and sometimes 4X
pages pool per ring to be able to reuse recycled pages on every RX
packet on 50Gb line rate, but we dropped the Idea since 2X is too
much.
but definitely, this is the best way to go for all drivers, reusing
already dma mapped pages and significantly reducing dma operations for
the driver is a big win !
we are still considering such option as future optimization.
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH net-next V2 05/11] net/mlx5e: Support RX multi-packet WQE (Striding RQ)
2016-04-19 17:39 ` Mel Gorman
@ 2016-04-20 16:46 ` Saeed Mahameed
0 siblings, 0 replies; 4+ messages in thread
From: Saeed Mahameed @ 2016-04-20 16:46 UTC (permalink / raw)
To: Mel Gorman
Cc: Jesper Dangaard Brouer, Eric Dumazet, Saeed Mahameed,
David S. Miller, Linux Netdev List, Or Gerlitz, Tal Alon,
Tariq Toukan, Eran Ben Elisha, Achiad Shochat, linux-mm
On Tue, Apr 19, 2016 at 8:39 PM, Mel Gorman <mgorman@techsingularity.net> wrote:
> On Tue, Apr 19, 2016 at 06:25:32PM +0200, Jesper Dangaard Brouer wrote:
>> On Mon, 18 Apr 2016 07:17:13 -0700
>> Eric Dumazet <eric.dumazet@gmail.com> wrote:
>>
>
> alloc_pages_exact()
>
We want to allocate 32 order-0 physically contiguous pages and to free
each one of them individually.
the documentation states "Memory allocated by this function must be
released by free_pages_exact()"
Also it returns a pointer to the memory and we need pointers to pages.
>> > > allocates many physically contiguous pages with order0 ! so we assume
>> > > it is ok to use split_page.
>> >
>> > Note: I have no idea of split_page() performance :
>>
>> Maybe Mel knows?
>
> Irrelevant in comparison to the cost of allocating an order-5 pages if
> one is not already available.
>
we still allocate order-5 pages but now we split them to 32 order-0 pages.
the split adds extra few cpu cycles but it is lookless and
straightforward, and it does the job in terms of better memory
utilization.
now in scenarios where small packets can hold a ref on pages for too
long they would hold a ref on order-0 pages rather than order-5.
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2016-04-20 16:46 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <1460928725-18741-1-git-send-email-saeedm@mellanox.com>
[not found] ` <1460928725-18741-6-git-send-email-saeedm@mellanox.com>
[not found] ` <1460939371.10638.97.camel@edumazet-glaptop3.roam.corp.google.com>
[not found] ` <1460983695.10638.113.camel@edumazet-glaptop3.roam.corp.google.com>
[not found] ` <CALzJLG_W9SkgMBQp86P0WDknw4Kc=DCBrvpPemAUbRX=r4r8Yg@mail.gmail.com>
[not found] ` <1460989033.10638.120.camel@edumazet-glaptop3.roam.corp.google.com>
2016-04-19 16:25 ` [PATCH net-next V2 05/11] net/mlx5e: Support RX multi-packet WQE (Striding RQ) Jesper Dangaard Brouer
2016-04-19 17:39 ` Mel Gorman
2016-04-20 16:46 ` Saeed Mahameed
2016-04-19 18:30 ` Saeed Mahameed
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox