• Jakub Kicinski's avatar
    ynl: samples: fix recycling rate calculation · 900b2801
    Jakub Kicinski authored
    Running the page-pool sample on production machines under moderate
    networking load shows recycling rate higher than 100%:
    
    $ page-pool
        eth0[2]	page pools: 14 (zombies: 0)
    		refs: 89088 bytes: 364904448 (refs: 0 bytes: 0)
    		recycling: 100.3% (alloc: 1392:2290247724 recycle: 469289484:1828235386)
    
    Note that outstanding refs (89088) == slow alloc * cache size (1392 * 64)
    which means this machine is recycling page pool pages perfectly, not
    a single page has been released.
    
    The extra 0.3% is because sample ignores allocations from the ptr_ring.
    Treat those the same as alloc_fast, the ring vs cache alloc is
    already captured accurately enough by recycling stats.
    
    With the fix:
    
    $ page-pool
        eth0[2]	page pools: 14 (zombies: 0)
    		refs: 89088 bytes: 364904448 (refs: 0 bytes: 0)
    		recycling: 100.0% (alloc: 1392:2331141604 recycle: 473625579:1857460661)
    Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    900b2801
page-pool.c 3.21 KB