Hdparm命令

 Hdparm命令

 
目� [�@示�[藏]
1 版�嗦�明
2 前言
3 安�b hdparm
4 取得磁碟�C�Y�
5 �y��b置
6 修改�b置�O定

6.1 �z查目前�O定
6.2 DMA 模式 -d
6.3 �鬏�模式 (PIO/SDMA/MDMA/UDMA) -X
6.4 32 位元 IO_SUPPORT -c
6.5 MultSect -m
6.6 unmaskirq -u
6.7 ��入快取 -W
6.8 �x取前� (Read-lookahead) -A
6.9 �A�x (Readahead) -a

7 �Υ� hdparm �x�
8 疑�y排解

8.1 hdparm -i 有�@示 UDMA 模式,但是�O定那��模式之後什�N都�]有�l生
8.2 我收到「Operation not supported」�e�`,�B基本的「hdparm -i」命令也一��

9 �⒖嘉募�
10 待撰
11 版�嗦�明

版�嗦�明

原文 URL: http://www.gentoo-wiki.com/HOWTO_Use_hdparm_to_improve_IDE_device_performance

版�嗦�明: 依照 Gentoo Wiki �定,原文�c此�g文皆�� GNU Free Documentation License 授�唷�

[ ��]

前言

Hdparm �@��工具是用�碓O定 IDE �b置的,包括如 DMA 模式、�鬏�模式�O定以及一些其他能改善硬碟及光碟�C效能的�O定。�@些�O定�A�O是�P�]的,您�����想要把他打�_。本指南也希望能提供 hdparm �O定方面最新的�Y�,�f明如何�z查你的硬碟支援哪些�O定,然後�x用最高可用的�O定。很多 hdparm 指南都直接�f�_�⑻囟�模式,像是「-X33」、「-c1」等等,但是�@些指南大多已��^�r了,�Y果反而有很多人不知道有新的�O定,直接就用上�f的。硬碟效 能提升,系�y整�w速度也���快;另外���也能解�Q DVD 播放跳格或是���太慢之�的���}。

安�b hdparm

首先�z查看有�]有�b hdparm,以 root 身份�入:

# hdparm -V

如果有安�b好,�����看到像是�@�拥馁Y�:

hdparm v5.7

不然就��收到�e�`�息:

bash: hdparm: command not found

如果�]有�b hdparm,就可以用�@��指令安�b:

# emerge hdparm

Emerge 完成之後再用上面的指令�y�一下看有�]有安�b成功。

取得磁碟�C�Y�

不同的磁碟�C能力有所不同,要做好�O定就需要先知道每�_磁碟�C能做到什�N程度。用下面�@��指令���就能取得�有的�Y�,�得把 hda 替�Q成你自己的磁碟�C:

# hdparm -i /dev/hda

Udev 系�y上可以用比�^易懂的�n名存取磁碟�C。 硬碟的�,把 # 替�Q成磁碟��:

# hdparm -i /dev/discs/disc#/disc

光碟�C的�:

# hdparm -i /dev/cdroms/cdrom#/cdrom

�����得到�似下面的�Y果:

/dev/hdd:

Model=WDC WD80EB-28CGH2, FwRev=24.84G24, SerialNo=WD-WMA9N7936819
Config={ HardSect NotMFM HdSw>15uSec SpinMotCtl Fixed DTR>5Mbs FmtGapReq }
RawCHS=15509/16/63, TrkSize=57600, SectSize=600, ECCbytes=40
BuffType=DualPortCache, BuffSize=768kB, MaxMultSect=16, MultSect=16
CurCHS=15509/16/63, CurSects=15633072, LBA=yes, LBAsects=15633072
IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
PIO modes: pio0 pio1 pio2 pio3 pio4
DMA modes: mdma0 mdma1 mdma2
UDMA modes: udma0 udma1 *udma2 udma3 udma4 udma5
AdvancedPM=no WriteCache=enabled
Drive conforms to: device does not report version:

* signifies the current active mode

每�� IDE 硬碟及光碟�C都做一次,特�e要注意的是 MaxMultSec 和 PIO/DMA/UDMA 等可用的最高模式。

�y��b置

Hdparm �群��M方便的�y速模式,可以看一下每���O定的速度差��。�M行�y�前建�h先�P�]所有可能影��Y果的程式。最好是�慕K端做,不要在 xorg 下用 xterm �砼堋�y�的指令如下,�得要把 X 替�Q成你的磁碟�C:

# hdparm -tT /dev/hdX

�����看到�似�@�拥�y速�Y果:

