linux dma写磁盘,linux打开硬盘dma

在Linux下开启硬盘DMA

注意:/sbin/hdparm命令不支持SATA硬盘。

Linux下的32位I/O和DMA默认是关闭的。如果用的是16位I/O的话,就无法充分发挥电脑的性能。

如果要打开32位I/O和DMA,就需要以root身份进行设置。为了降低因出错而重启系统对文件系统的损害,最好以单用户模式进行。

首先,使用下面的命令检查硬盘驱动器的当前I/O情况:

[root@anima lwg]#

/sbin/hdparm -t /dev/hda

/dev/hda:

Timing buffered disk

reads: 8 MB

in 3.31 seconds = 2.42

MB/sec

[root@anima lwg]#

如果要显示当前I/O、DMA设置,可以分别使用下面的命令:

[root@anima lwg]#

/sbin/hdparm -c

/dev/hda (显示当前I/O设置)

/dev/hda:

IO_support = 0 (default

16-bit)

[root@anima lwg]# /sbin/hdparm -d

/dev/hda (显示当前DMA设置)

/dev/hda:

using_dma = 0

(off)

[root@anima lwg]#

通过上面的命令,已经知道现在32位I/O和DMA是关闭的,可以分别用下面的命令将其打开:

[root@anima lwg]#

/sbin/hdparm -c 1

/dev/hda (打开32位I/O)

/dev/hda:

setting 32-bit IO_support flag to 1

IO_support = 1

(32-bit)

[root@anima lwg]# /sbin/hdparm -d 1

/dev/hda (打开DMA)

/dev/hda:

setting using_dma to 1 (on)

using_dma = 1

(on)

[root@anima lwg]#

然后使用下面的命令使设置生效:

[root@anima lwg]#

/sbin/hdparm -k 1 /dev/hda

/dev/hda:

setting keep_settings to 1 (on)

keepsettings = 1 (on)

[root@anima lwg]#

好啦!现在再查看一下驱动器的I/O情况:

[root@anima lwg]#

/sbin/hdparm -t /dev/hda

/dev/hda:

Timing buffered disk reads: 116 MB in 3.03 seconds = 38.34

MB/sec

[root@anima lwg]#

可以看到,现在系统的I/O性能提高了很多。

但是,上面的设置只是对当前的系统有效,当再次重启系统时,又得重新设置了。

如果要使每次系统启动时都打开DMA,可以在/etc/rc.d/rc.local文件中添加上面的命令来实现:

[root@anima lwg]#

echo "/sbin/hdparm -c 1 -d 1 -k 1 /dev/hda"

>> /etc/rc.d/rc.local

[root@anima lwg]#

-------------------------------------------------------------------------------------------------------------------------

对于SATA硬盘:

-------------------------------------------------------------------------------------------------------------------------

[root@anima lwg]#

/sbin/hdparm -t /dev/sda

/dev/sda:

Timing buffered disk reads: 100 MB in 3.02 seconds = 33.11

MB/sec

[root@anima lwg]# /sbin/hdparm -c 1 -d 1 /dev/sda

/dev/sda:

setting 32-bit IO_support flag to 1

HDIO_SET_32BIT failed: Invalid argument

setting using_dma to 1 (on)

HDIO_SET_DMA failed: Inappropriate ioctl for device

IO_support = 0 (default

16-bit)

[root@anima lwg]#sudo hdparm -i /dev/sda

查看UDMA使用模式,带*号的为正在使用的模式

查看控制器:

---------------------------

[root@anima lwg]#

/sbin/lspci -v | grep IDE

00:0f.0 IDE interface: VIA Technologies, Inc. VIA VT6420 SATA RAID

Controller (rev 80) (prog-if 8f [Master SecP SecO PriP

PriO])

00:0f.1 IDE interface: VIA Technologies, Inc.

VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE (rev 06)

(prog-if 8a [Master SecP PriP])

[root@anima lwg]#

如果不打开内核的SATA选项,则不能使用SATA的DMA模式,否则使用/sbin/hdparm命令时会出错。

查看内核配置:

[root@anima lwg]#

cat /boot/config-2.6.9-42.0.10.EL | grep ATA

# CONFIG_X86_MCE_NONFATAL is not set

# ATA/ATAPI/MFM/RLL support

# CONFIG_BLK_DEV_IDE_SATA is not set

CONFIG_SCSI_SATA=y

CONFIG_SCSI_SATA_AHCI=m

CONFIG_SCSI_SATA_SVW=m

CONFIG_SCSI_ATA_PIIX=m

CONFIG_SCSI_SATA_MV=m

CONFIG_SCSI_SATA_NV=m

CONFIG_SCSI_SATA_QSTOR=mCONFIG_SCSI_SATA_PROMISE=m

CONFIG_SCSI_SATA_SX4=m

CONFIG_SCSI_SATA_SIL=m

CONFIG_SCSI_SATA_SIL24=m

CONFIG_SCSI_SATA_SIS=m

CONFIG_SCSI_SATA_ULI=m

CONFIG_SCSI_SATA_VIA=m

CONFIG_SCSI_SATA_VITESSE=m

CONFIG_SCSI_SATA_INTEL_COMBINED=y

# CONFIG_SCSI_EATA is not set

# CONFIG_SCSI_EATA_PIO is not set

# CONFIG_ATALK is not set

CONFIG_USB_STORAGE_DATAFAB=y

# CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set

# CONFIG_ATARI_PARTITION is not set

[root@anima lwg]#需要打开内核的如下两个选项:

CONFIG_SCSI_SATA=y

CONFIG_SCSI_ATA_PIIX=y

重新编译内核。

如果你的SATA为启动盘的话,可能需要把原来/boot/grub/grub.conf 和

/etc/fstab 中的hda更改为sda,其他的驱动器名称也可能需要进行更改。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值