Диск работает в режиме pio. DMA для новичков или то, что вам нужно знать

Как вы знаете, Windows 7 получила более значительные улучшения во времени загрузки и отклика системы по сравнению с её предшественницей Windows Vista . Были внесены существенные изменения, позволившие системе не расходовать всю системную память при открытии большого количества окон проводника, оптимизированы системные службы и процессы.


В данной статье мы рассмотрим:

  • оптимизацию работы меню пуск
  • оптимизацию работы жесткого диска в Windows 7
  • оптимизацию скорости копирования и перемещения файлов в Windows 7
  • оптимизацию работы с драйверами Windows 7
  • оптимизацию времени загрузки Windows 7
  • ускорение процесса просмотра эскизов изображений
  • ускорение завершение работы Windows 7
Внимание!
Обратите внимание на то, что часть рассмотренных методов ускорения работы Windows 7 основываются на отключении какого-либо рода задач, упрощении или улучшении функциональности системы для более удобного ее использования. Т.е. по сути вы выбираете между удобством и производительностью.

Пути оптимизации Windows 7

1. Ускорение работы меню пуск.

Определение недавно установленных программ, а также подсветка этих недавно установленных программ занимает у системы некоторое время при каждом открытии меню пуск. Вы можете сэкономить это время.

Для этого вам необходимо перейти к настройке меню пуск: в свойствах «Панель задач и меню Пуск» (для активации перейдите в панель управления Windows 7: Пуск -> Панель управления ). Перейдите в закладку «Меню Пуск» и нажмите на кнопку «Настроить» .
Рисунок 1. Настройка меню "Пуск"

Уберите галочку «Выделять недавно установленные программы» , после чего нажмите «Применить» .
Рисунок 2. Отключение выделения недавно установленных программ
Для того чтобы уменьшить паузу, при появлении окна меню пуск, перейдите в редактор реестра (команда «regedit» в диалоге «Найти программы и файлы» ).
Рисунок 3. Запуск редактора реестра
После запуска редактора реестра (regedit.exe ) перейдите в ветку HKEY_CURRENT_USER -> Control Panel -> Desktop (рис. 4).

Рисунок 4. Выбор необходимой ветки реестра
Измените значение ключа MenuShowDelay с «400» на «50» . Пауза значительно сократится.

Рисунок 5. Изменение паузы при отображении окна
2. Оптимизация работы жесткого диска в Windows 7

Эта опция знакома еще со времен Windows XP , но если в XP она была изначально включена, то в Windows 7 оптимизацию жестких дисков посчитали лишней и по умолчанию она отключена. Сейчас мы рассмотрим метод включения данной опции.

Заходим в Пуск -> Панель управления -> Диспетчер устройств -> Дисковые устройства -> (выбираем свой жесткий диск) -> Свойства -> Политика... и ставим там галочку напротив пункта «Отключить очистку буфера кэша записей Windows для этого устройства» .
Рисунок 6. Отключение очистки буфера кэша записей Windows
Теперь в этом же «Диспетчере устройств» раскрываем другую ветку - «IDE ATA/ATAPI контроллеры (IDE ATA/ATAPI Controllers)» , после чего в свойствах всех каналов ATA (ATA Channel 0, ATA Channel 1 и т.д.) во вкладке «Дополнительные настройки (Advanced Settings)» проверяем, стоит ли галочка на «Задействовать/Включить DMA (Enable DMA)» .
Рисунок 7. Включение режима DMA
Если галочка не стоит – установите ее.

3. Ускорение копирования и перемещения файлов в Windows 7

Windows 7 получила еще одну интересную особенность - удаленное разностное сжатие.
С одной стороны эта опция вычисляет и передает различие между двумя объектами, минимизируя объем передаваемых данных, но с другой – это отнимает время на калькуляцию.

Вы можете отключить эту функцию. Для этого перейдите в Пуск -> Панель управления -> Программы и компоненты -> Включение и отключение компонентов Windows -> Удалённое разностное сжатие (необходимо снять галочку) .