/dev/hdd:
Timing cached reads: 496 MB in 2.00 seconds = 247.42 MB/sec
Timing buffered disk reads: 60 MB in 3.03 seconds = 19.81 MB/sec

建�h先�y好所有磁碟�C�下�Y果,�@�釉O定完成之後才看得出�淼降仔�能改善了多少。

修改�b置�O定

警告:修改�O定有可能�p�挠搀w或致使系�y不�定。大多�档男麓诺��C���都�]有���},但是後果�自�。�]:�@些�O定重新�_�C就��重�O,所以�Q定好�O定之後�要再看後文,在�_�C�r就重新�O定。

�z查目前�O定

有些只要不指定���抵稻涂梢�z查目前的�O定。例如要看�F行 DMA 模式的�:

# hdparm -d /dev/hda

有些�t不能�@�N用,像是�鬏�模式 (-X) 就不���@示目前�O定而��直接把模式�w零,另外像是��入快取 (-W) �t是��要求�入�O定。一般�碚f只要用下面�@行指令就可以�@示磁碟�C的所有�O定:

# hdparm /dev/hda

�@示�Y果������似下面�@�樱�

/dev/hda:
multcount = 16 (on)
IO_support = 3 (32-bit w/sync)
unmaskirq = 1 (on)
using_dma = 1 (on)
keepsettings = 0 (off)
readonly = 0 (off)
readahead = 256 (on)
geometry = 15509/16/63, sectors = 8004132864, start = 0

或是如前述,用「hdparm -i」�@示�^�M�A的�O定,像是�鬏�模式等。

DMA 模式 -d

修改 DMA 模式有�r可能�系�y死��,�e忘�了!第一��要�⒂玫拇蠹染褪� DMA 模式了。DMA 模式很重要,例如要播放 DVD 或是���光碟片的�,就最好�_�� DVD-ROM/RW 的 DMA 模式,不然很可能播放��跳格,���速度一直拉不上去,甚至可能���失� R话愎獾��C和硬碟�_�� DMA 模式也很有�椭�,可以大幅提升速度,降低 CPU ��d。核心�e也要�入你的晶片�M的 DMA �x�;�@����w於「Device Drivers > ATA/ATAPI/MFM/RRL support」�目下,然後�x取你的晶片�M的�x�。

要�⒂醚b置的 DMA,�入:

# hdparm -d1 /dev/hda

一切�利的������看到:

/dev/hda:
setting using_dma to 1 (on)
using_dma = 1 (on)

再�砼芤幌�y速看看效能提升多少。

�鬏�模式 (PIO/SDMA/MDMA/UDMA) -X

其�� DMA �分成�捣N不同的�鬏�模式:PIO 1-4 (Programmed IO)、SDMA 0-2 (Single-word DMA)、MDMA 0-2 (Multi-word DMA) 以及 UDMA 0-5 (Ultra-DMA)。�O定用指令如下,把 ## 替�Q成想要的模式,hda 替�Q成要�O定的磁碟�C:

# hdparm -X## /dev/hda

一般�碚f�抵涤�高愈好,下表列出各�鬏�模式和���抵担�

  0 1 2 3 4 5
PIO 08 09 10 11 12
SDMA 16 17 18
MDMA 32 33 34
UDMA 64 65 66 67 68 69

例如要�O定 UDMA2 的�:

# hdparm -X66 /dev/hda

也可以用模式名�Q�O定:

# hdparm -X udma2 /dev/hda

�F在大多�档牡�磁���都�x用 UDMA 模式。�⒂�鬏�模式之後�绦小�hdparm -i」�_�J有�O定好。�O定好後再�y速看看。

32 位元 IO_SUPPORT -c

用 -c# ��悼梢栽O定 32 位元�出入支援。IO_Support �共有四���蛹�:

0 �A�O 16 位元
1 32 位元
2 16 位元
3 32 位元 + sync

可以的�大概�x用 3 或是 1 最好,�⒂� 3 的指令是:

# hdparm -c3 /dev/hda

�@���O定��改� PCI �R流排�鬏��Y料到控制器的方式,可以把流量加倍。

MultSect -m

�绦小�hdparm -i」的�r候�����看到一段 MaxMultSect。用 -m ��蛋� MultSect �O成�@���抵担�把 # 替�Q成你的 MaxMultSect:

# hdparm -m# /dev/hda

�@���O定控制�未� I/O 中����x取���磁�^。大多�敌碌�磁�C���都能用 MultSect 16,比�^�f的用 8。修改�@���O定之後���能�p少磁碟存取消耗的系�y�Y源,增加磁碟�l��。

unmaskirq -u

用下面指令可以�⒂� unmaskirq:

