-
2005-10-14
Improve Linux Network Packet Forward Performance - [工作学习]
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
Improve Linux Network Packet Forward Performance Jimsu,shanghai,10/14/2005 1,components: netfilter(kernel layer) libpcap(kernel->app) 2,technology: How to reduce interupt and system call(eg:copy)? 我们知道,中断是需要CPU参与的,如果报文过多,必定要消耗巨大的CPU资源,为了减少CPU消耗,建议采用DMA方式进行传输。 避免每个包文处理一次,可以积累多个包后处理。这可以在netif_rx_action里面设置配额(2.4以后实现了NAPI)。 内存池? 网卡驱动避免每次调用时分配sk_buffer,可以采用一个环状的缓存池,这样分配一次后就不用以后频繁分配内存了。 MMAP,NAPI,RTIRQ? MMAP只解决了内核空间和用户空间内存不需要拷贝的消费,能够提高一定的性能,但很有限。 NAPI是Intel epro 1000等系列网卡特有的特征,能较大提高网卡处理性能。 Device Polling? Queue Ring? Zero copy? 减少网卡缓存到app内存的多次拷贝消耗,用户程序可以直接访问这些缓存,从而减少了拷贝消耗,目前的很多网络系统都采用了此技术。 改进上层应用程序的性能,比如减少拷贝,优化搜索算法等。 普通32bit PCI总线的网卡实际工作频率可能是33MHZ,在一条这样的PCI总线往往无法达到线速性能,建议采用64bitPCI网卡,或者此采用PCI-Express(66MHZ,133MHZ都是64bit的PCI-X)。备注:服务器主板上往往集成的多个网卡,可能每个网卡的芯片组还不一样,比如有的是Intel82547,有的是intel82541,各自支持的总线也不一样。intel82547是csa总线,82541是32bPCI,82545,82546是64bPCI总线。broadcom5703,5705也是32bPCI网卡。 3,FreeBSD vs linux 2.6.x: FreeBSD is better than linux. Windows winpcap is better than Freebsd. 4. interface--> kernel --->user app In Linux, the most time consume is the first step(interface->kernel),the other is kernel to user app(System Call).
http://jimsu.yourblog.org/logs/456410.html
随机文章:
show一下自己的daily work log(图) 2007-12-06hibernate3的使用 2007-03-02agent toolkit想到的 2007-01-26Vxworks体验 2005-12-30Build your own linux system by yourself 2005-10-14
收藏到:Del.icio.us