Рисунок 8. Отключение разностного сжатия
4. Отключение проверки цифровой подписи драйверов

Данное действие также может немного увеличить скорость работы системы (при установке новых драйверов). Для отключения данной опции в Windows 7 выполните следующие действия:

Выполните в «Пуске» gpedit.msc .
Рисунок 9. Запуск панели администрирования
Затем перейдите по следующему пути:

Конфигурация пользователя -> Административные шаблоны -> Система -> Установка драйвера -> Цифровая подпись драйверов устройств . В этом окне необходимо выбрать режим "Отключено" .

Рисунок 10. Отключение проверки цифровой подписи драйверов
5. Ускорение загрузки Windows 7

Мы можем выиграть еще несколько секунд, правда данный совет относится к тем пользователям, которые работают на многоядерных процессорах с Windows 7 в качестве операционной системы.
Итак, выполните следующие действия:

Введите MSCONFIG в поле поиска меню «Пуск» и нажмите клавишу «Enter» .

В открывшемся окне перейдите на вкладку и нажмите на кнопку «Дополнительные параметры (Advanced options)» .

Рисунок 11. Дополнительные параметры оптимизации системы Установите флажок напротив пункта «Число процессоров (Number of processors)» и в выпадающем меню под этим пунктом выберите максимальное число ваших ядер (2 или 4).

Рисунок 12. Установка числа процессоров для систем с многопоточными процессорами
Нажмите «Ок» и перезагрузите систему, чтобы увидеть довольно ощутимую разницу в скорости загрузки Windows 7 .

6. Ускорение просмотра эскизов (миниатюр).

Вы можете увеличить скорость просмотра эскизов (миниатюр) в Windows 7 . Для этого вам необходимо выполнить следующие действия:

Введите regedit (без кавычек) в поле поиска меню «Пуск» и нажмите клавишу «Enter» .

Перейдите в ветку «HKEY_CURRENT_USER -> Control Panel -> Mouse» .

Рисунок 13. Выбор нужной ветки реестра для оптимизации паузы при отображении эскизов
Дважды щелкните на параметре MouseHoverTime и измените его значение на 100 .

Рисунок 14. Установка нового значения
7. Уменьшение времени выключения Windows 7

Время завершения работы Windows 7 можно заметно уменьшить. Однако это довольно варварский способ: мы уменьшаем время, которое отводится процессу на завершение работы программы, после чего программа будет завершена принудительно.

Введите regedit в поле поиска меню «Пуск» и нажмите клавишу «Enter» .

Перейдите в ветку HKEY_LOCAL_MACHINE -> System -> CurrentControlSet -> Control .


Рисунок 15. Выбор необходимого ключа реестра
Измените значение параметра «WaitToKillServiceTimeout» со значения 12000 (12 секунд) на 2000 (2 секунды).

Рисунок 16. Изменение значения.


Длительное состояние стабильности рано или поздно нарушает что-то непредсказуемое и странное, вот и наступил такой момент. Пару дней назад при копировании файла с одного физического диска на другой, вдруг заметил, что скорость катастрофически низкая - 4-6 Mb/s вместо ожидаемых 50-90 Mb/s (с поправкой на фрагментацию). Смотрю на загрузку CPU – одно ядро полностью занято обработкой прерываний, все понятно – диск перешел в PIO mode.

Исходная конфигурация : ASUS P5Q, 4 x 1 Gb SATA диска, 2 x 1.5 Gb SATA диска, никаких RAID-ов нет, Windows XP SP3. Диск работал в UDMA режиме, как и все остальные, я его тестировал после установки. Device Manager –> IDE controllers –> канал и смотрим “current transfer mode”. На картинке оба устройства работают в режиме UDMA, в моем случае второе устройство работало в PIO mode, но картинку такую я не сохранил. Чтобы понять кто висит на каком канале переключите вид Device Manager-а в View –> Devices by Connection.

