On Mon, 2012-06-04 at 17:17 +0300, Michael S. Tsirkin wrote: > bnx2 and tg3 both do skb_reserve of at least NET_SKB_PAD > after build_skb. You are saying it's not a must? > 32 would be the minimum. NETS_SKB_PAD is using a cache line (64 bytes on most x86 current cpus) to avoid using half a cache line. > Hmm so maybe we should teach the hypervisor to write data > out at an offset. Interesting. > > Another question is about very small packets truesize. > build_skb sets truesize to frag_size but isn't > this too small? We keep the whole page around, no? We keep one page per cpu, at most. For example on MTU=1500 and PAGE_SIZE=4096, one page is splitted into two fragments, of 1500 + NET_SKB_PAD + align(shared_info), so its good enough (this is very close from 2048 'truesize') But yes, for some uses (wifi for example), we might use a full page per skb, yet underestimate skb->truesize. Hopefully we can track these uses and fix them. ath9k for example could be changed, to be able to reassemble up to 3 frags instead of 2 frags, ie extending what did commit 0d95521ea74735826cb2e28bebf6a07392c75bfa (ath9k: use split rx buffers to get rid of order-1 skb allocations) -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html