我正在阅读理解linux网络内部书和链接上Linux内核空间中的pdf网络数据包捕获
在主题9.2.2下的LinuxNetworkingInternational的理解中,给出了
处理输入帧的代码分为两部分:首先驱动程序将帧复制到内核可访问的输入队列中,然后内核处理它(通常将其传递给相关协议(如IP)的处理程序)。第一部分在中断上下文中执行,可以抢先执行第二部分。
现在查询是何时排定第二部分?谁安排他们?调用是在中断处理程序中进行的吗?在Linux内核空间的网络数据包捕获中,分组输入流描述为:-
When working in interrupt driven model, the n
我一直在阅读Linux的性能调优,以便在接收金融市场数据时获得最快的数据包处理时间。我看到,当网卡接收到一个数据包时,它会通过DMA将其放入内存中,然后引发一个HardIRQ --这反过来会设置一些NAPI设置并引发一个SoftIRQ。然后,SoftIRQ使用NAPI/设备驱动程序通过轮询从RX缓冲区读取数据,但这只运行一段有限的时间(net.core.netdev_budget,默认为300个数据包)。这些是指运行ubuntu的真正服务器,其中有一个太阳光NIC,我的问题如下:
如果每个HardIRQ引发一个SoftIRQ,而设备驱动程序在1 go (netdev_budget)中读取多
假设有一个端口映射的I/O设备,它在IRQ线路上任意生成中断。设备的挂起中断可以通过对特定寄存器的单个outb调用来清除。
此外,假设下面的中断处理程序通过request_irq分配给相关的IRQ行
irqreturn_t handler(int irq, void *data)
{
/* clear pending IRQ on device */
outb(0, CLEAR_IRQ_REGISTER_ADDR);
/* device may generate another IRQ at this point,
* but