# hdparm -u1 /dev/hda

�⒂� unmasking 之後,磁碟中��r Linux 便可取消其他中�嗾谡郑��系�y同�r�M行�似的工作,���能提升系�y整�w反��。

��入快取 -W

下面指令可以�_���入快取:

# hdparm -W1 /dev/hda

�x取前� (Read-lookahead) -A

下面指令可以�_�⒆x取前�:

# hdparm -A1 /dev/hda

�A�x (Readahead) -a

�A�x�O定可以用下面指令修改:

# hdparm -a# /dev/hda

我的硬碟自�泳驮O在 256 了。

�Υ� hdparm �x�

�Q定好最佳 hdparm �O定之後,就要�� /etc/conf.d/hdparm �n案,下次重新�_�C之後才���d入�@些�O定。要用 nano ��器修改的�:

# nano /etc/conf.d/hdparm

��面�����如下:

�n案:/etc/conf.d/hdparm (�A�O)
# Copyright 1999-2004 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/sys-apps/hdparm/files/hdparm-conf.d.3,v 1.2 2004/09/06 02:17:08 swegener Exp $

# You can either set hdparm arguments for each drive using hdX_args,
# discX_args, cdromX_args and genericX_args, e.g.
#
# hda_args="-d1"
# disc1_args="-d1"
# cdrom0_args="-d1"

# or, you can set hdparm options for ALL drives using all_args, e.g.
#
# all_args="-d1"

如果你的磁碟�C大多都��使用相同的�O定,就修改 all_args 那一行 (��套用在所有磁碟�C上)。下面�例中,hda 和 hdb 是一般的硬碟,支援 UDMA-5,hdc 只支援 UDMA-2,hdd �t是光碟�C,�A�x只有 8,支援模式也只到 UDMA-0,另外�@是一般的光碟�C,不需要��入快取。

�n案:/etc/conf.d/hdparm (�例)
# Copyright 1999-2004 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/sys-apps/hdparm/files/hdparm-conf.d.3,v 1.2 2004/09/06 02:17:08 swegener Exp $

# You can either set hdparm arguments for each drive using hdX_args,
# discX_args, cdromX_args and genericX_args, e.g.
#
# hda_args="-d1"
# disc1_args="-d1"
# cdrom0_args="-d1"

# or, you can set hdparm options for ALL drives using all_args, e.g.
#
#all_args="-d1"
hda_args="-A1 -d1 -u1 -c3 -X69 -W 1 -m 16"
hdb_args="$hda_args"
hdc_args="-A1 -d1 -u1 -c3 -X66 -W 1 -m 16"
hdd_args="-A1 -d1 -u1 -c3 -X64 -m 16 -a 8"

最後在�_�C�r自��绦� hdparm:

# rc-update add hdparm boot

疑�y排解

hdparm -i 有�@示 UDMA 模式,但是�O定那��模式之後什�N都�]有�l生

�@最可能的原因就是主�C板不支援�@��模式所需要�^高 ATA 模式。如果你�_定你的主�C板有支援,�z查看看硬磁是否有�B接到正�_的 IDE 插槽。不同的 ATA �格插槽�T色��不一�印O卤砹谐龈� UDMA 模式和其 ATA 需求:

UDMA ATA
0 ATA 16
1 ATA24
2 ATA33
3 ATA44
4 ATA66
5 ATA100

我收到「Operation not supported」�e�`,�B基本的「hdparm -i」命令也一��

你大概是把 hdparm 用在 SATA 或是什�N奇怪的磁碟�C上了。Hdparm �� SATA 支援有限,但是�@�硬碟通常��自�釉O定使用最佳�x�。基本�Y� (不加 -i) 和�y速����是可以用。�y看看硬碟速度如何 (一般�碚f cached read ���有 1000mb 以上,buffered reads ���有 100mb 以上)。

�⒖嘉募�

  • hdparm �f明 (英文)
  • Linux 微�{指南 (英文) - http://www.laukas.com/knbase/linux_special/
  • LinuxDevCenter: 用 hdparm 加速 Linux (O’Reilly) (英文)- http://www.linuxdevcenter.com/pub/a/linux/2000/06/29/hdparm.html

待撰

  • 把�出�例�Q成未�O定的�A�O�出;�F在用的是已��{整�^的�O定。
  • 多加�P於各模式的�Y�以及可能�@得的改善
  • 一些�例速度,�f明差不多��有多大的改善

���}�c意��至 discussion �面。

版�嗦�明

原文 URL: http://www.gentoo-wiki.com/HOWTO_Use_hdparm_to_improve_IDE_device_performance

你可能感兴趣的:(hdparm)