• Saeed Mahameed's avatar
    page_pool: Don't recycle non-reusable pages · d5394610
    Saeed Mahameed authored
    A page is NOT reusable when at least one of the following is true:
    1) allocated when system was under some pressure. (page_is_pfmemalloc)
    2) belongs to a different NUMA node than pool->p.nid.
    
    To update pool->p.nid users should call page_pool_update_nid().
    
    Holding on to such pages in the pool will hurt the consumer performance
    when the pool migrates to a different numa node.
    
    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   | 3.5 Mpps  | 4  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.
    
    The impact of adding a check per page is very negligible, and shows no
    performance degradation whatsoever, also functionality wise it seems more
    correct and more robust for page pool to verify when pages should be
    recycled, since page pool can't guarantee where pages are coming from.
    Signed-off-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
    Acked-by: default avatarJonathan Lemon <jonathan.lemon@gmail.com>
    Reviewed-by: default avatarIlias Apalodimas <ilias.apalodimas@linaro.org>
    Acked-by: default avatarJesper Dangaard Brouer <brouer@redhat.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    d5394610
page_pool.c 11.9 KB