Длительное состояние стабильности рано или поздно нарушает что-то непредсказуемое и странное, вот и наступил такой момент. Пару дней назад при копировании файла с одного физического диска на другой, вдруг заметил, что скорость катастрофически низкая - 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. Теперь я отказался от отключения дисков, пусть работают, к тому-же частые включения и выключения возможно больше вредят чем приносят пользу.

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

Возможные режимы работы жесткого диска

У HDD есть возможность работать с данными в двух режимах: устаревший PIO и более новый DMA. Они кардинально отличаются принципом своей работы и, соответственно, скоростью обработки данных. Так в режиме PIO все данные обрабатываются при помощи процессора что сильно его нагружает и, как следствие, приводит к падению общей производительности системы. А вот режим DMA – это уже аппаратная обработка данных при которой используются разнообразные ускорители и ЦП в этом процессе не участвует.

Самопроизвольное переключение Виндовс на режим PIO и признаки этого

Windows по умолчанию работает с HDD в скоростном режиме DMA, но иногда из-за специфических ошибок самостоятельно переключается в режим PIO. Причем обратно включить DMA весьма проблематично и сделать это стандартными способами практически невозможно. Характерные признаки того, что Windows переключилась на работу с жестким диском в режим PIO это:

Падение быстроты работы с HDD в несколько раз;
Медленная скорость работы системы во время дисковых операций;
Чрезмерная загрузка процессора (80-90%) при работе с жестким диском;
Система начала «тормозить» резко. То есть еще час назад все было нормально, а потом резко появились проблемы.

На данный момент жесткий диск - это самое слабое место всей системы и падение его скорости работы даже в два раза приводит к катастрофическим последствиям. Для того чтобы убедиться, что Windows действительно переключилась на работу с жестким диском в медленный режим PIO нужно сделать следующее:

1. Нажмите на значок «Мой компьютер» правой клавишей мыши и выберите пункт «Управление»;

2. Раскройте ветку контроллера и найдите канал, к которому подключен ваш жесткий диск;
3. Нажмите на нем правую клавишу мыши, зайдите в «Свойства» и переключитесь на «Дополнительные параметры»;
4. Посмотрите на строку «Текущий режим передачи». Если там написано «Режим DMA», то значит все нормально, а вот если «Режим PIO», то вам придется проделать несколько несложных операций и вернуть диск в предпочтительный режим работы.

Включаем режим DMA

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

Если по какой-то причине у вас не получается включить DMA первым способом, то тогда вам придется приложить немного больше усилий и использовать редактор реестра. Сделайте следующее:

  1. Нажмите Win+R и напечатайте в появившейся строке команду regedit ;
  2. Перейдитепопути HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36Е96A-Е325-11CE-BFC1-08002BE10318};

  1. Найдите строку MasterDeviceTimingModeAllowed.
  2. Если в колонке значение этой строки написано 0х00000001f, то это значит, что ваш жесткий диск действительно работает в режиме PIO;
  3. Поменяйте значение на 0xffffffff и перезагрузите компьютер.

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

1. Откройте «Диспетчер устройств» (Device Manager).
Это можно сделать, нажав правой кнопкой мышки на «Мой компьютер» (My Computer), выбрать закладку «Дисковые устройства» (Hardware), и нажать кнопку выбрать «IDE» (Select Device Manager).

2. Откройте раздел «IDE ATA/ATAPI контроллер (IDE ATA/ATAPI Controllers)» и дважды кликните на «Первичный IDE канал» (Primary IDE Channel).

3. Открыв закладку «Дополнительные параметры» (Advanced Settings), проверьте установку «Устройство 1» (Device 1).
Вполне возможно, что Ваша текущая установка - «PIO».

4. Установите «DMA», если доступно (DMA if available).

5. По окончании всех действий перегрузите компьютер.

Если Вы имеете устройство на вторичном IDE канале, повторите те же шаги для «Вторичный IDE канал» (Secondary IDE Channel).

Труборез и трубогиб для самостоятельной сборки СЖО

Два инструмента компании EK Water Blocks адресованы тем, кто собирает СЖО самостоятельно: резак EK-Loop Soft Tube Cutter и приспособление для гибки труб EK-Loop Modulus Hard Tube Bending Tool.

Накопительное обновление Windows 10 1909 KB4528760

14 января 2020 г. Microsoft выпустила накопительное обновление KB4528760 (Build 18363.592) для Windows 10 November 2019 Update (версия 1909) на базе процессоров x86, x64 (amd64), ARM64 и Windows Server 2019 (1909) для систем на базе процессоров x64.

Cherry улучшила механические переключатели клавиатуры

Компания Cherry, известная как поставщик механических переключателей для клавиатур, улучшила популярные модели серии MX: Red, Brown, Black и Speed.

Драйвер AMD Radeon Software Adrenalin 2020 Edition 20.1.1

Первый январский 2020 г. набор графических драйверов Radeon Software Adrenalin 2020 Edition 20.1.1 содержит оптимизации для игры Monster Hunter World: Iceborne и исправляет почти три десятка ошибок, выявленных в предшествующих релизах.

Secondary Master

