Симптомы
Поставил я недавно в карман диск WD Green WD10EADS, совершенно забыв его «оттюнинговать».
Проблема выражается в том, что если на этот HDD постоянно идут операции чтения-записи, то все хорошо. И хорошо до тех пор, пока не запущен критичный к скорости записи на HDD процесс.
К примеру, все тот же многострадальный Transmission. Если поток данных прерывается на время, достаточное для проявления способности данных дисков «прятать голову в песок» (то есть на парковку), то при возобновлении закачки и быстром заполнении буферов Transmission, мы получаем «посмертную» записку в лог («wait atomic», а иногда даже и без нее) и зависание всего плеера.
Жареный петух клюнул меня именно тогда, когда я направил активные закачки на этот диск. Если мой ADSL-модем уходил в долгие реконнекты, а перед этим скорость приема у Transmission на C-200 была на максимуме, то по восстановлении соединения, скорость на рутере быстро показывала хороший результат и… брык! Приехали! Плеер в ступоре.
С аналогичными симптомами (A-200 с WD20EARS — рутер ночью перезагружается по расписанию, а плеер падает) обратился еще один «о-счастливчик».
Попытки поговорить с диском через стандартный набор команд ни к чему не приводят:
/dev/sda:
setting Advanced Power Management level to 0xfe (254)
HDIO_DRIVE_CMD failed: Input/output error
setting acoustic management to 254
setting standby to 0 (off)
APM_level = not supported
acoustic = 254 (128=quiet ... 254=fast)
Не отбиваемое у этих дисков желание заставить «позеленеть» пользователя.
Вдобавок, такое поведение параноидально нервирует наблюдателей за SMART-параметром Load_Cycle_Count. Хотя данных моделях дисков этот параметр не смертелен до 300 000 (!), страшна не цифра, а эффект от того, что к диску невозможно вовремя обратиться, несмотря на постоянно крутящиеся блины (параметр hdparm -S0 работает).
Диагноз
Вышеизложенная особенность имеет свое имя и называется технологией IntelliPark™, которая в свою очередь относится к набору функций обеспечения энергосбережения IntelliPower™. Мне, как и большинству, непонятно кто же в WDC так решил, но время срабатывания этой недетской шутки (таймер idle3
), по-умолчанию выставлено на 8 секунд!. То есть, через это короткое время, электроника диска будет стараться уложить его головы на парковочную площадку. При этом совершенно фиолетово, что в данный момент по SATA в буфер (например для WD10EADS это 32 мегабайта, либо 64МБ для WD20EARS) кто-то уже льет свои данные, будучи в полной уверенности что они будут сохранены на диск. Этой «фиче» важнее поэкономить электричество за счет не болтающихся в воздухе в полной боевой готовности, а валяющихся в «гнезде» головок.
С учетом ранее приведенной скорости записи на файловую систему Ext2 в 40 мегабайт/сек буфер может быть переполнен за … очень быстро! Учтем, что диск не в состоянии отдать все мегабайты буфера под запись. У него там ранее считанные данные лежат, которые имеют свой не просроченный срок годности. Очередная массовая попытка слива от Transmission после простоя, вызывает у диска порыв к записи. Но пока головы снимутся с «якоря», отпозиционируются (тут еще и «противный тормозистор» но необходимый для тишины в помещении, ключ hdparm’а -M128 замедляет скорость перемещения головок) и запишут, буфер не может быть освобожден для новой порции.
А когда у Linux на борту плеера заканчивается допустимое терпение (таймауты) на операцию, то получаем мы зависание.
Лечение
WDC в курсе, что их любят и уважают за недорогие и надежные диски, поэтому для тех, кто не в силах беречь еще больше электричества за счет потраченных нервов, выпустила утилиту, управляющую данным таймером.
«Таблетка» называется wdidle3. И лежит прямо на официальном сайте в софте раздела техподдержки.
Почитав некоторые форумы и статьи, в которых категорически не рекомендуют давать в руки неграмотному юзеру такой «тяжелый молоток», я аж улыбнулся до кончиков ушей
Софтина при своей работе открытым текстом говорит — «Sending command:» и набор кодов. А народная молва вокруг утилиты создала такой мрачный ореол инструмента по замене прошивки
, что у пользователей руки падают.
Да и в прилагаемой доке написано:
— Uses a Vendor Specific Command to set or get the idle3 timer
То есть, действительно, посылается проприетарная команда, в ответ на которую не знающие о ней диски будут молчать в тряпочку или ругаться.
Итак, собственно, сама таблетка.
wdidle3 v 1.05
В оригинале предназначалась для дисков WD1000FYPS-01ZKB0, WD7500AYPS-01ZKB0, WD7501AYPS-01ZKB0. Но работает без проблем с дисками WDC моделей WD20EADS, WD20EARS, WD15EADS, WD15EARS, WD10EADS, WD10EARS, WD8000AARS, WD7500AADS, WD7500AARS, WD6400AADS, WD6400AARS, WD5000AADS, WD5000AARS и некоторыми другими моделями (на ваш страх и риск).
Собрана только под старый добрый DOS. Не думаю, что у вас возникнет проблема найти LiveCD/LiveFlash с FreeDOS. Запускаем на стационарном компьютере или ноутбуке с SATA-портом наружу. Через переходник USB↔SATA не выйдет.
Утилита очень простая и очень «тупая».
Внимание! wdidle3 не позволяет задавать имя устройства — она лечит абсолютно ВСЕ найденные диски! То есть, если у вас в компьютере уже стоит детище от WDC, то и оно будет подвергнуто экзекуции.
Поэтому на всякий противопожарный случай, отстрелите лишние SATA-шлейфы от дисков WD на компьютере.
- Хотя у меня как-раз в стационарном PC такой случай — 2 HDD именно от WDC (SATA-80GB и IDE-320GB). Но они настолько старые, что на данную утилиту не реагируют совсем никак. Поэтому я злонамеренно не отключал их.
Но советую проверить, прежде чем пользоваться!
Ключ для опроса состояния таймера idle 3 дается в командной строке отдается утилите как /R
В ответ высыпается информация о всех найденных IDE или SATA дисках. Если диск производства WDC и имеет данный таймер, то отображается его значение в секундах или минутах.
Само значение таймера выставляется в промежутках от 8 до 12.7 секунд и от 30 до 300 секунд (на старых моделях только до 25.5 секунд). Не совсем понятно, к чему такая поразительная точность — до десятых долей секунды, но наверное, есть и в этом смысл.
Команда
должна выставить таймер на 5 минут.
Смотрите в отчет после выполнения команды — так ли это на самом деле. Если значение не выдается или отличается от заданного — то попробуйте уменьшить число.
- Для старых 2.5″ дисков WD, например BEVT ее нужно применять правильно. На этих дисках нельзя устанавливать таймер выше 10.5 секунд. Иначе диск начинает громко ронять головы и отваливаться от интерфейса. Также отключение таймера может привести к тому, что головки начнут парковаться каждую секунду. Исправить легко. Снова через wdidle3 устанавливаем таймер обратно на 8 или поднимаем до 10.5 секунд.
Команда
удаляет таймер idle 3, по факту отключая функцию IntelliPark™.
Для своего WD10EADS я выключил таймер — с тех пор «ни единого разрыва»
Справедливое замечание от skanik:
При включенном на SATA-контроллере режиме ACHI, утилита wdidle3, скорее всего, не определит подключенные дисковые устройства. Исправляется это переключением в BIOS режимa на
совместимый с IDE.
Только в этом случае постарайтесь все-таки отключить все «лишние» SATA-диски. Ибо случайный запуск Windows доставит вам массу развлечений (например, BSOD)
12 февраля 2011 г. в 13:34
нам бы попроще как нибудь
12 февраля 2011 г. в 13:49
Проще некуда.
Совет не для всех.
А только для тех, у кого HDD не лишние.
Прочти только «Лечение» и сделай выводы. Или задавай более конкретные вопросы прямо сюда.
13 февраля 2011 г. в 01:59
А как это все сочетается с параметром из LTU HDD_APM_DISABLE=1 ?
13 февраля 2011 г. в 06:09
HDD_APM_DISABLE=1 это hdparm -B255 /dev/устройство.
Для бывших у меня в руках WD Green это совершенно бесполезно — и даже вредно, так как WD10EADS кричал:
ata1.00: cmd ef/05:fe:00:00:00/00:00:00:00:00/40 tag 0 cdb 0x0 data 0
res 51/04:fe:00:00:00/00:00:00:00:00/40 Emask 0x1 (device error)
ata1.00: configured for UDMA/133
ata1: EH complete
sd 0:0:0:0: [sda] 1953525168 512-byte hardware sectors (1000205 MB)
sd 0:0:0:0: [sda] Write Protect is off
sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
ata1.00: cmd ef/05:fe:00:00:00/00:00:00:00:00/40 tag 0 cdb 0x0 data 0
res 51/04:fe:00:00:00/00:00:00:00:00/40 Emask 0x1 (device error)
ata1.00: configured for UDMA/133
ata1: EH complete
wait atomic, count=53904
А так как параметр APM скармливается не только при включении и при выключении в стендбай, но и просто так — по непонятным мне причинам, то диск в это время отвлекается на ругань.
При совпадениях с активными операциями записи, это приводило к wait atomic (простою с ожиданием завершений операций ввода-вывода ядра Linux).
К сожалению LTU неразборчив — он пытается скормить эти настройки всем дискам.
И если WD20EARS так не обижаются на попытку ими порулить, то более древний WD10EADS — да. Поэтому мне пришлось выставить только HDD_AAM_QUIET=1, а HDD_APM_DISABLE=0.
14 февраля 2011 г. в 00:41
WildFlexy добавте пожалуйста в описание использования wdidle3.exe, что нужно переключать режим конроллера HDD с AHCI (у кого включен AHCI) на IDE, иначе wdidle3 не находит винт (что естественно). А то сегодня тупил минут 10, пока вспомнил про это.
14 февраля 2011 г. в 12:57
WildFlexy
ОГРОМНОЕ СПАСИБО ЗА СТАТЬЮ!!!
Ранее я перерыл инет и не смог найти ни какой информации как же отключить это нововведение WD, правда это было еще 1,5год назад, купил себе тогда WD10EADS 2 шт. и долго плевался на их работу в Popcorn.
18 февраля 2011 г. в 14:44
А это всё актуально только при работе с Transmission?
18 февраля 2011 г. в 19:16
Это актуально для любых неторопливых WD Green если плеер не только читает, но и пишет.
Возможно, что будут бзики с microdc++ при паузе при закачке и последующем резком вырастании трафика.
Ситуацию эмулировал даже не ходя далеко — например, заливка по FTP на этот диск. После начала копирования делал паузу (в FAR при копировании кнопка ESC), ждал секунд 10-15 (чтобы Linux успел слить буфера на диск), потом продолжал копирование.
Плеер вис без убирания таймера с диска в половине экспериментов. Сейчас все ок.
Хотя если так не «извращаться» (Transmission, microdc++), то пусть он всегда будет зеленым.
Только логгирование (messages) на этот диск включать нежелательно — Load_Cycle_Count слишком быстро растет.
Спать так спать!
Работать — так работать!
20 февраля 2011 г. в 01:04
WildFlexy, скажи пожалуйста, можно ли убрать(отключить) этот таймер другим способом? У меня С-200, WD20EARS стоит внутри.
20 февраля 2011 г. в 12:41
Я тоже искал — можно ли другим способом.
К сожалению, под Linux у WDC ничего готового нет.
Поэтому только вынимать и к PC подключать.
20 февраля 2011 г. в 13:01
Тогда, всё что на диске есть — «погибнет»?
20 февраля 2011 г. в 13:49
alexey
Ничего не погибнет и не удаляется, это просто изменение конфига винта, файловая система не трогается. Я перевел два винта всем доволен
20 февраля 2011 г. в 14:07
Спасибо net, пойду к соседу (у меня только ноуты) — попробуем обуздать этот WD
20 февраля 2011 г. в 18:45
Таймер отключил, но зараза где-то в другом (плеер всё равно виснет при закачке). Я щас в другой ветке (http://nmt200.ru/hand/wildflexy/diskovaya-koncepciya-dlya-c-200-pri-rabote-s-transmission#comment-2226) с этим разбираюсь.
26 февраля 2011 г. в 00:12
А команда «D:> wdide3.exe /D» не повредит HDD? Это получается головка парковаться не будет?
27 февраля 2011 г. в 05:33
Это сбережет диск от износа механизма подвеса головок.
А висение голов посреди блина повредит HDD только при ударе, превышающем его устойчивость во время работы.
15 марта 2011 г. в 01:01
Столкнулся с новой проблемой. Хард горит:) Приводит к перезагрузке плеера. Сейчас качается два фильма. И…
# smartctl -a /dev/sda | grep Temp
194 Temperature_Celsius 0x0022 092 089 000 Old_age Always — 60
В чём может быть проблема?
16 марта 2011 г. в 16:24
Плеер С-200? Дисков 1 или 2? Вытяжной вертилятор стоит?
У Wildflexy тоже в корзине WD20EADS до 60 прогревался — но в жару летом, пока вентилятор не поставил.
16 марта 2011 г. в 21:39
Плеер А200. Хард — WD20EADS. Помимо того, что температура от 56 до 61, периодически отрубается торрент и самба. На слух и куллер выключается. Таймер отключил.
Вот что в логах (перед зависанием):
Mar 16 19:43:51 Popcorn user.err kernel: BUG: scheduling while atomic: transmission-da/0x00000104/1306
Mar 16 19:43:51 Popcorn user.warn kernel: Call Trace:
Mar 16 19:43:51 Popcorn user.warn kernel: [] dump_stack+0x8/0x34
Mar 16 19:43:51 Popcorn user.warn kernel: [] schedule+0x97c/0xa0c
Mar 16 19:43:51 Popcorn user.warn kernel: [] schedule_timeout+0x70/0x10c
Mar 16 19:43:51 Popcorn user.warn kernel: [] __alloc_pages+0x198/0x3e4
Mar 16 19:43:51 Popcorn user.warn kernel: [] cache_alloc_refill+0x37c/0x7e4
Mar 16 19:43:51 Popcorn user.warn kernel: [] __kmalloc+0xd8/0xe8
Mar 16 19:43:51 Popcorn user.warn kernel: [] __alloc_skb+0x64/0x124
Mar 16 19:43:51 Popcorn user.warn kernel: [] tcp_collapse+0x1d4/0x468
Mar 16 19:43:51 Popcorn user.warn kernel: [] tcp_prune_queue+0x150/0x35c
Mar 16 19:43:51 Popcorn user.warn kernel: [] tcp_data_queue+0x798/0x1008
Mar 16 19:43:51 Popcorn user.warn kernel: [] tcp_rcv_established+0x228/0xc44
Mar 16 19:43:51 Popcorn user.warn kernel: [] tcp_v4_do_rcv+0xfc/0x554
Mar 16 19:43:51 Popcorn user.warn kernel: [] tcp_v4_rcv+0xad8/0xb7c
Mar 16 19:43:51 Popcorn user.warn kernel: [] ip_local_deliver+0xe0/0x1c4
Mar 16 19:43:51 Popcorn user.warn kernel: [] ip_rcv+0x44c/0x6ac
Mar 16 19:43:51 Popcorn user.warn kernel: [] netif_receive_skb+0x2bc/0x454
Mar 16 19:43:51 Popcorn user.warn kernel: [] enet_poll+0x4d4/0x688
Mar 16 19:43:51 Popcorn user.warn kernel: [] net_rx_action+0xb4/0x218
Mar 16 19:43:51 Popcorn user.warn kernel: [] __do_softirq+0x84/0x120
Mar 16 19:43:51 Popcorn user.warn kernel: [] do_softirq+0x6c/0x74
Mar 16 19:43:51 Popcorn user.warn kernel: [] irq_exit+0x5c/0x74
Mar 16 19:43:51 Popcorn user.warn kernel: [] plat_irq_dispatch+0x358/0x508
Mar 16 19:43:51 Popcorn user.warn kernel: [] ret_from_irq+0x0/0x4
И этот блок текста повторяется до перезагрузки. Что-то я совсем ничего не понимаю…
16 марта 2011 г. в 21:43
Точнее хард WD20EARS.
21 марта 2011 г. в 11:56
Всем доброго времени суток!
WD10EARS
Отключил таймер с помощью загрузочной флэшки копируя wdidle3.
После отключения таймера при просмотре видео картинка стала зависать, помогает только перезагрузка плеера А-200.
посмотрите пожалуйста всё я правильно сделал
http://itmages.ru/image/view/151121/62d2ee17
http://itmages.ru/image/view/151124/14841297
21 марта 2011 г. в 12:14
Если стало хуже, то не отключай его совсем, а попробуй поставить его побольше, например:
И если утилиты LTU стоят, убери в файле /share/Apps/LTU/configure автоматическое управление APM:
21 марта 2011 г. в 12:33
хорошо я выставлю больше S300.
можно изменить путь по установке LTU не /share/Apps/LTU
а допустим /share/download/создать папкуProgram/LTU/….
/share/download/Program/Apps/LTU/….
21 марта 2011 г. в 16:23
По-моему не выйдет — там слишком много линков на служебный софт завязано на существующие пути.
И к чему таки сложности?
21 марта 2011 г. в 18:04
Если симлинк на старом месте оставить, то вполне выйдет:
mv /share/Apps/LTU /новое_место
ln -s /новое_место /share/Apps/LTU
Только, действительно, непонятно. Скрыть папку с приложениями, чтобы не светила в интерфейсе плеера, — это я еще понимаю, но зачем такое городить?
22 марта 2011 г. в 16:28
HDD_APM_DISABLE=0 удалить?
21 марта 2011 г. в 19:54
WildFlexy
Roman_V_M
Сложностей нет, Roman_V_M: я как то и не догодался скрыть папку Apps.
Спасибо!
23 марта 2011 г. в 09:03
Скрыть папку с приложениями, чтобы не светила в интерфейсе плеера /Apps/LTU не получается.
10 февраля 2012 г. в 20:29
Отключил эту фигню и всё равно винт тупит по-страшному.
Скорость перезаписи с винта навинт — 25-30 Мбайт/с
11 февраля 2012 г. в 12:15
а где вы, интересно, вычитали — что приблуда автопарковки влияет на скорость??? это не связные вещи. Тупость вашего винта зависит прямо пропорционально — от его фрагментации.