虽然驱动版的出来到现在也有好多年了,不过一直不打算发布。原因还是当初那个:CPU没有达到1%以下。
前些时候无意中在MSDN看到NDIS里数据包分配的文档,感觉之前犯了个大错误:数据包资源每次都是按申请/发送/释放的流程。文档中提到数据包资源的重用而不必申请释放,可以减少开销。原以为找到了问题的关键,可以实现当初的愿望了。但经过一番测试,结果根本没有什么改善,让我更加纠结了。。。。我选择的是一台配置比较低的电脑上测试,CPU达到100%,网卡都无法满负荷,只有11万/秒。
但尽管如此,还是有不少令人难以费解的地方。在我打开浏览器Opera时,CPU的内核时间突然降到70%多,而流量则超多了13万每秒!令人诡异的事太多了。。。
对于1%以下的要求是否太苛刻了呢?个人认为不然。因为在6万-7万包每秒的时候,CPU根本不费一丝一毫!而超过这范围后开始升高。按理来说网卡有自己的芯片,发送又不需经过CPU处理,难道是网卡的驱动消耗了这些CPU?
之前有一次在一台双核2.8的CPU上测试,网卡满负载,CPU消耗还不到10%;而在4核的服务器上更是5%以下。在1G的网卡下,速度更是超过50万包/秒,CPU在30%左右。他们都有个共同点:网卡都是型号比较好的3Com,难道这和网卡硬件也有关系吗?我想肯定是有的,但软件上肯定还是有不少可以提升的空间。
要作为下一代的千兆网络攻击器,除了网卡性能上的提高,软件上的内耗还必须减少减少再减少。(2010/08/18)