Rootop 服务器运维与web架构

开启硬盘的DMA模式

资料均来自网络

一、硬盘数据传输的方式

目前我们平常所用的硬盘IDE接口其标准称作Parallel ATA (Parallel Advance Technology,先进并行技术)。即其数据信号是通过并行线同时进行传输的,这种数据传输线包含了多条数据线(DMA33就有40线),所以我们见到的硬盘线都是又宽又扁的形状,导致用来连接储存设备和主板上的IDE接口时造成机箱内空间拥挤,严重妨碍了机箱内部空气流通,影响散热效果。由于数据信号是在多条数据线上同时传输(组成数据组),从而造成了一个信号等待的问题。即数据从硬盘一方出发,经过多条数据线传输,数据线1的信号到达后,数据线2还没有到达的话,必须等待数据线2的数据到达才能组成完整的数据信号进行校验和继续传输到主板上的其它设备。例如长跑时,运动员从同一出发点起跑,但到达的时间也有先有后,比赛是到最后一个运动员到达才能结束。这里可以把运动员比喻成数据,假如运动员中途退出,即数据的错误或丢失,那么整个数据组就必须重新传输。而DMA控制器是有差错控制的功能的,假如某一个数据在其允许等待时间内还没有到达,则会视之为失效,数据组重新传输。从这个角度分析就可以知道数据线不可能做得太长,数据线越长其信号到达的时间差越大,同时由于越长的数据线越容易受干扰,数据线越短相应的数据组到达的时间也越短,数据的传输速度也就越快了。这也是为什么DIYer追求使用短的数据线连接的原因。

DMA66的方式由于缩短了信号等待时间,对数据到达的时间差要求更严格.信号的延迟到达的原因是多方面的,其中最主要的原因是受到干扰。所以DMA66的数据线在DMA33使用40条数据线的基础上再加入40条地线,用来防止各数据线间的电磁干扰和机箱内其它的电磁干扰。DMA100的传输方式在DMA66的基础上再次缩短信号等待时间,从而提高数据传输速度,而拥有40条数据线,40条地线的硬盘线已经能满足数据传输的要求,我们对这种80线(40条数据线,40条地线)的硬盘线习惯称之为DMA66硬盘线。DMA100的工作模式下依然可以采用DMA66的硬盘线。,所以并没有所谓的DMA100硬盘线。

二、DMA的作用

DMA就是direct menmory access (直接储存器存取),其最大的好处是减轻CPU的负担,数据的一部分传输控制改为由DMA控制器控制,使得CPU的资源被释放出来,系统更有效率。这正是开启了硬盘的DMA模式后系统的速度能提升的原因之一,更是开发DMA技术的原来目的。

三、开启DMA模式下硬盘线该如何连接

这里的探讨假定为主板有两个IDE口,均支持MASTER和SLAVE(这符合大多数用户的使用情况)。在只有一个硬盘和一个光驱的时候,一般认为IDE1接硬盘(MASTER),IDE2接光驱(MASTER)连接方式较好,但是由于现在主板和硬盘对DMA模式的支持不一,而且多硬盘多光驱的也不乏其人,在这里也具体说明一下。

主板只支持DMA33模式:

1、有一个支持DMA33的硬盘和一个不支持DMA33,只支持PIO模式的光驱。

  DMA33硬盘  PIO光驱
 主板上的IDE接口选择  IDE1 IDE2
 设备主从跳线方式  MASTER  MASTER
 DMA模式  开启DMA33  不能开启

 

  这种接法可以避免较慢的光驱影响硬盘的速度和不能开启DMA模式。

2、有一个支持DMA33或以上的硬盘和支持DMA33的光驱。

   DMA33或以上硬盘  DMA光驱
 主板上的IDE接口选择  IDE1  IDE2  IDE1
 设备主从跳线方式  MASTER  MASTER  SLAVE
 DMA模式  开启DMA33  开启DMA33  开启DMA33

 

 这里为什么可以把光驱与硬盘一起使用同一条硬盘线呢?这主要得益于DMA模式,这种模式下,光驱的数据能够直接传输到硬盘而不用经过CPU,所以在光驱上复制文件到硬盘时的速度比把光驱接在IDE2上更快,各位可以在进行光盘上的克隆时感受到。只是当既要读硬盘数据又要读光盘的数据时(如某些游戏)会由于数据线的抢用导致减慢速度。两种接法就看你如何取舍了。

3、有一个DMA66或DMA100的硬盘,一个DMA33的硬盘和一个DMA光驱

   DMA66/100硬盘  DMA硬盘  DMA光驱
 主板上的IDE接口选择  IDE1  IDE2  IDE2
 设备主从跳线方式  MASTER  MASTER  SLAVE
 DMA模式  开启DMA33  开启DMA33  开启DMA33

 

4、有一个DMA66或DMA100的硬盘,一个DMA33的硬盘和一个PIO光驱

   DMA66/100硬盘  DMA硬盘  PIO光驱
 主板上的IDE接口选择  IDE1  IDE2  IDE2
 设备主从跳线方式  MASTER  MASTER  SLAVE
 DMA模式  开启DMA33  不能开启  不能开启

 

