Настройка CD/DVD-привода

Наверное, не все знают, что в PuppyRus Jeans 1.3.0 по умолчанию включен 16-ти битный доступ к CD/DVD-приводу и не всегда включен режим DMA — смотрите строку 96 в файле /etc/rc.d/rc.local0. Скорость доступа к оптическим дискам при таких настройках оставляет желать лучшего. Оптимально настроить привод можно с помощью утилиты hdparm. Лучше всего попробовать разные режимы в консоли, проверить их опцией -t, и самый быстрый вписать в скрипт rc.local0. Тонкости настройки описаны в статье.

Тонкая настройка 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 — Расширенное Управление Питанием)

Запустив другую команду, вы получите дополнительную информацию:

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 под Linux. Для некоторых самых новых чипсетов в данный момент поддержки 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.

Денис Смирнов mithraen@freesource.info

 
tip/cd_tuning.txt · Последние изменения: 01.03.2016 в 18:18 (внешнее изменение)
 
За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki