关于以太网调速方面的学习心得(CPU和网卡方面的)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
首先是对计算机内部有了一些了解。对于一台电脑而言,是有一个CPU,但是可能有2个核(既处理器)或是4个核。而2个核或4个核都是在一个CPU上的。如果打开任务管理器查看性能里显示的CPU的占用率指的是所有核的占用率相加的结果。对于我的电脑而言,如果CPU的占用率已经达到50%,说明相当于一个核已经完全被使用,这就已经达到了CPU 的使用率的一个极限(当然也有可能高于50%)。
之所以CPU在执行一个进程的时候占用率不是保持恒定的数据,是因为,一个进程中会或多或少的有系统调用在其中,而系统调用是不占用CPU的,但是CPU的处理方式是流水方式,有很多时候CPU要等待系统调用完成后才能进行进程中的下一步动作。对于这次用WINPCAP通过以太网传数据,由于WINPCAP和PACKET库中的函数在调用时可能耗费的时间过多导致CPU的占用率过低(函数调用慢一方面可能是WINPCAP和PACKET库本身函数调用时间就很长,另一方面可能是操作系统的问题,性能不太好的操作系统做一次同样的系统调用可能比好的操作系统更费时)。由于CPU的使用率降低了,说明处理速度就会变慢,这样就导致网卡一直在等待CPU处理完一个数据包才能传一个数据包,所以这也就是网络利用率低的原因。
有时,以太网传输速率慢还可能是网卡的原因。一是:由于网络通信的双方都是要通过网卡来相互传输数据的。所以如果双方的网卡不匹配也可能导致传输速率上不去。不匹配的方面有很多种情况,例如:一方的网卡最多支持100Mbps,而另一方可支持1000Mbps,这样在传输是可能为在任务管理器中的联网窗口显示出已断开,如果能连上最多也只能到100Mbps(这也是理想状态下,实际上也少)。判断是不是网卡的问题。可以通过编写程序(最好是只过链路层和物理层)不停传送数据,开不同的进程加大CPU的占用率,尽量让CPU的占用率达到最大,然后看网络占用率,最大能达到多少,如果最大值超过要求值说明单是网卡是可以满足性能要求的,说明网卡没有问题,是其他部分的问题。
TIPS: 如果传输的数据量很小(例如16MB就很小)就算系统调用很快,CPU使用率很高,网卡性能符合要求,也可能传输速率不高,因为在将数据传出前首先要填满缓冲(具体是哪里的缓冲不太清楚)如果所要传输的数据量比较小时,填满缓冲就要一定的时间这样的话就要花费很长的时间。