LinuxBegin.ru - тестовая версия (сообщить об ошибке) PrefNews.Ru  | DotStyle.Ru  | HotStuff.Ru  | Hurd.ru  

Разделы

Что такое Linux
Некоторые возможности Linux
Дистрибутивы и всё, что с ними связано
Windows и Linux на одном компьютере
Руководства / FAQ
Русификация
Запуск Windows-игр в Linux
Все разделы >>


Проекты
Аналоги Windows-программ в Linux
Перевод LNAG
LinuxHumor

Обратная связь
Задайте вопрос
Регистрация
Добавить новость
Добавить статью
Обратная связь

Top 10

Лучшие ссылки
Виртуальная энциклопедия Linux.
Linux на I2R.
Справочник Линуксоида.
Каталог Unix-софта на Softodrom.ru.

Увеличение производительности жесткого диска с помощью утилиты hdparm. (Оптимизация Linux)


- Автор: (C) Piter Punk. Перевод: (C) с португальского на английский: William N. Zanatta, с английского на русский: Андрей Киселев. Источник - Linux Gazette. -

Современные устройства IDE уже имеют достаточно высокую скорость обмена (технология UltraDMA), тем не менее существуют дополнительные возможности повысить производительность жестких дисков с помощью утилиты hdparm, которые будут продемонстрированы в этой статье.

1. Введение

Утилита hdparm является мощным средством настройки параметров работы жесткого диска. Зачастую настройки жесткого диска по умолчанию далеки от оптимальных, поэтому вполне может возникнуть желание изменить их. С помощью утилиты hdparm, как по мановению волшебной палочки, можно поднять производительность жесткого диска до максимума.

2. Характеристики жесткого диска

Первое, что нужно сделать - это собрать всю информацию об имеющемся жестком диске и его настройках. И уже на основе этой информации можно будет приступать к его конфигурированию. На каждом шаге соблюдайте чрезвычайную осторожность, поскольку неправильные настройки могут повредить диск частично (данные) или полностью (аппаратная часть).

Допустим, что наш диск соответствует устройству /dev/hda. Запустим команду:

      darkstar:~$ hdparm -i /dev/hda

На терминал должно быть выдано нечто подобное:

    /dev/hda:

    Model=QUANTUM FIREBALLlct20 20, FwRev=APL.0900, SerialNo=552114732078
    Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs }
    RawCHS=16383/16/63, TrkSize=32256, SectSize=21298, ECCbytes=4
    BuffType=DualPortCache, BuffSize=418kB, MaxMultSect=8, MultSect=off
    CurCHS=16383/16/63, CurSects=-66060037, LBA=yes, LBAsects=39876480
    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 udma0 udma1 udma2 udma3 udma4 *udma5
    AdvancedPM=no
    Drive Supports : ATA/ATAPI-5 T13 1321D revision 1 : ATA-1 ATA-2 ATA-3
    ATA-4 ATA-5

Увидев это, вы можете задаться вопросом: "Это еще что за бред?". Не пугайтесь, вскоре все поймете. Перед вами на экране очень важная и полезная информация:

  • 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 - количество секторов для опережающего чтения;

Если вам что-то не понятно из вышесказанного - не унывайте, все это будет обсуждаться ниже. Некоторые из этих настроек напрямую связаны с аппаратной частью, так что не следует бездумно изменять их (бо это может привести к порче самого устройства или к потере всех данных =] ).

3. Настройка аппаратной части

Приступим! Начнем настройку нашего HD. ЗАПОМНИТЕ: Ошибки, допущенные в процессе настройки, могут привести к порче жесткого диска и потере всех данных! Держите перед собой информацию, выданную командой 'hdparm -i <device>'. Она поможет вам избежать проблем.

3.1. I/O Support

Итак, если у вас не (E)ISA IDE карта, то все остальные (PCI/VLB) поддерживают 32 битный режим. Если у вас компьютер более новый, чем 486, то скорее всего у вас установлен контроллер PCI IDE. Если это не так, то проверьте, а теперь...

  • hdparm -c0 <device> // Установка 16 битного режима.
  • hdparm -c1 <device> // Установка 32 битного режима.
  • hdparm -c3 <device> // Установка 32 битного синхронного режима.

Режим "3" необходим для отдельных чипсетов. Большинство используют режим "1", дающий более высокую производительность. Мне не удалось найти упоминаний о режиме "2", но предполагаю, что это 16 битный синхронный режим.

3.2. MultSect или Multcount

Здесь все просто, посмотрите, какое число MaxMultSect стоит у вас и используйте его для настройки параметра MultSect. В моем случае это 8, так что...

       # hdparm -m 8 /dev/hda

