`
Aga
  • 浏览: 218529 次
  • 性别: 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系统下用DMA方式传输数据" 在 Linux 系统中,使用 DMA 方式传输数据可以占用更少的 CPU 资源。 Linux 支持硬盘以 DMA 方式转输数据,但在安装 Red Hat 7.0 时关于 DMA 的默认选项是 Disable 的。下面将...

    linux操作系统( 课后习题答案).pdf

    ### Linux操作系统核心知识点详解 #### 一、Linux内核版本号构成 Linux内核版本号由三个部分组成:`Major.minor.patchlevel`。 - **Major(主版本号)**:表示内核的大版本更新,通常在一个较长时间段内保持稳定...

    Linux系统对ISA总线DMA的实现.rar

    Linux系统对ISA总线直接存储器访问(DMA)的实现是一项关键的技术,它允许外部设备在不通过CPU的情况下直接与内存进行数据交换,从而提高了系统的效率和响应速度。这篇文章将深入探讨Linux内核如何处理ISA总线上的...

    如何在Linux下用DMA的方式进行数据传输

    在Linux操作系统中,直接存储器访问(Direct Memory Access, DMA)是一种高效的数据传输方式,它允许硬件设备直接读写系统内存,而无需CPU介入。这种方式极大地减少了CPU的负担,尤其在处理大量数据传输任务时,如...

    Linux系统中DMA设备开发

    在Linux系统中,DMA(Direct Memory Access,直接内存访问)是一种高效的数据传输机制,它允许外部设备如硬盘、网络接口卡等直接与系统的内存进行数据交换,而不通过CPU。这大大减轻了CPU的工作负担,提高了系统的...

    最简单的嵌入式linux上的DMA驱动文件源代码和相应的应用测试案例源代码

    DMA驱动是操作系统内核的一部分,负责初始化和管理DMA控制器,设置数据传输的相关参数,如传输方向、数据宽度、地址等。在数据传输过程中,驱动会触发DMA控制器开始工作,并在传输完成后得到通知,以便进行后续处理...

    dma.rar_dma linux_linux dma

    在Linux操作系统中,DMA(Direct Memory Access,直接内存访问)是一种高效的数据传输机制,它允许硬件设备如硬盘、网络接口卡等直接与内存交互,而无需CPU介入。这对于提高系统性能,尤其是处理大量数据流的应用至...

    dma.rar_DMA linux_dma_dma linux_linux_采集

    在Linux嵌入式系统中,DMA(Direct Memory Access,直接内存访问)是一种高效的数据传输机制,它允许外部设备如硬盘、网络接口卡等直接与内存进行数据交换,而无需CPU的介入。这种方式大大减轻了CPU的负担,提高了...

    基于ARM9的嵌入式Linux系统移植.pdf

    交叉编译环境可以在PC机上直接安装Linux、在Windows下虚拟机上安装Linux、或是两台电脑,分别安装Windows操作系统和Linux操作系统。 知识点5:根文件系统 根文件系统rootfs.jffs2是Linux操作系统的基本组成部分,...

    在RedHat Linux下通过DMA传输数据

    在Red Hat Linux操作系统中,直接内存访问(Direct Memory Access,简称DMA)是一种高效的数据传输机制,它可以减轻CPU的负担,让硬盘等外部设备直接与内存交换数据,而无需CPU参与。在Red Hat 7.0的默认配置中,DMA...

    Linux内核DMA机制

    DMA的实现依赖于具体的系统硬件,不同的体系结构下,DMA传输方式和编程接口可能大相径庭。在Linux内核中,DMA的实现充分考虑到了不同架构的兼容性,提供了一套通用的框架来支持DMA操作。 #### 数据传输方式 DMA...

    浅析Linux文件系统管理.pdf

    Linux 文件系统是Linux操作系统的核心组成部分,负责组织和管理计算机中的数据存储。在Linux中,文件系统不仅是文件的集合,还包括设备、符号链接等对象。本文主要探讨了在Red Hat 9.0环境下Linux文件系统的管理,...

    操作系统内核实验(linux)

    操作系统内核实验是深入理解操作系统工作原理的重要途径,特别是在Linux环境下,通过实践可以更好地学习其设计思想和实现机制。Linux是一种广泛使用的开源操作系统,它的内核是系统的核心部分,负责管理硬件资源、...

    总结了各种操作系统,包括流行的windows系统、Mac OS(苹果系统)、linux系统

    本文主要探讨了三种广泛使用的操作系统——Linux、Mac OS(苹果系统)以及与之相关的POSIX标准,同时也涉及了DMA原理,这是一个在操作系统中用于高效数据传输的技术。 1. Linux系统: Linux是一种自由开放源码的类...

    如何提高Linux操作系统的运行速度

    在提高Linux操作系统的运行速度方面,我们可以采取一系列措施来优化硬件性能、调整应用程序优先级以及选择轻量级的桌面环境。以下将详细阐述这些方法。 首先,提升硬盘和光驱的数据传输性能是优化系统速度的关键...

    嵌入式Linux操作系统在PC104上的实现.pdf

    ### 嵌入式Linux操作系统在PC104上的实现 #### 一、引言 随着信息技术的迅速发展,嵌入式系统已经成为现代科技的重要组成部分。Linux作为一种免费且开源的操作系统,凭借其强大的功能和高度的灵活性,在嵌入式领域...

    如何将硬盘从PIO模式改成DMA模式?.docx

    硬盘DMA模式和PIO模式 DMA(Direct Memory Access,直接内存访问)是一种高速数据传输操作,允许外部设备和存储器之间直接读写数据,不需要CPU干预。整个数据传输操作在一个称为DMA控制器的控制下进行的。CPU除了在...

Global site tag (gtag.js) - Google Analytics