Ключевые слова:linux, disk, ide, hdparm, tune, hdd, dma, (найти похожие документы)
From: Денис Смирнов <mithraen@freesource.info>
Newsgroups: http://freesource.info
Date: Mon, 4 Jul 2004 13:01:37 +0000 (UTC)
Subject: Тонкая настройка IDE дисков в Linux с помощью hdparm
Оригинал: http://freesource.info/article/5.shtml
Тонкая настройка IDE дисков с помощью hdparm
Введение
К сожалению настройки по-умолчанию для IDE жёстких дисков сделаны с
уклоном в надёжность работы, в том числе на некачественом
оборудовании. На большинстве же современных материнских плат и жёстких
дисков можно заметно увеличить производительность IDE подсистемы,
причём это не потребует много времени.
Характеристики IDE устройства
Для получения характеристик IDE устройства выполните команду:
"hdparm -i /dev/hda"
Вместо /dev/hda можно указать любое другое IDE устройство
Пример результата для HDD
/dev/hda:
Model=IC35L120AVVA07-0, FwRev=VA6OA52A, SerialNo=VNC602A6G9A19A
Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs }
RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=52
BuffType=DualPortCache, BuffSize=1863kB, MaxMultSect=16, MultSect=8
CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=66055248
IORDY=on/off, tPIO={min:240,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=yes: disabled (255) WriteCache=enabled
Drive conforms to: ATA/ATAPI-5 T13 1321D revision 1: 2 3 4 5
Пример результата для CD-RW
/dev/hdd:
Model=CD-W58E, FwRev=1.0A, SerialNo=
Config={ Fixed Removeable DTR<=5Mbs DTR>10Mbs nonMagnetic }
RawCHS=0/0/0, TrkSize=0, SectSize=0, ECCbytes=0
BuffType=unknown, BuffSize=0kB, MaxMultSect=0
(maybe): CurCHS=0/0/0, CurSects=0, LBA=yes, LBAsects=0
IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
PIO modes: pio0 pio1 pio2 pio3 pio4
DMA modes: sdma0 sdma1 sdma2 mdma0 mdma1 *mdma2
AdvancedPM=no
Расшифровка
* MaxMultSect: Это поле содержит максимальное число секторов, которое
ваш жесткий диск может прочитать за "один присест". * MultSect:
Текущая настройка количества секторов, считываемых за один раз. * PIO
modes и DMA modes: Здесь перечисляются режимы, которые поддерживает
жесткий диск. Режим, помеченный символом "звездочка" (*), является
текущим. * AdvancedPM: Признак 'yes' указывает на то, что жесткий диск
поддерживает APM (Advanced Power Management - Расширенное Управление
Питанием).
Запустив другую команду, вы получите дополнительную информацию:
darkstar:~$ hdparm /dev/hda
Результат работы команды: /dev/hda: multcount = 0 (on) I/O support = 0
(16-bit) unmaskirq = 0 (off) using_dma = 0 (off) keepsettings = 0
(off) nowerr = 0 (off) readonly = 0 (off) readahead = 8 (on) geometry
= 2482/255/63, sectors = 39876480, start = 0
Коротко... * multcount - число секторов, считываемых одновременно; *
I/O support - режим обмена с жестким диском (16/32/32sync); *
using_dma - указывает, используется ли в настоящий момент режим DMA
или нет; * keepsettings - указывает, сохраняются ли настройки после
программного сброса (изменять эту настройку не рекомендуется, если вы
не уверены в том, что делаете); * readonly - обычно установлен в 1
только для CD-ROM, этот флаг сообщает системе - является ли устройство
read-only или нет; * readahead - количество секторов для опережающего
чтения;
Настройка
ПРЕДУПРЕЖДЕНИЕ! Неправильная настройка может привести к потере данных
на жёстком диске, а возможно и самого дика.
I/O Support
-с0 -- установка 16-и битного режима (по-умолчанию)
-c1 -- установка 32-х битного режима (обычно то, что вам нужно)
-c3 -- установка 32-х битного синхронного режима (мне не известно,
когда именно это надо)
Multicount
Количество секторов передаваемых сразу (одним блоком). Степень двойки,
максимальное число -- параметр MaxMultSect в выводе hdparm -i. Чаще
всего вам именно его и нужно указывать.
Включение DMA
Большинство современных чипсетов и HDD поддерживают DMA под линуксом.
Для некоторых самых новых чипсетов в данный момент поддержки DMA может
не быть, однако это не так часто бывает. Обычно в течении нескольких
недель после выхода нового чипсета появляется его поддержка в
последнем ядре, так что если DMA у вас не включается, то следует,
скорее всего, обновить ядро.
-d0 -- запрещение DMA
-d1 -- включение DMA
DMA mode и PIO mode
Самая опасная настройка -- её неправильное использование чаще всего
приводит к повреждению данных или оборудования.
-X<число> -- установка режима PIO или DMA
Режимы multiword DMA:
32 (базовое число) + номер режима:
-X32 -- mdma0 -X33 -- mdma1 -X34 -- mdma2
Для PIO базовое число 8, для UltraDMA 64.
-X64 -- udma0 -X65 -- udma1 -X66 -- udma2 -X67 -- udma3 -X68 -- udma4
-X69 -- udma5
Readahead (опережающее чтение)
На сколько чекторов вперёд читать при запросе. Ускоряет
производительность при чтении файлов большого размера, однако
замедляет работу с файлами небольшого размера.
Лучше всего установить то же значение, что и для multicount.
-aN -- опережающее чтение N секторов
Тестирование
Для тестирования наберите:
hdparm -t <имя устройства>
Желательно это делать, когда заметной дисковой активности нет.
Потом попробуйте какой-нибудь вариант конфигурации, например:
hdparm -u1c1d1m8a8 <имя устройства>
После чего опять повторите:
hdparm -t <имя устройства>
И сравните результаты.
По результату этого теста не стоит подбирать опции -a и -m, для этого
лучим тестом будут реальные приложения, исполняемые на вашей машине.
Если это домашняя машина, а не боевой сервер, на котором важна
свертонкая подстройка (но на таких серверах редко оказываются
IDE-диски, о которых здесь идёт речь), то тогда параметр multicount
(-m) ставите на максимум, а параметр read-ahead (-a) равным
multicount.
Особенности дистрибутивов
ALT Linux Master:
Настройки hdparm задаются в файле /etc/sysconfig/harddisk/hd??
Денис Смирнов <mithraen@freesource.info>