On 2023/5/15 19:24, 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). > >> >>> 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). Yes, as there is no significant differences between full page and fragmented page implementation, unifying the interface is trivial, I have sent a RFC for that. Using that interface may solve the supported mtu reducing problem at least. > > Regards, > Lorenzo >