On Mon, May 15, 2023 at 01:24:20PM +0200, Lorenzo Bianconi wrote: > > On 2023/5/12 21:08, Lorenzo Bianconi wrote: > > > In order to reduce page_pool memory footprint, rely on > > > page_pool_dev_alloc_frag routine and reduce buffer size > > > (VETH_PAGE_POOL_FRAG_SIZE) to PAGE_SIZE / 2 in order to consume one page > > > > Is there any performance improvement beside the memory saving? As it > > should reduce TLB miss, I wonder if the TLB miss reducing can even > > out the cost of the extra frag reference count handling for the > > frag support? > > reducing the requested headroom to 192 (from 256) we have a nice improvement in > the 1500B frame case while it is mostly the same in the case of paged skb > (e.g. MTU 8000B). Can you define 'nice improvement' ? ;) Show us numbers or improvement in %. > > > > > > for two 1500B frames. Reduce VETH_XDP_PACKET_HEADROOM to 192 from 256 > > > (XDP_PACKET_HEADROOM) to fit max_head_size in VETH_PAGE_POOL_FRAG_SIZE. > > > Please note, using default values (CONFIG_MAX_SKB_FRAGS=17), maximum > > > supported MTU is now reduced to 36350B. > > > > Maybe we don't need to limit the frag size to VETH_PAGE_POOL_FRAG_SIZE, > > and use different frag size depending on the mtu or packet size? > > > > Perhaps the page_pool_dev_alloc_frag() can be improved to return non-frag > > page if the requested frag size is larger than a specified size too. > > I will try to implement it if the above idea makes sense. > > > > since there are no significant differences between full page and fragmented page > implementation if the MTU is over the page boundary, does it worth to do so? > (at least for the veth use-case). > > Regards, > Lorenzo >