LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1438|回复: 6

关于DMA的设定[附:hdparm常用方法及实例]

[复制链接]
发表于 2004-4-8 14:39:21 | 显示全部楼层 |阅读模式
我想在LINUX里把硬盘的DMA启动,我该怎么办呢?请详细告诉我
我是个菜鸟,谢谢
发表于 2004-4-8 14:48:39 | 显示全部楼层

  1. [root@home root]# hdparm -d1 /dev/hda

  2. /dev/hda:
  3. setting using_dma to 1 (on)
  4. using_dma    =  1 (on)
复制代码

呵呵,希望这位兄弟善用论坛的搜索工具,好吗?
其实新手遇到的很多问题都已经有了成熟的解决方法,值得兄弟去参考哦。

另外,与发行版本有关的问题请到相关版区发问,与基础有关的请到基础版区发问,这样做是为了更好地将问题归类分流,谢谢。
发表于 2004-4-8 18:27:31 | 显示全部楼层

IDE 磁盘性能调整及其测试方法

本文出自:http://www.freelamp.com 作者: 徐永久(albertxu@bigfoot.com) (2001-08-26 13:05:00)
本文通过使用hdparm 和 tune2fs 等工具对磁盘性能调整的介绍,引出了另外一个测试磁盘的工具 Bonnie。
一、磁盘性能的调整
很多人可能不知道 Linux 内核有几个开关可以打开 IDE 磁盘的32 位 DMA 通道来加快传输速度。在性能上能加快两倍,
几乎就和加一块磁盘镜像一样。

这些开关是几个命令的组合:

在PCI 总线上使用32 位 I/O :

# /sbin/hdparm -c 1 /dev/hda  

(在有些芯片集的主板上,可能需要使用 -c 3 参数)

打开 DMA 通道:
# /sbin/hdparm -d 1 /dev/hda  
(和内核是否支持主板芯片集,是否编译进去有关)

测试性能是否有改进:
# /sbin/hdparm -t /dev/hda  

如果性能有改进的话,就可以保存设置:

# /sbin/hdparm -k 1 /dev/hda  
内核会偶尔复位IDE 控制器,所以,如果没有保存的话,
先前的设置就丢失了,磁盘性能又回到了老地方。

另外还有一个 -m 参数用来改变每次硬盘中断时的传递扇区数。

一般的机器都安装了 hdparm ,如果没有的话,可以在下面的地址找到:

http://metalab.unc.edu/pub/Linux ... e/hdparm-3.5.tar.gz

用户报告在服务器上使用  
# /sbin/hdparm -c1 -d1 -k1 -m16 -a128 /dev/hda

命令可以得到最大性能。

而在笔记本电脑上是:
# /sbin/hdparm -c1 -d1 -k1 -m16 /dev/hda

需要注意的时,打开DMA 通道在某些硬盘上会有危险,因为这些磁盘在DMA 的设计上不是很好。幸运的是,大多数磁盘
还是可以使用这个方法来提升性能。如果你打开DMA 以后,经常碰到文件系统损坏的话,就要考虑不使用 DMA 了。

二、文件系统的调整
经常启动Linux 的人会知道,Linux 每当启动过一定次数后就会自动运行一个 fsck 程序,来检查文件系统。这个次数
可以通过命令:

# tune2fs -c my_times  

来调整。

tune2fs 是一个十分有用的工具,使用 -e 参数你可以指定文件系统遇到问题时应该怎样处理。详细的信息可以用

# man tune2fs

得到。

但是,不要在以读/写方式挂接的分区上运行 tune2fs。

三、磁盘速度测试

Bonnie 是一个用来测试文件系统性能的程序,使用方法为:

bonnie [-d dir] [-s size] [-html]

它往硬盘写入一个 100MB 的文件然后读出来测试磁盘性能。你可以用 -s 参数来调整这个文件的大小,单位是 MB。默认
的测试目录是当前目录,可以用 -d 参数改变。
-html 参数用来把结果以 HTML 格式输出。

例如:
# bonnie -d /home/tuneup -s 50
会测试目录 /home/tuneup 所在的文件系统读写 50MB 文件时的性能。

最新版本的 Bonnie 1.2 可以在以下网址下载:
ftp://ftp.linux.com/mounts/u3/mi ... e/bonnie-1.2.tar.gz
Linux下的硬盘提速方案
出处:
http://linuxdoor.home.chinaren.com 作者:panda (2001-05-16 14:57:30)




  目前很多朋友都用上了大容量的DMA或UDMA-33标准的硬盘。在微软的Windows98下为了使得DMA或UDMA-33标准的硬盘提高数据传输速率,可以在计算机的CMOS或操作系统中打开IDE硬盘的DMA(直接存储器存取)这项功能。但是在Linux平台中,Linux是不会自动的打开DMA模式,所以在Linux中使用这些IDE接口的UDMA-33标准的硬盘感觉数据传输远远没有在Windows中快。事实上,Linux平台中也可以通过软件来打开DMA模式,以下就是Linux下的硬盘提速的具体做法。  


  首先,在Linux下打开DMA模式之前,最重要的事情就是备份硬盘上的数据。因为在开启DMA模式之后谁也无法预料到硬盘是否还能正常工作,数据是否还完整。把Linux下所有的重要数据备份到其他硬盘或是CD-R等存储媒介上是最好的选择,请不要把数据备份在同一块硬盘上,更不能把数据备份到同一个硬盘分区。
