BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / windows / #20383同步于 2006/3/18
Windows机器人发帖

【原创】【经验分享】强制DMA模式

robin2046
2006/3/18镜像同步0 回复
本子老了,快用了三年,最近发现刚刚装好的系统,过2天就开始反应迟钝,一直以为是内存不够的问题,可是昨天晚上用TotalCommander测试从D盘往E盘拖拽文件的速度只有 19XX KBytes/S,而旁边一台机器的速度达到9XXX KBytes/S,说明性能的瓶颈在硬盘,于是开始好好思考这个问题。后来发现Windows强制关闭了DMA模式,而且强制设置磁盘传输模式为PIO,不允许更改。为什么会这样呢?于是上网搜索,发现:在Windows 2000/XP/2003中有这样一个设定: Windows IDE/ATAPI 端口驱动程序 (Atapi.sys) 累积收到总共6个超时或循环冗余检验 (CRC) 错误后,驱动程序将把通信速度(传送模式)从最快的直接内存访问 (DMA) 模式分步骤降为较慢的 DMA 模式。如果驱动程序继续收到超时或 CRC 错误,则驱动程序最终将把传送模式降为最慢的模式(PIO 模式)。 问题就在这里!一般来说一个正常的硬盘很少会有超时或循环冗余检验 (CRC) 错误,但是当我们使用这些系统里的挂起(也有叫休眠)并恢复计算机后就很容易造成超时或循环冗余检验 (CRC) 错误。因为系统设定的超时值为4秒,当系统向 ATA 磁盘发出读取请求时如果硬盘回应时间超过 4 秒的超时值时才会产生超时或循环冗余检验 (CRC) 错误,但因为系统在挂起(也有叫休眠)时硬盘是在停转状态中,恢复计算机时硬盘有个从停止到运动的过程,这就很容易造成大部分硬盘回应时间超过 4 秒的超时值。也就是说当我们使用计算机挂起6次后系统就会把通信速度(传送模式)从最快的直接内存访问 (DMA) 模式分步骤降为较慢的 DMA 模式。如果挂起6次以上则驱动程序最终将把传送模式降为最慢的模式(PIO 模式)。这就是Windows 系统突然变慢的原因。 下面介绍如何强制固定硬盘的DMA模式,不让操作系统修改,从而使你的电脑一直保持在最佳状态。 1.首先,确定自己当前的传输模式。在设备管理器的“主要IDE通道”的高级选项卡上可以看见,如果不是UltraDMA模式,甚至可能已经被固定为PIO模式,则说明XP强制修改了你的传输模式。 2.卸载主要IDE通道的驱动程序,重新启动。如果重启后设备安装正确,则直接进入第3步,如果提示驱动程序有问题,没有正确安装,则找到C:\WINDOWS\Driver Cache\i386\driver.cab这个文件,从中解压缩出来一个atapi.sys,用这个驱动覆盖当前驱动C:\WINDOWS\system32\drivers\atapi.sys,重新更新IDE通道的驱动,选择自动安装就可以了。重启。【根据caomeiliang的经历,如果上述两个方法都不行,就请进入安全模式试试】 3.现在只是暂时恢复到了DMA模式,但是还有可能被强制设为PIO模式,解决的办法是:打开注册表编辑器 ,去“ HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96A-E325-11CE- BFC1-08002BE10318}\0001 ”,新建一个DWORD值,名称“ResetErrorCountersOnSuccess”,值设置为“1”,OK。 以上更改注册表的做法是为了在Windows中,使系统向 ATA 磁盘发出读取请求时的 4 秒的超时值更改为 10 秒。还实现了一种较不严格的变通策略以在发生超时错误和 CRC 错误时降低传送模式(从较快的 DMA 模式到较慢的 DMA 模式,最终降为 PIO 模式)。以前的情况是,在每当累积发生的超时错误或 CRC 错误的总数达到 6 次时,IDE/ATAPI 端口驱动程序 (Atapi.sys) 将降低传送模式。当我们建立以上注册表键值实现新的策略后,Atapi.sys 仅在连续发生 6 次超时错误或 CRC 错误后才降低传送模式。 这一新的策略实现后将大大降低系统降低或关闭DMA传送模式的机会。现在我们可以安心地使用挂起 系统和高性能的DMA硬盘模式,再也不会发生系统性能突然下降的情况了。
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。