Хотя диски SATA, контроллеры в Device Manager-е - ATA. Дело в том, что в BIOS SATA контроллеры по умолчанию сконфигурированы прикидываться ATA контроллерами, в таком случае не требуется дополнительных новых AHCI драйверов. Перейти в AHCI режим можно безболезненно, это не влияет на логическую организацию данных, требует лишь соответствующих драйверов. В AHCI режиме появляется поддержка NCQ (переупорядочивание команд HDD) и в целом производительность чуть чуть подрастает, но совсем немного и еще добавляется поддержка горячей замены.

Версии возможных причин:

1) Что-то с шлейфом.
2) Что-то с драйверами, сбой или конфликт.
3) Что-то с HDD.

Есть вторая система – Windows 7, гружусь в нее и наблюдаю полную работоспособность дисков в UDMA режимах, значит железо вроде в норме. Смотрю журнал событий, в нем не обнаруживаю сообщений о проблеме с дисками, смотрю диагностику SMART – все ок, конфликтов устройств нет, все это хорошо. Беру последние драйверы с ASUS. Записываю старый номер версии драйвера Intel ICH10R, ставлю новый. Ставится подозрительно быстро, в итоге не обновился. Вручную через INF файлы обновляю драйверы ICH10R, ставится, но проблема остается. Иду на Intel, качаю самую свежую версию, ставлю, снова ничего не ставится. Выясняю, что их драйверы обновляются только если устройство вообще не имеет драйвера, чтобы форсировать надо использовать секретный ключик “–overlall”, пробую, обновляется, но не решает проблемы. Меняю шлейф, вынимаю, втыкаю диск – не помогает. Промежуточный итог – железо работает, новый софт не помогает.

Нахожу в Microsoft-е интересную статью: “После появления нескольких ошибок CRC или истечения времени ожидания диски с интерфейсами IDE ATA и ATAPI используют режим PIO” . Пишут, что если были сбои передачи по UDMA, то система последовательно понижает режимы вплоть до PIO mode (или сразу) и замораживает это состояние! Чтобы вернуть обратно предлагают удалить контроллер из Device Manager-а и он возродится из пепла. На это я не пошел, т.к. побоялся, что он может и не возродиться (писали про это где-то), поэтому пошел вторым путем описанным там и еще в других местах.

Решение. Открыть ветку реестра “HKEY_LOCAL_MACHINE\SYSTEM\CurrentContro lSet\Control\Class\{4D36E96A-E325-11CE-B FC1-08002BE10318}”, в ней будут ветки 0000, 0001 и т.д. Они соответствуют устройствам в Device Manager-е. Нас интересуют только каналы, название смотрим по DriverDesc, в данном случае “Primary IDE Channel”.

Обращаем внимание на MasterDeviceTimingModeAllowed и SlaveDeviceTimingModeAllowed – они задают маску допустимых режимов, если 0xffffffff, значит все допустимо, а если 0x1f, то только PIO mode. У меня проблема на Slave. Сами текущие режимы хранятся в MasterDeviceTimingMode и SlaveDeviceTimingMode, они отличаются (в сети можно найти смысл чисел). MS предлагает сделать следующее – выставить дополнительный ключ ResetErrorCountersOnSuccess (DWORD) = 1 и перегрузиться. Я это сделал, но это ничего не дало, дало только то, что желаемый режим UserSlaveDeviceTimingModeAllowed тоже сбросился в 0x1f. Я его вернул в Device Manager-е, но думаю можно и здесь вручную выставить 0xffffffff. Далее я выствил SlaveDeviceTimingModeAllowed = 0xffffffff, перегрузился и вуаля!, все заработало. Итого, я думаю надо было сделать всего лишь следующее (проблема на Slave):

UserSlaveDeviceTimingModeAllowed = 0xffffffff, SlaveDeviceTimingModeAllowed = 0xffffffff, ResetErrorCountersOnSuccess = 1 и перегрузиться.