第二步需要修改hdparm目录下的一些设备节点参数。但是修改这些参数必须以超级用户(ROOT)的身份登陆Linux系统才行。普通Linux用户没有这个权限修改hdparm目录下的东西。下面就是一个修改硬盘设备节点参数的例子,注意,不同型号,不同容量的硬盘可能列出的参数不太一样,但是修改的过程和方法大体上是一样的。  

# /sbin/hdparm /dev/hda
/dev/hda:
multcount = 0 (off)
I/O support = 0 (default 16-bit)
unmaskirq = 0 (off)
using_dma = 0 (off)
keepsettings = 0 (off)
nowerr = 0 (off)
readonly = 0 (off)
readahead = 8 (on)
geometry = 629/240/63, sectors = 9514260, start = 0
#  

  要注意的是,OFF代表此参数不起作用,ON表示打开此功能或模式。上面的参数列表写的非常清楚,Multcount(多扇区读) 没有打开;此硬盘格式为16位格式;DMA数据传输模式没有打开。很显然,这样的参数并没有使硬盘达到最佳的优化,没有能完全发挥当今高速IDE硬盘的性能。
为了优化硬盘,提高硬盘的数据传输速率,首先还是要了解以下这些参数的含义:  

c3 :就是把硬盘的16位格式转换为32位模式。
m16 :改变硬盘的多路扇区的读功能,-m16可以使得硬盘一次读入16个扇区的数据。但是不是所有的硬盘都支持这个功能。使用hdparm -i /dev/hda 可以察看您的硬盘最大能读写的扇区数目。
d1X34 在支持DMA-capable的硬盘中,这个参数可以支持双DMA通道的数据传输模式。
d1X66 在支持UDMA-capable的硬盘中,这个参数可以支持双DMA通道的数据传输模式。
  了解以上参数的作用和含义之后,现在请您仔细检查硬盘上面上的标签,看看您的硬盘是否支持DMA 或者 UDMA模式,然后才对照这些参数来优化您的硬盘,以防出现不可预见的错误。
优化硬盘的参数,也可以参考下面的例子,注意,不是所有的硬盘都适用一下的优化参数,请按照实际情况来设置参数:  


# hdparm -d1X66 -m16 -c3 /dev/hda
# hdparm /dev/hda
/dev/hda:
multcount = 16 (on)
I/O support = 3 (32-bit w/sync)
unmaskirq = 0 (off)
using_dma = 1 (on)
keepsettings = 0 (off)
nowerr = 0 (off)
readonly = 0 (off)
readahead = 8 (on)
geometry = 629/240/63, sectors = 9514260, start = 0  

  修改完这些参数之后,有时候并不能一次性把硬盘优化成功。如果在硬盘还在正常工作的时候修改这些数据,硬盘会进入"休眠"状态。这就需要等硬盘灯会熄灭,硬盘不处于繁忙状态下优化硬盘参数比较容易成功。  

  hdparm的改变是一个临时的状态,下次再次启动Linux系统的时候hdparm将会消失。所以要想永久的保存修改后的信息,就必须把修改后的参数和数据写入/etc/rc.d/rc.local或者/etc/rc.local文件,甚至比启动过程要早运行的程序中。  

  最后要提醒大家的是,如果您的主板的芯片组或Linux内核kernel(比如内核kernel版本过于陈旧,2.2版以前)如果不支持UDMA模式,那就没有必要去修改硬盘设备的参数了。升级主板或者kernel是解决这个问题的较好选择。
发表于 2004-4-9 20:21:00 | 显示全部楼层
有用,谢了
发表于 2004-4-10 10:37:27 | 显示全部楼层
对SCSI硬盘有效吗?
发表于 2004-4-10 12:37:36 | 显示全部楼层
最初由 cozo 发表
对SCSI硬盘有效吗?

手头没有SCSI设备,,不过看hdparm的说明,其中有一段描述:
对于没有给出指定的参数,对IDE设备默认使用-acdgkmnru等选项,
对SCSI设备,则默认只使用-gr选项.更详细的对SCSI的支持,可以参考SCSI设备的手册和man hdparm对SCSI的特殊说明~
发表于 2004-4-10 17:45:01 | 显示全部楼层
Mandrake里好象默认就是开启DMA的。
但是我的COMBO如何查看是否开启?它应该是接在“hdd”下。
但是应该又虚拟成SCSI设备了。我试着用hdparm /dev/scd0和hdparm /dev/hdd都不成啊,提示说不支持。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表