我一直在阅读Linux的性能调优,以便在接收金融市场数据时获得最快的数据包处理时间。我看到,当网卡接收到一个数据包时,它会通过DMA将其放入内存中,然后引发一个HardIRQ --这反过来会设置一些NAPI设置并引发一个SoftIRQ。然后,SoftIRQ使用NAPI/设备驱动程序通过轮询从RX缓冲区读取数据,但这只运行一段有限的时间(net.core.netdev_budget,默认为300个数据包)。这些是指运行ubuntu的真正服务器,其中有一个太阳光NIC,我的问题如下:
如果每个HardIRQ引发一个SoftIRQ,而设备驱动程序在1 go (netdev_budget)中读取多个数
我有一个定制的嵌入式linux板,带有一个通过USB连接的lan7500i-ABZJ。
因此,我使用内置的smsc75xx模块编译了linux内核(使用buildroot)。启动内核消息确实显示:
[ 5.315124] usb 1-1: New USB device found, idVendor=0424, idProduct=7500, bcdDevice= 2.00
[ 5.324072] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[ 5.340746]