`
Aga
  • 浏览: 214171 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

Linux操作系统下如何开启硬盘DMA

阅读更多
一直在使用老的机器跑rhel5.2。始终觉得硬盘的io速度不够快。今天看的一篇文章讲到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]#

hdparm命令帮助:

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

hdparm - get/set hard disk parameters - version v5.7

Usage: hdparm [options] [device] ..

Options:

-a get/set fs readahead

-A set drive read-lookahead flag (0/1)

-b get/set bus state (0 == off, 1 == on, 2 == tristate)

-B set Advanced Power Management setting (1-255)

-c get/set IDE 32-bit IO setting

-C check IDE power mode status

-d get/set using_dma flag

--direct use O_DIRECT to bypass page cache for timings

-D enable/disable drive defect management

-E set cd-rom drive speed

-f flush buffer cache for device on exit

-g display drive geometry

-h display terse usage information

-i display drive identification

-I detailed/current information directly from drive

--Istdin reads identify data from stdin as ASCII hex

--Istdout writes identify data to stdout as ASCII hex

-k get/set keep_settings_over_reset flag (0/1)

-K set drive keep_features_over_reset flag (0/1)

-L set drive doorlock (0/1) (removable harddisks only)

-M get/set acoustic management (0-254, 128: quiet, 254: fast) (EXPERIMENTAL)

-m get/set multiple sector count

-n get/set ignore-write-errors flag (0/1)

-p set PIO mode on IDE interface chipset (0,1,2,3,4,...)

-P set drive prefetch count

-q change next setting quietly

-Q get/set DMA tagged-queuing depth (if supported)

-r get/set device readonly flag (DANGEROUS to set)

-R register an IDE interface (DANGEROUS)

-S set standby (spindown) timeout

-t perform device read timings

-T perform cache read timings

-u get/set unmaskirq flag (0/1)

-U un-register an IDE interface (DANGEROUS)

-v defaults; same as -mcudkrag for IDE drives

-V display program version and exit immediately

-w perform device reset (DANGEROUS)

-W set drive write-caching flag (0/1) (DANGEROUS)

-x tristate device for hotswap (0/1) (DANGEROUS)

-X set IDE xfer mode (DANGEROUS)

-y put IDE drive in standby mode

-Y put IDE drive to sleep

-Z disable Seagate auto-powersaving mode

-z re-read partition table

[root@anima lwg]#

关于硬盘DMA:

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

DMA传输模式:

“Ultra DMA Mode *(*为数字,DMA33为2, DMA66为4,DMA100为5、DMA133为6)”。Linux联盟收集整理。(T002)
分享到:
评论

相关推荐

    在Linux操作系统下如何开启硬盘DMA

    Linux下的32位I/O和DMA默认是关闭的。如果用的是16位I/O的话,就无法充分发挥电脑的性能。如果要打开32位I/O和DMA,就需要以root身份进行设置。为了降低因出错而重启系统对...文中介绍了在单模式下开启硬盘DMA的方法。

    Linux操作系统下的硬盘提速方案详解

    在微软的 Windows98下为了使得DMA或UDMA-33标准的硬盘提高数据传输速率,可以在计算机的CMOS或操作系统中打开IDE硬盘的DMA(直接存储器存取)这项功能。但是在Linux平台中,Linux是不会自动的打开DMA模式,所以在Linux...

    如何在Linux系统下用DMA方式传输数据

    我们都知道,使用DMA方式传输数据可以占用更少的CPU资源,因此与其它操作系统一样, Linux支持硬盘以DMA方式转输数据,本文介绍的方法无需编译内核,就可以激活DMA支持。

    Linux操作系统性能监测:CPU篇

    要想监测和理解 CPU 的性能需要知道一些的操作系统的基本知识,比如:中断、进程调度、进程上下文切换、可运行队列等。这里 VPSee 用个例子来简单介绍一下这些概念和他们的关系,CPU 很无辜,是个任劳任怨的打工仔,...

    在RedHat Linux下通过DMA传输数据

    我们都知道,使用DMA方式传输数据可以占用更少的CPU资源,因此与其它操作系统一样, Linux支持硬盘以DMA方式转输数据,但在安装Red Hat7.0时关于DMA的默认选项是Disable的,当然你可以在安装时就enable它。...

    os操作系统资料

    配置空间(中文).doc》(PCI总线控制说明)、《sata协议3..0_SATA_V3[1].0.pdf》(sata串口硬盘协议)、《USB2[1][1].0与OTG规范及开发指南(全中文).pdf》(USB控制协议)、《操作系统引导探究.pdf》(binghua)、《软盘控制...

    Linux编程--Linux内核

    1.2.2 什么是操作系统 11 1.2.3 内核数据结构 13 第2章 内存管理 15 2.1 虚拟内存抽象模型 15 2.1.1 请求调页 17 2.1.2 交换 17 2.1.3 共享虚拟内存 18 2.1.4 物理寻址模式和虚拟寻址模式 18 2.1.5 访问控制 18 2.2 ...

    《Linux从入门到精通》

    Linux操作系统入门书,比较全面 目录 0 前言 0.1 什么是Linux? 0.2 本手册概述 0.3 速查信息 0.4 从以前版本的Red Hat Linux升级 0.5 开发者的话 0.6 编者的话 1 Red Hat Linux 5.1新特性 1.1 安装性能的...

    Linux编程从入门到精通

    第1章 Linux操作系统 219 第2章 Linux内核 220 第3章 Linux libc包 221 第4章 系统调用 222 第5章 “瑞士军刀”:ioctl 223 第6章 Linux进程间通信 224 6.1 介绍 224 6.2 半双工Unix管道 224 6.2.1 基本概念 224 ...

    linux编程白皮书

    本书对Linux操作系统及其编程作了整体的介绍,以支持用于开发软件的公开源码模型。对内存管理、进程及其通信机制、PCI、内核模块编程及内核系统结构作了详细的解释,且附有很多程序代码实例。对深入研究Linux下的...

    Linux从入门到精通

    B.2 在类Linux-like操作系统下制作软盘 C 包清单 C.1 应用 C.1.1 通讯 C.1.2 数据库 C.1.3 编辑器 C.1.4 模拟器 C.1.5 工程 C.1.6 图形 C.1.7 邮件 C.1.8 数学 C.1.9 网络 C.1.10 新闻 C.1.11 项目 C....

    LINUX编程白皮书 (全集)

    第1章 Linux操作系统 219 第2章 Linux内核 220 第3章 Linux libc包 221 第4章 系统调用 222 第5章 “瑞士军刀”:ioctl 223 第6章 Linux进程间通信 224 6.1 介绍 224 6.2 半双工Unix管道 224 6.2.1 基本概念 224 ...

    2005详细介绍Linux从入门到精通

    B.2 在类Linux-like操作系统下制作软盘 C 包清单 C.1 应用 C.1.1 通讯 C.1.2 数据库 C.1.3 编辑器 C.1.4 模拟器 C.1.5 工程 C.1.6 图形 C.1.7 邮件 C.1.8 数学 C.1.9 网络 C.1.10 新闻 C.1.11 项目 C....

    linux从入门到精通.chm

    B.2 在类Linux-like操作系统下制作软盘 C 包清单 C.1 应用 C.1.1 通讯 C.1.2 数据库 C.1.3 编辑器 C.1.4 模拟器 C.1.5 工程 C.1.6 图形 C.1.7 邮件 C.1.8 数学 C.1.9 网络 C.1.10 新闻 C.1.11 项目 C....

    深入理解LINUX内核(第三版)

    为了彻底理解是什么使得Linux能...你将学习到哪些情况下Linux性能最佳,并且你将看到,在大量的不同环境里进行进程调度、文件存取和内存管理时它如何满足提供良好的系统响应的需要。这本书将帮助你充分利用Linux系统。

    Linux内核 内容很全

    硬件基础与软件基础 6 1.1 硬件基础 6 1.1.1 CPU 7 1.1.2 存储器 8 1.1.3 总线 8 1.1.4 控制器和外设 8 1.1.5 地址空间 9...语言 9 1.2.2 什么是操作系统 11 1.2.3 内核数据结构 13 第2章...

    深入分析Linux内核源码

    1.4.1 开发适合自己的操作系统 1.4.2 开发高水平软件 1.4.3 有助于计算机科学的教学和科研 1.5 Linux内核结构 1.5.1 Linux内核在整个操系统中的位置 1.5.2 Linux内核的作用 1.5.3 Linux内核的抽象结构 ...

    LINUX编程白皮书

    本书对Linux操作系统及其编程作了整体的介绍,以支持用于开发软件的公开源码模型。对内存管理、进程及其通信机制、PCI、内核模块编程及内核系统结构作了详细的解释,且附有很多程序代码实例。对深入研究Linux下的...

Global site tag (gtag.js) - Google Analytics