опции-меню назначения каждому из возможно четырех жестких дисков (E) IDE-интерфейса оптимального PIO-режима (Programmable Input/Output). Возможные значения: "Auto" (по умолчанию), "Mode 0", "Mode 1", "Mode 2", "Mode 3", "Mode 4". Режимы 0...2 относятся к обычным IDE-дискам (стандаpт ATA), 3 и 4 — к EIDE (ATA-2), pежим 5 — к ATA-3. Понятно, что в автоматическом режиме система выберет для каждого из дисков наилучший скоростной режим передачи данных. Но надо помнить, что автоматическая установка PIO-режима производится в соответствии с возможностью автоопределения функционирования жесткого диска и объемом информации, полученным от устройства. Если у пользователя имеются сомнения в правильности автоопределения PIO-режима, то в соответствии с документацией на жесткий диск пользователь может изменить режим PIO для любого из дисков. BIOS в режиме "Auto" может также неправильно идентифицировать PIO-режим EIDE-диска, и последний не распознается. Для использования режимов 3 и 4 необходимо использование в системе EIDE-дисков.

Аналогичные (четыре!) опции могут называться также "IDE Primary Master PIO " и т.д.

Опция "Fast Programmed I/O Mode (s) " предлагает такие значения: "Disabled", "Auto detected", "PIO0", ... "PIO4". Опция с тем же названием неожиданно предложила значения "Disabled" и "Auto Detected" (по умолчанию). Первое приводит к установке скоростных характеристик, меньших чем оптимальные, "Auto Detected" устанавливает максимально возможную скорость.

Опция может называться также "Mode PIO Transfer Data " или "Transfer Mode ". Последняя опция предложила такой набор значений: "Auto", "Default" (равносильно "Fast PIO 1"), "Fast PIO 1", "Fast PIO 2", "Fast PIO 3", "Fast PIO 4", "FPIO 3 / DMA 1", "FPIO 4 / DMA 2". Понятно, что речь идет каждый раз о параметрах четырех жестких дисков, или двух для более старых систем. В этом случае опции могут называться "IDE Master PIO Mode " ("Master Drive PIO Mode ") и "IDE Slave PIO Mode " ("Slave Drive PIO Mode ").

PIO (Programmable Input/Output — "программируемый ввод/вывод") осуществляется центральным процессором и работает путем передачи данных по определенным адресам ввода/вывода (см. подраздел "Порты"). Режимы PIO определяют, насколько быстро данные могут передаваться между диском и контроллером. При их использовании задействуются регистры центрального процессора системы. Но это не все! Режимами PIO, или DMA, определяются величина пакетов передаваемой информации, способ их кодировки, скорость и последовательность передачи, все временные характеристики цикла обмена. В зависимости от режимов устанавливаются различные времена циклов, поэтому скорости передачи могут меняться в очень широких пределах (см. таблицу).

При получении команды "Identify Drive" диск возвращает, наряду с другими параметрами, информацию о поддерживаемых режимах PIO и DMA. Эти параметры можно определить и с помощью специальных утилит. Установка режима передачи осуществляется по значению одного из регистров — SC (регистра счетчика секторов ATA-устройств). Через один из режимов работы этого регистра и происходит управление режимом обмена.

Режимы ATA-2 (PIO 3 и PIO 4) используют аппаратное управление потоком данных. Если быть точным, то Enhanced IDE включает операции, называемые "управление потоком с использованием IORDY", которые позволяют диску включать пакетный режим передачи для 100%-ного использования полосы пропускания шины. Режим управления потоком передает инициативу устройству (диску) и позволяет избавиться от неэффективных "слепых" режимов PIO за счет установки полосы пропускания контроллера в соответствии с возможностями винчестера. Это означает, что в тех случаях, когда доступна вся полоса, винчестер будет управлять обменом данными с хост-адаптером.

Что это за сигнал? "IORDY" (Input/Output Ready) — сигнал от EIDE-винчестера, подтверждающий завершение цикла обмена с контроллером. Другие названия — "CHRDY", "IOCHDRY". Использование "IORDY" позволяет скоростному винчестеру затянуть цикл обмена с контроллером, когда он не успевает принять или передать данные. Это дает возможность свести стандартную длительность цикла обмена к минимуму, предельно увеличив скорость, а при необходимости удлинять отдельные циклы при помощи "IORDY". Для этого сигнал должен поддерживаться и винчестером, и контроллером. Управление потоком со стороны диска включается контроллером с помощью команды "Set Features", в результате чего такой обмен поддерживается одновременно и диском, и контроллером. Контроллеры, не поддерживающие "IORDY", могут приводить к потере данных при использовании быстрых режимов PIO; в этом случае следует использовать менее скоростные режимы. В некоторых источниках упоминается режим 5, однако распространения он не получил и стандартным не является.

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

Режимы программируемого ввода/вывода достаточно эффективны только в однозадачных средах. Для многозадачных ОС режимы DMA более предпочтительны. Необходимо помнить, что высокоскоростные режимы множественного обмена по DMA реализуются драйверами операционной системы. Возможности программного конфигурирования драйвера определяют гибкость управления режимами DMA.