Hi, Thanks for your response very much. For the first, how to check if IOMMU enabled? I zcat the kernel config file. Does this mean IOMMU enabled?
# zcat /proc/config.gz |grep MMU CONFIG_MMU=y # CONFIG_CALGARY_IOMMU is not set # CONFIG_AMD_IOMMU is not set CONFIG_IOMMU_HELPER=y # CONFIG_IOMMU_API is not set CONFIG_MMU_NOTIFIER=y # CONFIG_IOMMU_STRESS is not set Second, in sending side, we're always using dev_alloc_skb to allocate a buffer that not more than 2K, so all packet data shall be in one page region. I'm not sure what the 'header' means in the sentence 'the header will have been copied out'? ------^_^------ Best Regards Liming -----Original Message----- From: ext Alexander Duyck [mailto:[email protected]] Sent: Tuesday, October 01, 2013 1:26 AM To: Yan, Liming (NSN - CN/Hangzhou) Cc: [email protected]; Chi, Xiaobo (NSN - CN/Hangzhou) Subject: Re: [E1000-devel] Query performance issue when using igb driver If you need linear buffers I would recommend using CONFIG_IGB_DISABLE_PACKET_SPLIT. The only time this would not provide higher performance in your case if your are running the driver on a system with an IOMMU enabled. Another option depending on your packet format might be to simply use the paged region as a linear buffer depending on what offset you need to access. The entire buffer should be present in the paged portion of the frame and the header will have been copied out. This actually provides higher performance on most systems due to the fact that the sk_buff is allocated locally for most sockets and as such doesn't incur as high an overhead in cache misses. Thanks, Alex On 09/26/2013 11:34 PM, Yan, Liming (NSN - CN/Hangzhou) wrote: > Hi, > When I use igb driver to receive Ethernet packets, I found even if I send > packet with only 1000 bytes length(MTU=1500), the received packets are > non-linear. So I have to use skb_linearize to make it linear again in my > module. Skb_linearize is a complicated process and there may be memory > copying there so I think this will decrease the performance much. I searched > network and found there's a macro 'CONFIG_IGB_DISABLE_PACKET_SPLIT' in igb > driver that can be defined to disable the non-linear feature. > Could anybody give comments for this? If I need linear buffer for > received packets, shall I always define ' CONFIG_IGB_DISABLE_PACKET_SPLIT' ? > Will this definition make my performance higher in my case? > > > # ethtool -i bi0 > driver: igb > version: 2.4.12 > firmware-version: 2.1-3 > > > ------------------------------------------------------------------------------ > October Webinars: Code for Performance > Free Intel webinars can help you accelerate application performance. > Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from > the latest Intel processors and coprocessors. See abstracts and register > > http://pubads.g.doubleclick.net/gampad/clk?id=60133471&iu=/4140/ostg.clktrk > _______________________________________________ > E1000-devel mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/e1000-devel > To learn more about Intel® Ethernet, visit > http://communities.intel.com/community/wired ------------------------------------------------------------------------------ October Webinars: Code for Performance Free Intel webinars can help you accelerate application performance. Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from the latest Intel processors and coprocessors. See abstracts and register > http://pubads.g.doubleclick.net/gampad/clk?id=60134071&iu=/4140/ostg.clktrk _______________________________________________ E1000-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/e1000-devel To learn more about Intel® Ethernet, visit http://communities.intel.com/community/wired