Не забудьте заменить "/dev/hda" на название устройства, которое настраиваете вы, а число "8" замените на число MaxMultSect, характерное для вашего устройства, выдаваемое командой 'hdparm -i <device>'.

3.3 Активирование DMA

Самая простая настройка из всех. Команда:

        # hdparm -d 1 <device>

включит режим DMA. Ваша карта должна поддерживать режим DMA.

3.4 PIO mode и DMA mode

Оба этих параметра изменяются одним ключом '-X'. Если использовать эту настройку без особой осторожности, то ваш диск может улететь (ВЕРЬТЕ МНЕ!) и стать первым HD, достигшим Луны самостоятельно! Устанавливайте только те режимы, которые поддерживаются вашим устройством.

Для установки режима mdma (multiword DMA), используйте ключ -X <базовое число = 32> + номер DMA. Например для mdma2 команда будет выглядеть так:

        # hdparm -X34 /dev/hda  // 32 + 2 (для mdma2)

Режимы PIO и UltraDMA устанавливаются аналогично, с той лишь разницей, что базовое число для PIO равно 8, а для UltraDMA - 64. Когда я писал эти строки, у меня стоял жесткий диск, поддерживающий ATA100, так что его можно перевести в режим udma5 командой:

        # hdparm -X69 /dev/hda // 64 + 5 (для udma5)

Имейте ввиду, что высшие режимы DMA доступны не на всех чипсетах.

Для режимов ATA66 и ATA100 требуется 80-ти жильный IDE шлейф (кабель). Думаю, что диск, подключенный другим шлейфом, в этих режимах работать не будет.

3.5 Readahead

Параметр readahead - не то же самое, что multcount. Параметр multcount связан с аппаратной возможностью чтения нескольких секторов одновременно, а readahead - указывает на сколько секторов вперед должно производиться чтение. Параметр readahead прекрасно проявляет себя при чтении файлов большого размера, но при этом снижает производительность устройства при чтении небольших файлов. Лучше всего установить этот параметр равным числу multcount, поскольку нет необходимости выполнять опережающее чтение большего количества секторов, чем то, которое можно прочитать одновременно.

Если вам приходится работать с большими файлами, то можете попробовать установить большее значение. По умолчанию устанавливается число 8 (что-то около 4 Кб).

Синтаксис команды:

        # hdparm -a N /dev/hda

где N - число секторов для опережающего чтения.

4. Заключение

Существует много других параметров, которые можно настроить с помощью hdparm. Большинство из них вы найдете в руководстве (man) по hdparm. Здесь же я рассмотрел только самые общеупотребительные.

Чтобы восстановить настройки при перезагрузке компьютера, поместите соответствующие команды в скрипт rc.local (для большого количества настроек, лучше поместить их в отдельный файл rc.hdparm или что-то вроде того). (прим. редактора: сейчас во многих дистрибутивах возможность вызова hdparm для дополнительной настройки параметров дисков производится не через rc.local, а "встроена" в систему иначе. Например, на AltLinux Master 2 [и, скорее всего, на других RedHat/Mandrake подобных] это делается с помощью файлов /etc/sysconfig/harddisk/hdXX, в которых записываются параметры, с которыми hdparm вызывается для устройства /dev/hdXX при загрузке системы).

На главную  |  Версия для печати  |  Отправить по почте  |  Рейтинг статьи: 0 (Голосов: 0).

Как вы оцениваете полезность и понятность этой статьи?
Плохо Нормально Хорошо Очень хорошо! Отлично!



5 последних поступлений в раздел Оптимизация Linux:

23.12.02: Увеличение производительности жесткого диска с помощью утилиты hdparm. (Зачастую настройки жесткого диска по умолчанию далеки от оптимальных, поэтому вполне может возникнуть...)
12.12.02: Продвинутая оптимизация Linux (Эта статья проведет вас через различные шаги настройки вашего Linux и файловой системы под конкретный...)
07.12.02: Оптимизация Linux.  (В последнее время в разного рода конференциях по линуксу возникает флейм по поводу того, что линукс т...)
06.12.02: Ускорение работы винчестера. (Отсидев в Линуксе 2-3 недели, каждый человек наверняка замечает, что одни и те же операции с чтением/...)

"Увеличение производительности жесткого диска с помощью утилиты hdparm." | Логин/Создать Аккаунт | 0 Комментарии
Порог
  
Спасибо за проявленный интерес


© 2002 Valery V. Kachurov. Hosted by Linux-online. Powered by PHP-Nuke.



RB2 Network RB2 Network