На следующей картинке итоговое состояние реестра после перезагрузки. Режимы теперь одинаковые, маски сохранились и в Device Manager-е видим картинку, как в начале поста.

Теперь о причине. Как следует из статьи MS, одна из причин исправления их драйвера была в том, что время ожидания старта HDD было недостаточным (в Win2000 – 4 сек, сделали 10 сек) и это было проблемой в случае выхода дисков из сна. Я постоянно использовал настройку выключения дисков по бездействию через 2 часа, что приводило иногда к веерному их просыпанию, когда некоторые приложения хотели полезть сразу на несколько разделов. Я полагаю, что может при каком-то сценарии таймаут все-таки был превышен и был зафиксирован сбой, который привел к отключению UDMA. Теперь я отказался от отключения дисков, пусть работают, к тому-же частые включения и выключения возможно больше вредят чем приносят пользу.

DMA или Direct Memory Access - технология, применяющаяся в многих устройствах компьютера, а, в частности, в современных жестких дисках и СD-ROM для повышения их производительности. В параметрах любого жесткого диска вы всегда найдете упоминание о DMA. Но далеко не все знают, что по умолчанию в Windows 95/98 и NT 4.0 этот режим, для совместимости со старыми (даже, скорее, древними) дисками, просто-напросто отключен!

При включении этого режима загрузка процессора при операциях копирования уменьшается во много раз и порой заметно увеличивает производительность системы в целом. Все современные жесткие диски и CD-ROM-приводы корректно работают в DMA-режиме и используют заложенные в него возможности.

Как работает DMA? Очень просто. Если при обычном копировании данные передаются из жесткого диска через центральный процессор в оперативную память, а затем обратно из оперативной памяти через процессор на диск, то в режиме DMA из этой цепочки исключается процессор. Данные сразу попадают с диска в оперативную память. Результатом служит минимальная загрузка процессора при операциях чтения записи и, как результат, значительное повышение производительности системы.

Важно не путать режим DMA и обозначение типа контроллера жесткого диска. Если ваш диск поддерживает UltraDMA 33 или 66, это означает лишь то, что он способен обмениваться данными с соответствующим IDE-контроллером на скорости 33 или 66 Мб/сек.

Чтобы удостовериться, используется ли на самом деле режим DMA, и при необходимости его подключить, воспользуйтесь следующими рекомендациями.

Для Windows 95/98

Щелкните правой кнопкой мыши на значке My Computer, выберите Properties и перейдите на вкладку Device Manager. Выберите пункт Disk Drives и Generic IDE Disk. Дважды щелкните на нем и перейдите ко вкладке Settings. Если флажок на против опции DMA установлен, значит, режим DMA работает. Если нет, установите. После перезагрузки он должен оставаться на своем месте.

Если он сбрасывается, значит либо диск, либо контроллер не поддерживают DMA. Аналогичную операцию можно проделать и с CD-ROM-приводом. Если по каким-либо причинам после перезагрузки устройство будет работать некорректно или вообще отсутствовать в списке, вам придется перезагрузиться в Safe Mode и снять флажок. Впрочем, в моей практике делать этого еще не приходилось. В случае использования дополнительного IDE-контроллера (например, для работы с UltraDMA 66 дисками), данная вкладка может выглядеть иначе, и управление режимом DMA берет на себя драйвер контроллера. Многие современные платы на чипсете Intel 440BX используют такой дополнительный UltraDMA-контроллер, так как BX изначально не поддерживает работу с UltraDMA 66 дисками.

Для Windows 2000

В отличие от Windows 9х, Windows 2000 по умолчанию настраивает многие компоненты системы на оптимальное быстродействие, за счет чего местами работает значительно быстрее. Это в полной мере относится и к жестким дискам.

