我对基于 MIPS 处理器和 Linux 2.6 的电路板有一个非常奇怪的问题。所有传入的以太网数据包都有 NIC 中断。如果我发送 10.000 个数据包,我可以看到发生了 10.000 个 NIC 中断。
START SYSTEM
SEND 10k PACKETS
/mnt/system # cat /proc/interrupts
CPU0
24: 10000 MIPS NIC
29: 7192 MIPS timer
30: 0 MIPS UART1
31: 3092 MIPS serial
ERR: 0
但是,在我打开和关闭文件系统中的文件(用零或常规填充)后,生成的 NIC 中断要少得多。例如,10k 个数据包只有 2-7k 次中断。它对系统性能有不利影响,但是在重新启动所有带有 NIC 中断的东西后又可以了。
START SYSTEM
std::fstream f;
f.open("/mnt/system/myfile");
f.close();
WAIT FOR SOME TIME
SEND 10k PACKETS
/mnt/system # cat /proc/interrupts
CPU0
24: 2045 MIPS NIC
29: 7192 MIPS timer
30: 0 MIPS UART1
31: 3092 MIPS serial
ERR: 0
文件系统是 jffs2,闪存驱动器是 32M NOR 串行设备。为什么读取文件会杀死 NIC 中断,直到重新启动?