On 21 Oct 2019, at 21:44, Saeed Mahameed wrote: > Hi Dave & Jesper, > > This series extends page pool API to allow page pool consumers to update > page pool numa node on the fly. This is required since on some systems, > rx rings irqs can migrate between numa nodes, due to irq balancer or user > defined scripts, current page pool has no way to know of such migration > and will keep allocating and holding on to pages from a wrong numa node, > which is bad for the consumer performance. > > 1) Add API to update numa node id of the page pool > Consumers will call this API to update the page pool numa node id. > > 2) Don't recycle non-reusable pages: > Page pool will check upon page return whether a page is suitable for > recycling or not. > 2.1) when it belongs to a different num node. > 2.2) when it was allocated under memory pressure. > > 3) mlx5 will use the new API to update page pool numa id on demand. > > The series is a joint work between me and Jonathan, we tested it and it > proved itself worthy to avoid page allocator bottlenecks and improve > packet rate and cpu utilization significantly for the described > scenarios above. > > Performance testing: > XDP drop/tx rate and TCP single/multi stream, on mlx5 driver > while migrating rx ring irq from close to far numa: > > mlx5 internal page cache was locally disabled to get pure page pool > results. > > CPU: Intel(R) Xeon(R) CPU E5-2603 v4 @ 1.70GHz > NIC: Mellanox Technologies MT27700 Family [ConnectX-4] (100G) > > XDP Drop/TX single core: > NUMA | XDP | Before | After > --------------------------------------- > Close | Drop | 11 Mpps | 10.9 Mpps > Far | Drop | 4.4 Mpps | 5.8 Mpps > > Close | TX | 6.5 Mpps | 6.5 Mpps > Far | TX | 4 Mpps | 3.5 Mpps > > Improvement is about 30% drop packet rate, 15% tx packet rate for numa > far test. > No degradation for numa close tests. > > TCP single/multi cpu/stream: > NUMA | #cpu | Before | After > -------------------------------------- > Close | 1 | 18 Gbps | 18 Gbps > Far | 1 | 15 Gbps | 18 Gbps > Close | 12 | 80 Gbps | 80 Gbps > Far | 12 | 68 Gbps | 80 Gbps > > In all test cases we see improvement for the far numa case, and no > impact on the close numa case.
These look good, thanks Saeed! -- Jonathan > > Thanks, > Saeed. > > --- > > Jonathan Lemon (1): > page_pool: Restructure __page_pool_put_page() > > Saeed Mahameed (3): > page_pool: Add API to update numa node > page_pool: Don't recycle non-reusable pages > net/mlx5e: Rx, Update page pool numa node when changed > > .../net/ethernet/mellanox/mlx5/core/en_rx.c | 3 ++ > include/net/page_pool.h | 7 +++ > include/trace/events/page_pool.h | 22 +++++++++ > net/core/page_pool.c | 46 +++++++++++++------ > 4 files changed, 65 insertions(+), 13 deletions(-) > > -- > 2.21.0