Для того, чтобы узнать, используется ли у вас DMA в этой операционной системе, вам следует щелкнуть правой кнопкой мыши на значке My Computer, выбрать пункт Manage и в окне Computer Management выбрать Device Manager. В появившемся дереве необходимо выбрать IDE ATA/ATAPI controllers и Primary IDE Channel. Как правило, на основном канале контроллера и находится жесткий диск.

Дважды щелкните на Primary IDE Channel (или Secondary IDE Channel, в случае, если устройство расположено на дополнительном IDE-канале) и в появившемся окне выберите вкладку Advanced Settings. Блок Device 0 показывает установки устройства, установленного как Master, а блок Device 1 - устройства, установленного как Slave. Поле Current Transfer Mode показывает, в каком режиме работает устройство, а Transfer Mode позволяет изменять его вручную.

Для Windows NT 4.0

Простого пути для включения DMA в этой системе нет. Вам придется либо исправлять реестр, либо воспользоваться какой-либо утилитой, которая делает это за вас.

Второй способ предпочтительнее. Для этого можно использовать небольшую программку ConfigNT (confignt.lgg.ru). Помимо включения DMA, программка может изменять еще кучу разных параметров, которые не могут быть изменены с использованием стандартных средств.

Для включения режима DMA с помощью ConfigNT необходимо выбрать в программе вкладку IDE/ATAPI и в поле DMA Detection установить Enable для обоих каналов. После установки параметров необходимо перезагрузить компьютер.

Для того, чтобы на практике увидеть полученный прирост производительности, достаточно во время копирования большого файла, со включенным и отключенным DMA, запустить программу, измеряющую загрузку процессора. В Windows 2000 или NT проще всего воспользоваться стандартным Task Manager (Ctrl-Shift-Esc).

Виталий Шуравко

Привет всем читателям блога. В этой статье поговорим о том, как восстановить производительность системы. Часто у пользователей возникает проблема очень медленной работы компьютера, особенно при записи и при чтении дисков, либо просто необоснованные «тормоза» системы при работе или загрузке.Почему система зависает читайте
Причин возникновения этого может быть великое множество, сегодня предлагаю рассмотреть довольно распространенную – это неверный режим работы CD/DVD - ROM’а или жестких дисков , т. е. поговорим о PIO и DMA . Как проверить жесткий диск на ошибки и устранить их читайте

В чем суть и разница PIO и DMA .

PIO и DMA - это два режима работы жестких дисков, в общем случае любого привода.
PIO (Programmable Input/Output) - уже устаревший режим, для работы ему необходимо
задействовать центральный процессор, что приводит к значительной потери производительности.
DMA (Direct MemoryAccess) - современный метод, который минует процессор и
обращается напрямую к оперативной памяти, это позволяет значительно увеличить производительность и избавиться от надоедливых «тормозов».
Режим DMA в различных вариантах уже давно используется в операционных системах Windows 7, 8, а также в 10, однако в Windows XP, часто случается ситуация в которой DMA автоматически переключается в PIO и уже вывести его обратно обычными методами не получится. Из-за чего возникает эта ситуация?
В Windows XP внедрен механизм контроля ошибок , если при чтении с жесткого диска или другого привода слишком часто возникают ошибки, то система автоматически переходит в более медленный режим, где их процент меньше. Однако, Windows XP может перевести в такой режим и нормально работающее устройство.
Как устранить ошибки Windows читайте

И так, проверим режимы работы всех приводов, чтобы система не тормозила..

1 . Запускаем консоль «Управление компьютером» – правой кнопкой на «Мой компьютер»


в выпадающем меню выбираем пункт «Диспетчер устройств» , либо через
Панель управления. Или Пуск - Выполнить - devmgmt.msc

2. Выбираем «Диспетчер устройств» , выбираем IDE ATA/ATAPI контроллеры ,


