扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
PCI 等待时间方法
这与扭曲声音的问题有什么联系?唔,扭曲的声音是由于缺省的 PCI 等待时间设置,当运行 3D 加速时,V550 控制了 PCI 总线。这就是原因。V550 是 AGP 2X 卡,当关闭 AGP(以增加稳定性)后,到主存的卡的带宽减少了 75%!现在,当 V550 试图通过较慢的 PCI 总线获取与原来同样数量的数据时,几乎 100% 占用 PCI 总线,这是造成声音设备有问题的原因。由于音频设备的数据缓冲区通常较小,需要及时地将音频数据发送给它们以避免缓冲区欠载运行,因而它们特别易受 PCI 等待时间问题的影响。使用当前设置,V550 使用如此之多的 PCI 带宽,以至于没有留给声卡足够带宽用来传输数据,所以缓冲区欠载运行造成声音扭曲。
对于这个问题有两种可能的解决方案。第一种也是最明显的方案,使用 setpci 命令减少 V550 的 PCI 等待时间。这使得能够迅速地共享 PCI 总线,其它设备以较短的等待时间就可以传输它们的数据。我使用 setpci 命令来尝试这种解决方案,它起作用了。然而,我不准备采用这种方法,因为我想 最大化已经受到影响的 3D 图形性能,而不是进一步降低其性能。
我决定尝试第二种方案,该方案较之第一种,性能有所提高。不是减少 V550 PCI 总线等待时间,而是将所有设备的 PCI 等待时间都提高到相对较高的值 - 176(通常设备的缺省值大约是 32,除了 V550 缺省设为 200 以上)。然后,将对易受等待时间影响的设备的 PCI 总线等待时间设置成最大值 - 248。正如我希望的,声卡通过总线以相对较大的数据块突发传送数据,从而解决了这个问题。同时,其它设备也可以传输大块的数据,数据恰好小到不独占总线,大到能有效地使用总线。因为可以解决声音问题,同时又增加了机器 PCI 总线的有效带宽,所以我非常满意这种解决方案。下面是实现该诀窍的系统启动脚本摘录:
|
在第一行,-d *:* 选项告诉 setpci 将这个设置应用到所有 PCI 设备。latency_timer=b0 选项将计时器设置为 176("b0" 是 176 的十六进制表示。)。最后两行的 -s 选项指定按照 PCI 总线/插槽和功能而不是按厂商和设备 ID 来设 PCI 设备。也就是当您输入 lspci 命令时,列出的第一串数字。ff 值指定了等待时间计时器设置为 256,它会由 setpci 取整到 248。如果碰到相关 PCI 等待时间计时器相关问题,可以用 lspci 和 setpci 来尝试查找您系统的最优值。如果硬件能自己处理它,最好将计时器的值设置较大一些。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者