国外专家揭秘Vista听歌网速变慢的原因
2007-09-02 16:37:33 来源:WEB开发网核心提示: 图(点击放大)不仅是其他线程的活动,媒体播放也能受到网络活动的影响,国外专家揭秘Vista听歌网速变慢的原因(2),当一个数据包到达系统,触发一个CPU中断,这个限制将扩大到8000包/秒,而三块网卡时则进一步扩大到6000包/秒,将会使网络设备的驱动程序执行一个中断服务程序 (ISR),
图(点击放大)
不仅是其他线程的活动,媒体播放也能受到网络活动的影响。当一个数据包到达系统,触发一个CPU中断,将会使网络设备的驱动程序执行一个中断服务程序 (ISR)。其它设备的中断请求在ISR运行时将被阻止,因此ISR通常用于执行一些设备记录并且在一个DPC(Deferred Procedure Call)中进行一些在一个更长的数据传输。当DPC在中断启用的状态被执行,它们将无视优先级而优先于任何线程,因此可能对媒体播放线程造成冲击。
而网络DPC的处理要求几乎是最高的,因为它将把数据包传送至TCP/IP驱动,这需要长时间的计算才能完成。TCP/IP驱动校验每个数据包、确定每个 包使用的协议、更新连接状态、寻找接收应用程序,并将接收到的数据复制到应用程序的缓冲区内。这一个ProCESs Explorer截图显示了当我将一个大文件复制到其它系统时,DPC的CPU占用率的上升。
图
在Vista开发时对MMCSS的测试中,发现即使增加线程优先级,大规模的网络传输也会使长时间运行的DPC影响到播放线程。因此MMCSS将会发送一条消息至NDIS驱动,使其每毫秒仅传输10个数据包(每秒1万个)。
标准以太网的帧大小大约为1500字节,1万个包每秒的限制使得速度被限制在15兆每秒左右。这对于百兆网络没有影响,但将会使千兆网络的性能下降到最大值的15%。
同时在NDIS的这段限制代码中,一个BUG将使得这种限制在多网卡的系统中放大。比如如果你有一台同时拥有有线和无线网卡的机器,这个限制将扩大到8000包/秒,而三块网卡时则进一步扩大到6000包/秒。这个限制此时在百兆网络上也显而易见。
更多精彩
赞助商链接