我正在使用基于Linux 2.6.32版的设备 该设备包括一个通过USB与设备处理器通信的模块。
我在lte网络中的远程设备和通过以太网或USB连接到我的设备的PC之间运行繁重的tcp / udp双向iperf流量。
设备的CPU达到100%。 irq + sirq达到90%以上。 由于设备一直忙于数据,因此任何正在运行的任务几乎都没有机会获得CPU时间。
过了一段时间,在几分钟到几个小时之间,iperf卡住了,交通停止了。 当PC通过USB而不是以太网连接到设备时,问题主要发生。 而且当使用TCP流量而不是UDP时。
我尝试了几项限制流量或改善行为的方法,包括:
他们都没有给出显着的结果。
我目前的调查是更改内核USB驱动程序的代码,以限制流量和免费资源。 当给定标准发生时,方法是丢弃数据包:即CPU或中断数达到给定阈值。
更改将在使用的标准USB驱动程序中完成
这个选项看起来可行吗?我对内核USB驱动程序知之甚少,如果您有任何帮助或建议,我将不胜感激。