откроется несколько строчек с контроллерами – нас интересуют:
Первичный и Вторичный каналы IDE → заходим поочередно в свойства этих каналов (правой кнопкой на канале, строка «Свойства »), в закладку «Дополнительные параметры» ,
здесь выделены две группы «Устройство 0» и «Устройство 1» , в каждой есть строки
«Режим передачи» – в ней должно быть выбрано «DMA, если доступно », далее строка «Текущий режим передачи» , должно быть что-то типа «Режим ультра DMA:4,


если здесь стоит «Режим PIO», то это как раз наш случай и мы будем его исправлять .
Если везде стоит режим ультра DMA, то у Вас все в порядке и дальнейшие действия можно не продолжать.
3. Для начала попробуем исправить вручную – в каждой строке «Режим передачи» ставим «DMA, если доступно» , жмем «ОК» и перезагружаем компьютер. После включения вновь
смотрим режимы работы каналов, если везде стоит DMA, то все в порядке, если остался PIO, то продолжаем дальше.
4. Вновь найдите Первичный и Вторичный каналы IDE и удалите их (правой кнопкой на каждом канале, в списке выбираем «Удалить» ). Не бойтесь, все будет нормально работать.
Снова перезагрузите компьютер – Windows XP найдет контроллеры и переведет их в быстрый режим работы, т.е в DMA . Проверьте результат, везде должен стоять режим DMA.
5. Если все перечисленное не помогло и у Вас опять высвечивается «Режим PIO» , тогда необходимо будет переставить драйвера для материнской платы – перегрузиться
и вновь проверить результат.
6. Ну и последний пункт, если после всех страданий режим PIO так и не пропал, тогда придется подредактировать в реестре. Хочу отметить – производите какие-либо операции с
реестром очень осторожно и внимательно, любое неправильное действие может привести к полной неработоспособности Вашей системы. Лучше всего сделать заранее копию реестра.
Как настроить Windows XP с помощью реестра читайте

Для начала попробуйте отключить систему контроля ошибок.
Для этого в ветке реестра:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Cdfs\ ,
создайте ключ ErrorControl и установите его значение равным 0.


После этого перегрузитесь и выполните пункт №4.


в ней можно вручную выставить режим DMA .
Здесь располагаются несколько папок - 0000, 0001, 0002.
0000 – отвечает за сам контролер;
0001 – отвечает за Secondary IDE Chanell;
0002 – отвечает за Primary IDE Chanell;
Открываем папку для нужного нам канала. В ней находятся
несколько ключей, для начала выбираем:
MasteDeviceTimingModeAllowed
SlaveDeviceTimingModeAllowed
и проставляем значение равное 0хffffffff.
После этого выставляем значение следующих ключей:
MasterDeviceTimingMode
SlaveDeviceTimingMode
в соответствии с следующими данными, в зависимости от
поддерживаемого UDMA - режима:
UDMA Mode 2 – 0×2010
UDMA Mode 4 – 0×8010
UDMA Mode 5 – 0×10010
UDMA Mode 6 – 0xffff

После этого перегрузитесь и проверьте результат – должно все нормально работать.
Как ускорить и восстановить производительность Windows 10, читайте
Какая скорость передачи информации в компьютерах, читайте
Надеюсь эта статья поможет Вам правильно выставитьрежимы PIO и DMA и повысить общую производительность системы.


Уважаемые читатели!
Если вам понравился блог и опубликованные материалы, оказались полезными для Вас, то прошу оказать помощь на содержание и развитие данного блога. Сделать это можно,пожертвовав любую сумму. Ваша финансовая поддержка будет использована для продвижения блога, на наполнение блога хорошим материалом, улучшения функциональности и удобности для читателя и реализацию дальнейших планов.
1) Путём перечисления денег на карту Сбербанка: 4424 7710 1196 4323
2) Самый простой способ, который не составит больших усилий у каждого пользователя, читателя блога - это в конце каждой статьи есть несколько кнопок ("поделиться" ) для добавления статьи в социальные сети или блоги и другие ресурсы общения в интернете.
Заранее благодарен всем, кто поможет в развитии блога.