5、两个硬盘和两个光驱

   较快的硬盘  较慢的硬盘  较快的光驱  较慢的光驱
 主板上的IDE接口选择  IDE1  IDE1  IDE2  IDE2
 设备主从跳线方式  MASTER  SLAVE  MASTER  SLAVE
 DMA模式  以较慢的硬盘为准  以较慢的光驱为准

 

 此时如果两个硬盘的速度相差太远或一个支持DMA100,另一个支持DMA33,则较快的硬盘也只能以DMA33模式工作,会严重影响其性能的发挥。光驱也是同样道理。

主板支持DMA66模式:

1、有一个支持DMA66或DMA100的硬盘和一个支持DMA的光驱。

   DMA66/100硬盘  DMA光驱
 主板上的IDE接口选择  IDE1  IDE2  IDE1
 设备主从跳线方式  MASTER  MASTER  SLAVE
 DMA模式  开启DMA66  开启DMA33  开启DMA33

 

2、有一个支持DMA66或DMA100的硬盘、一个支持DMA的光驱和一个只支持PIO的光驱。

   DMA66/100硬盘  DMA光驱  PIO光驱
 主板上的IDE接口选择  IDE1  IDE2  IDE2
 设备主从跳线方式  MASTER  MASTER  SLAVE
 DMA模式  开启DMA66  不能开启  不能开启

 

3、一个DMA66/100硬盘、一个DMA33和一个DMA33硬盘和一个DMA光驱

   DMA66/100硬盘  DMA33硬盘  DMA光驱
 主板上的IDE接口选择  IDE1  IDE2  IDE2
 设备主从跳线方式  MASTER  MASTER  SLAVE
 DMA模式  开启DMA66  开启DMA33  开启DMA33

 

4、两个硬盘两个光驱

   较快的硬盘  较慢的硬盘  较快的光驱  较慢的光驱
 主板上的IDE接口选择  IDE1  IDE1  IDE2  IDE2
 设备主从跳线方式  MASTER  SLAVE  MASTER  SLAVE
 DMA模式  以较慢的硬盘为准  以较慢的光驱为准

 

 此时如果两个硬盘的速度相差太远或一个支持DMA100,另一个支持DMA33,则较快的硬盘也只能以DMA33模式工作,会严重影响其性能的发挥。光驱也是同样道理。

主板支持DMA100模式:

1、一个DMA33/66/100硬盘,一个DMA光驱

   DMA33/66/100硬盘  DMA光驱
 主板上的IDE接口选择  IDE1  IDE2
 设备主从跳线方式  MASTER  MASTER
 DMA模式  开启DMA33/66/100  开启DMA33

 

2、两个硬盘,一个DMA光驱

   较快的硬盘  较慢的硬盘  DMA光驱
 主板上的IDE接口选择  IDE1  IDE2  IDE2
 设备主从跳线方式  MASTER  MASTER  SLAVE
 DMA模式  开启(视硬盘支持)  开启DMA33  开启DMA33

 

3、两个硬盘,两个光驱

   较快的硬盘  较慢的硬盘  较快的光驱  较慢的光驱
 主板上的IDE接口选择  IDE1  IDE1  IDE2  IDE2
 设备主从跳线方式  MASTER  SLAVE  MASTER  SLAVE
 DMA模式  以较慢的硬盘为准  以较慢的光驱为准

 

 此时如果两个硬盘的速度相差太远或一个支持DMA100,另一个支持DMA33,则较快的硬盘也只能以DMA33模式工作,会严重影响其性能的发挥。光驱也是同样道理。

 以上列出的是常出现的硬件搭配应该使用的接线方式。实际上由于设备的多样性还会出现其它情况的,但接线时应当遵循以下原则:

1、 最快的设备2、 接在IDE1,3、 并作为MASTER。

4、 接在IDE1的SLAVE设备5、 不6、 能影响IDE1 MASTER设备7、 开启DMA模式。

8、 当IDE2有两个设备9、 时,10、 较快的应当接在MASTER

11、 数据线越短越好,12、 有特殊要求的除外

主板芯片组对DMA模式的支持情况:

  两大阵形的芯片组

 INTEL:440TX芯片组开始支持DMA33,之后有LX、BX;810系列中810-L只支持DMA33,其余支持DMA66;815系列中815只支持DMA66,其余的815E、815EP等支持DMA100,其后出的主板芯片组均支持DMA100。

 VIA:大约从VP2开始支持DMA33;南桥芯片从586A开始支持DMA66,其有596A,596B,686A等;从686B开始支持DMA100。

DMA的支持取决于主板的芯片组支持,并不能通过升级主板的BIOS来实现对高一级的DMA的支持。

如何开启DMA模式

相信这个问题是许多读者所关心的。首先从设备的方面来看,设备间要以主板为基准进行匹配。即硬盘的最高工作模式只能与主板支持的工作模式相同。而支持DMA100的硬盘出厂时也会有默认DMA66 或DMA100工作模式两种情况。以下是主板与硬盘各种工作模式相搭配时所能开启DMA的情况图示:

   DMA100主板  DMA66主板  DMA33主板
 DMA100硬盘 (DMA100模式)  开启DMA100  不能开启,工作于PIO MODE4  不能开启,工作于PIO MODE4
 DMA100硬盘 (DMA66模式)  开启DMA66  开启DMA66  不能开启,工作于PIO MODE4
 DMA100硬盘 (DMA33模式)  开启DMA33  开启DMA33  开启DMA33
 DMA66硬盘 (DMA66模式)  开启DMA66  开启DMA66  不能开启,工作于PIO MODE4
 DMA66硬盘 (DMA33模式)  开启DMA33  开启DMA33  开启DMA33
 DMA33硬盘 (DMA33模式)  开启DMA33  开启DMA33  开启DMA33

DMA66数据线的正确用法:蓝色的一头接主板,黑色的一头接硬盘,如果中间的灰色一头接有设备的话,在这条线上的设备最高只能以DMA33模式工作。

除了正确设定和连接硬件设备外,要使用DMA66或DMA100的模式还要安装主板驱动。如intel的810X就有ATA补丁,VIA的4in1补丁(主要是里面的IDE驱动起作用)。Intel系列的芯片组问题较少,只要安装了补丁之后都可以正常开启DMA模式。VIA的596A南桥开启DMA时可能会有麻烦,这与其成熟程度有关。但可以通过单独安装VIA的IDE BUSMASTER驱动和升级主板的BIOS来解决。切记一点是:硬件设备一定要正确设定和连接,否则即使安装了补丁也不能开启DMA模式。SIS的用户也请注意,SIS也有一个IDE补丁的,安装后能大幅提升系统性能。

Windows开启DMA模式:

        硬盘的DMA模式大家应该都知道了,硬盘的PATA模式有DMA33、DMA66、DMA100和DMA133,最新的SATA-150都出来了!一般来说现在大多数人用的还是PATA模式的硬盘,硬盘使用DMA模式相比以前的PIO模式传输的速度要快2~8倍。DMA模式的起用对系统的性能起到了实质的作用。 

  Windows 2000、XP、2003系统有时会自行关闭硬盘的DMA模式,自动改用PIO模式运行!这就造成在使用以上系统中硬盘性能突然下降,其中最明显的现象有:系统起动速度明显变慢,一般来说正常Windows XP系统启动时那个由左向右运动的滑条最多走2~4次系统就能启动,但这一问题发生时可能会走5~8次或更多!而且在运行系统时进行硬盘操作时明显感觉变慢,在运行一些大的软件时CPU占用率时常达到100%而产生停顿,玩一些大型3D游戏时(比如极品飞车)画面时有明显停顿(很多人这时以为是自己的显卡问题,当然如果你使用的是三年前的显卡玩这些游戏是有点老了,但如果你用的是今年才买的GF显卡那就不是它的问题了),出现以上问题时大家最好看看自己硬盘的DMA模式是不是被Windows 系统自行关闭了。

        查看自己的系统是否打开DMA模式:   

  1.双击“管理工具”,然后双击“计算机管理”;   

  2.单击“系统工具”,然后单击“设备管理器”;   

  3.展开“IDE ATA/ATAPI 控制器”节点;   

  4.双击您的“主要IDE控制器”;   

  5.点击“高级设置”。 

  看到“设备0”,下面的传输模式应设为“DMA(若可用)”,再下面“当前传输模式”,如果是“Ultra DMA Mode *(*为数字,DMA33为2,DMA66为4,DMA100为5、DMA133为6)”,那么你的系统正常,但如果以前你自己设的是“Ultra DMA Mode 6”又没有改动,而现在是“Ultra DMA Mode 4”或“Ultra DMA Mode 2”更或者是“PIO 模式”而且改不过来!可能就是系统自行关闭了DMA模式了。 
分析问题 

  好了,先来说说问题是如何产生的。在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或更快DMA的传送模式,请执行以下操作:   

  1.双击“管理工具”,然后双击“计算机管理”;   

  2.单击“系统工具”,然后单击“设备管理器”;   

  3.展开“IDE ATA/ATAPI 控制器”节点;   

  4.双击您要为其恢复典型 DMA 传送模式的控制器;   

  5.单击“驱动程序”选项卡;   

  6.单击“卸载”。   

  当此过程完成后,重新启动您的计算机。当 Windows 重新启动后,将重新枚举硬盘控制器,同时与该控制器相连的每个设备的传送模式将重置为默认值。  

Linux下开启方法:

现在使用的IDE硬盘基本支持DMA66/100/133(直接内存读取)但是Linux发行版本安装后一般没有打开,可以/etc/rc.d/rc.local 最後面加上一行: /sbin/hdparm -d1 –x66 -c3 -m16 /dev/hda 这样以后每次开机,硬盘的 DMA 就会开启,不必每次手动设定。添加前后你可以使用命令:hdparm -Tt /dev/hda 来测试对比一下。(本人没实际测试,建议大家测试后再用于生产)

原创文章,转载请注明。本文链接地址: https://www.rootop.org/pages/1164.html

作者:Venus

服务器运维与性能优化

评论已关闭。