LINUX.ORG.RU
ФорумTalks

pm-utils: убъем ваш винт за пол года

 ,


11

3

Какой упоротый разработчик запилил вот это:

/usr/lib/pm-utils/power.d/harddrive

# Default values on AC
DRIVE_SPINDOWN_VALUE_AC="${DRIVE_SPINDOWN_VALUE_AC:-0}"
DRIVE_WRITE_CACHE_AC="${DRIVE_WRITE_CACHE_AC:-1}" 
DRIVE_POWER_MGMT_AC="${DRIVE_POWER_MGMT_AC:-254}"
DRIVE_ACOUSTIC_MGMT_AC="${DRIVE_ACOUSTIC_MGMT_AC:-0}"

# Default values on battery
DRIVE_SPINDOWN_VALUE_BAT="${DRIVE_SPINDOWN_VALUE_BAT:-6}" # Парковка головок винта каждые 30 сек неактивности
DRIVE_WRITE_CACHE_BAT="${DRIVE_WRITE_CACHE_BAT:-0}" 
DRIVE_POWER_MGMT_BAT="${DRIVE_POWER_MGMT_BAT:-1}" # Агрессивный метод энергосбережения, винт паркуется сразу после прекращения активности.
DRIVE_ACOUSTIC_MGMT_BAT="${DRIVE_ACOUSTIC_MGMT_BAT:-254}"

Ниже идет хелп, что к чему.

This hook has 8 tuneable parameters:
DRIVE_SPINDOWN_VALUE_AC = time until a drive will spin down on AC
Defaults to 0, which disables drive spindown.
DRIVE_SPINDOWN_VALUE_BAT = time until a drive will spin down on battery
Defaults to 6, which will spin the drive down after 30 seconds of inactivity.

See the -S option on the hdparm manpage for more information.

DRIVE_WRITE_CACHE_AC = Whether the drive caches writes on AC
Defaults to 1, which means that the drive will cache writes internally.
DRIVE_WRITE_CACHE_BAT = Whether the drive caches writes on battery.
Defaults to 0 which means that the drive will not cache writes internally.

See the -W option on the hdparm man page for more information.

DRIVE_POWER_MGMT_AC = Drive Advanced Power Management value on AC
Defaults to 254 for max performance.
DRIVE_POWER_MGMT_BAT = Drive Advanced Power Management value on battery
Defaults to 1 for max power savings.

See the -B option on the hdparm man page

Drive acoustic management:
DRIVE_ACOUSTIC_MGMT_AC = Drive Acoustic Management value on AC
Defaults to 254 for max head speed.
DRIVE_ACOUSTIC_MGMT_BAT = Drive Acoustic Management value on battery
Defaults to 128 for max quietness.

See the -M option on the hdparm man page.
Итог. Ноут взят был в начале декабря. Спустя 3.5 недели на винте было ~7k парковок, а еще спустя 2 недели - 9.5k. Хорошо что догадался проверить винт на предмет наличия «зелености» aka WD Green (свой грин благополучно вылечил:)). Скрипт подправил, но осадочек остался. Есть желание написать на мыло разработчику и послать ему лучи добра. Будьте бдительны, и при покупке новых железяк, в часности винтов, смотрите сразу данные smart.

$subj

P.S. Для тех кто не в теме: ресурс парковок головок ограничен, на разных винтах по разному, но в целом производитель дает гарантию на то, что 300-600k парковок винт отработает.

P.P.S. Gentoo, но есть подозрения, что и в других дистрах та же херня.

UPD: http://cgit.freedesktop.org/pm-utils/tree/pm/power.d/harddrive - значения те же, что и привел выше, буду пинать разрабочиков, думал может гентушние майнтейнеры накосячили

UPD2: https://bugs.freedesktop.org/show_bug.cgi?id=36956 - бага на официальной багзилле.

UPD3: https://bugs.gentoo.org/show_bug.cgi?id=452362 баг на гентушной багзилле

★★★★★

Ответ на: комментарий от pacify

Как? 365*4 ~ 1.5к

Ну и что ты посчитал? Если диск принудительно паркует головки по два раза в минуту, то в год это больше миллиона Load_Cycle. HDD хватит и половины.

Lighting ★★★★★ ()
Ответ на: комментарий от leg0las

Нет, не оно. В этом баге говорится, что pm-utils перезаписывает кастомные настройки параметров hdparm записанные laptop-mode-tools. Короче, конфликт laptop-mode-tools и pm-utils. Стоит завести баг непосредственно про дефолтные параметры pm-utils. Вот ссылка на этот баг в багзилле pm-utils: https://bugs.freedesktop.org/show_bug.cgi?id=36956

cchr ()
Ответ на: комментарий от Lighting

Ну и что ты посчитал?

Исходное сообщение: «Если винт стопать/юзать по несколько раз в день, то наберётся до пары тысяч парковок за год.»
(под «стопанием» понимается парковка через задание подходящего параметра APM в Linux/Windows)

Мой ответ был в стиле: «Топик не читай, сразу отвечай.» ))

pacify ★★★★★ ()
Ответ на: комментарий от cchr

А, понял. Только скорее всего пост нового бага бессмыслен, т.к. майнтейнер может спихнуть, мол в оф. багзилле имеется (или все же имеет смысл запостить?). Мне интересно найти, и связаться с майнтейнером гентушного пакета, ведь написать патч для исправления пару строк в скрипте - это не сложно.

leg0las ★★★★★ ()
Последнее исправление: leg0las (всего исправлений: 1)
Ответ на: комментарий от leg0las

Багзиллу для того и придумали, чтобы не заваливать мейнтейнеров кучей почты, пости баг. Мейнтейнер все равно может послать оформлять багу и будет прав. Найти почту можно через поиск на http://packages.gentoo.org/

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

cchr ()
Ответ на: комментарий от leg0las

Кусок отвечающий за параметры

       if hdparm_try_apm "$WANTED_DISK"; then
            if hdparm_is_on_battery; then
                hdparm_set_option -B128
                # we allow spindown, but set a spindown time of 3 minutes by
                # default so the disk isn't constantly power cycling on a busy
                # machine
                hdparm_set_option -S36
            else
                hdparm_set_option -B254
            fi
        fi

daemonpnz ★★★★★ ()
Ответ на: комментарий от dexpl

Лукавите, товарищ.

Именно в */power.d, конечно, ничего такого нет, однако после спячки или [пере]загрузки ноутбука значение hdparm -B сбрасывается в дефолт. Поэтому я и сделал квирк:

$ cat /usr/lib/pm-utils/sleep.d/99hdparm
#!/bin/bash
# This script switches the HDD PM off when resume working after sleeping

case "$1" in
        resume|thaw)
                hdparm -B254 /dev/sda
                hdparm -S0 /dev/sda
                ;;
        *)
                ;;
esac

exit $?
А также в rc.local засунул это:
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.

touch /var/lock/subsys/local
hdparm -B254 /dev/sda
hdparm -S0 /dev/sda
Кстати, значение hdparm -B можно выставить и в 255, но на одном из моих винтов это значение не прокатило, поэтому использую 254.

carasin ★★★★★ ()
Ответ на: комментарий от leg0las

Российское комьюнити тут не при чём. А по поводу pm-utils см. мой камент выше.

carasin ★★★★★ ()
Ответ на: комментарий от cchr

Если бы еще кто объяснил или дал FAQ почитать, а то в местном хелпе нихрена нет(

leg0las ★★★★★ ()
Ответ на: комментарий от cchr

Багзиллы:-) Ни разу не постил баг, на ходу разбираюсь(

leg0las ★★★★★ ()
Ответ на: комментарий от leg0las

Хм, там вроде интерфейс сам подсказывает как и что заполнять. FAQ уже посоветовали, если будут какие конкретные вопросы, пиши.

cchr ()

блин. А напишите какие параметры нормально то будет поставить? Плизики.

Bad_ptr ★★★★ ()
Ответ на: комментарий от leg0las

назначил кому надо - теперь пусть мэйнтэйнеры думают

Pinkbyte ★★★★★ ()

Я думаю проблема сильно преувеличена (нет док-в что харды дохнут именно от этого). Хотя у себя я бы это отключил чтобы ноут не доставал кликами.

true_admin ★★★★★ ()
Ответ на: комментарий от leg0las

Пардон за мой кривой инглиш.
Default power management causes damage HDD

Default power management causes HDD damage или Default power management causes damage of HDD

teod0r ★★★★★ ()
Ответ на: комментарий от teod0r

Default values in /usr/lib/pm-utils/power.d/harddrive for battery causes

Default values in /usr/lib/pm-utils/power.d/harddrive for battery cause
окончание s если единственное число

teod0r ★★★★★ ()
Ответ на: комментарий от carasin

Именно в */power.d, конечно, ничего такого нет

Я это и имел в виду

после спячки или [пере]загрузки ноутбука значение hdparm -B сбрасывается в дефолт

Впредь постараюсь не экстраполировать личный опыт без должных проверок. Ни один из доступных мне сейчас винтов не умеет Advanced Power Management

dexpl ★★★★★ ()
Ответ на: комментарий от Pinkbyte

Благодарю. Ждем-с патчей и подправленый/новый ебилд.

leg0las ★★★★★ ()

Спустя 3.5 недели на винте было ~7k парковок, а еще спустя 2 недели - 9.5k

Расслабь булки и включи мозг. У тебя за месяц при твоем режиме работы наравно 10к парковок (лень точнее считать). Производитель дает гарантию на 300к. Т.е. 30 месяцев у тебя диск гарантированно отпахает, и «полгода» — полнейший 4.2 Более того это не значит что диск на 300к+1й парковке рассыпется.

Насколько мне известно таймаут парковки на дисках явно не задается, а определяется hdparm -B. ИМХО, режимов всего два: либо паркуем с использованием «оптимальных» параметров, заданных производителем (зависят от прошивки и внедор-специфичных дисковых утилит), либо не паркуем вообще.

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

Macil ★★★★★ ()
Последнее исправление: Macil (всего исправлений: 1)
Ответ на: комментарий от Macil

Не рассыпется. Но зачем винт подвергать износу? Можно задать парковку раз в 5 минут, и режим помягче (-B который).

А на счет «месяц пропахал» - корректней сравнивать Power_On_Hours и кол-во парковок. Пробег там ну совсем небольшой.

leg0las ★★★★★ ()
Последнее исправление: leg0las (всего исправлений: 1)

Я не разбираюсь в теме, но подскажите, моему винту осталось недолго? pm-utils стоит.

smartctl -a /dev/sdb | grep Load_Cycle_Count
193 Load_Cycle_Count        0x0032   200   200   000    Old_age   Always       -       369
Если это не то, то как проверить, сколько парковок осталось?

Pyzia ★★★★ ()
Ответ на: комментарий от Pyzia

Это то, винт судя по количеству парковок - совсем свежий, месяца 3-4 где-то? И исчисляются не тысячами.

# smartctl -a /dev/sda | grep 193
193 Load_Cycle_Count        0x0032   200   200   000    Old_age   Always       -       1154
# smartctl -a /dev/sdb | grep 193
193 Load_Cycle_Count        0x0032   200   200   000    Old_age   Always       -       1870

sdb - тот самый WD Green, о котором писал выше. Пробег - 15 месяцев нормального юзания генты, причем тремя пользователями.

leg0las ★★★★★ ()
Последнее исправление: leg0las (всего исправлений: 1)
Ответ на: комментарий от Macil

Вот собственно текстовичок выхлопа smarctctl на ноуте за 30.12.12 (3.5 недель):

...
  9 Power_On_Hours          0x0012   100   100   000    Old_age   Always       -       142
...
193 Load_Cycle_Count        0x0012   100   100   000    Old_age   Always       -       7116
...

Несложный математический расчет покажет, что 300k циклов он намотает за почти 6000 часов. Мои винты на десктопе уже намотали 5350 часов за указаные выше 15 месяцев.

Собственно из-за чего весь сыр-бор - поставь разработчик более адекватные параметры, ну пусть паркуется каждые 5-10 минут, и вопрос бы бы снят.

leg0las ★★★★★ ()
Последнее исправление: leg0las (всего исправлений: 2)
Ответ на: комментарий от leg0las

Спасибо за ответ, диску более года. Я так понимаю, основную роль сыграло то, что комп играет роль домашнего сервачка и перезагружается очень редко?

Pyzia ★★★★ ()
Ответ на: комментарий от Pyzia

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

leg0las ★★★★★ ()
Ответ на: комментарий от sergej

Оно не для всех моделей подходит в этом проблема.

bhfq ★★★★★ ()

WD Green

Тоже отключил агрессивную парковку на 1TB EZRX на десктопе, тестировал некоторое время, максимум было до 65 парковок в час при простое (дофига факторов) и на порядок меньше - во время использования компьютера. Поставил ожидание в 300сек через wdidle и счётчик парковок вернулся к обычному ритму, как у простых HDD. К производительности и шуму WD Green претензий не имею.

FiXer ★★☆☆☆ ()
Ответ на: комментарий от leg0las

Но зачем винт подвергать износу? Можно задать парковку раз в 5 минут, и режим помягче (-B который).

Дык не настраивается же! Вернее, настраивается, но как-то хрен знает как.

У меня 400 часов на 7000 парковок. hdparm -B 128, это если от батарейки. Те же самые настройки по агрессивности парковки, что и у тебя (только без spin-down). Отношение поменьше, скорее связано с тем, что я больше работаю от сети, чем от батареи.

Не парюсь. Совершенно. Ибо, давным-давно отношение к электронике сугубо потребительско-пренебрежительное. Приходит с возрастом.

поставь разработчик более адекватные параметры

Разработчик жесткого диска же! Его параметры весьма адекватны. Просто у него иные представления об адекватности.

Можешь посмотреть обновления прошивки для твоего диска, только прежде чем шить - почитай release notes, что именно там исправлено.

Разрабочик дистрибутива может поставить только да/нет.

Единственное что ты можешь сделать - запретить (или задать более мягкие параметры) для spin-down. Spin-down тоже сокращает время жизни, еще более серьезнее, чем парковка, но в таком состоянии диск жрет минимум энергии и еще лучше защищен от ударов.

Macil ★★★★★ ()
Ответ на: Ты даже мою мамочку не напугаешь от bhfq

Re: Ты даже мою мамочку не напугаешь

Ты даже мою мамочку не напугаешь

ИЧХ, нормализованный SMART-параметр даже не приблизился сколь-нибудь существенно к THRESH. Не то чтобы конечный пользователь имеет право предполагать линейность данного параметра, но все-таки.

Macil ★★★★★ ()
Ответ на: комментарий от Macil

Дык не настраивается же! Вернее, настраивается, но как-то хрен знает как.

Хм, тогда почему прописав параметры винта как при работе от сети (-B в том числе) рост парковок прекратился? Хотя да, может это "-S 6" накрутил мне.

Ибо, давным-давно отношение к электронике сугубо потребительско-пренебрежительное. Приходит с возрастом.

Аналогично. Но хочется, чтобы ноут (и винт в нем) прослужил долго.

Разработчик жесткого диска же! Его параметры весьма адекватны. Просто у него иные представления об адекватности.

Речь о WD Green или о баге в pm-utils таки?:) В первом случае - выше был пруф, а во втором виноват не разработчик винта (хитача кстати говоря в моем случае), а программист сторонней утилиты для работы с этим самым жестким диском. К нему и претензии.

Единственное что ты можешь сделать - запретить (или задать более мягкие параметры) для spin-down

Я буду гуглить на счет параметров, и со временем подберу оптимальные) Сейчас пока винт работает в одном режиме - что от батареи, что от сети. В принципе я знаю как и где он эксплуатируется, поэтому не особо переживаю за порчу винта)

leg0las ★★★★★ ()
Ответ на: комментарий от leg0las

Хм, тогда почему прописав параметры винта как при работе от сети (-B в том числе) рост парковок прекратился

Да потому что ты, задав -B 254, отключил большую часть PM. 255 отключает полностью, но как пишут в man hdparm, не все винты поддерживают.

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

Я конечно могу ошибаться, но параметром -B интенсивность парковки не задается. Т.е. эффективный список параметров 1, 127, 128, 254, 255, если P - парковка, S - spindown, то соответственно SP, Sp, sP, sp, полное отключение PM. Но, если честно, экспериментов я не проводил, да и просто лень смотреть на самом деле.

А вообще, есть такое хорошее правило, и я запарился здесь его уже повторять. Пользователь не имеет право интерпретировать RAW значения SMART. Интерпретировать их можно в одном случае: если под рукой у тебя даташит на диск (в чем я сомневаюсь, ввиду полной огороженности).

Интерпретировать можно только нормализованные SMART-атрибуты. По исключительно простому правилу: если VALUE <= THRESHOLD, то *возможно* диску поплохело. О линейности нормализованного SMART-атрибута, к сожалению, тоже нельзя строить каких-либо предположений. Т.е. если параметр == 1, а порог == 0, то это *вообще ничего не значит*.

Кстати, по той же причине не рекомендуется определять температуру жесткого диска по SMART. Может выдавать как и нормализованную температуру, так и ненормализованное значение АЦП (у терморезистора характеристики нелинейные). Если возникли какие-то подозрения, то пользоваться вендор-специфичной утилитой.

а во втором виноват не разработчик винта (хитача кстати говоря в моем случае), а программист сторонней утилиты для работы с этим самым жестким диском

Оба не виноваты. Если уж кто-то виноват, то архитектура современных дистрибутивов. Кстати, systemd решает некоторое количество проблем, связанных с сабжем, через более совершенную подсистему ведения системных журналов.

Чисто в теории, нужен IO-планировщик, который будет взаимодействовать с юзерспейс-логикой, уже определяющей условия работы. Причем это нужно как и для SSD, так и для HDD. И там, и там - масса своих тараканов.

Macil ★★★★★ ()
Ответ на: комментарий от Macil

Я понял твою мысль. В любом случае это чтение мануалов и доки, чем я и займусь.

leg0las ★★★★★ ()
Ответ на: Да конечно от bhfq

http://habrahabr.ru/post/106273/

У меня винты этой серии на сервере. Да и на ноуте та же фигня под убунтой была с pm-utils. Так вот никаких мифических тормозов нет по той причине что вывести головку из паркинга это десятки миллисекунд.

Что у него за тормоза я не знаю. Но у меня есть винт от wd у которого проблемы с фирмварью. В результате винт тупо рандомно отваливается при простое пока ему ata reset не послать. Но это не проблема парковки головок.

true_admin ★★★★★ ()
Ответ на: комментарий от Macil

У тебя за месяц при твоем режиме работы наравно 10к парковок (лень точнее считать)

Если точнее: за 2 недели прирост был в 2,5k парковок. 10k парковок будет наработано за 8 недель, 100k — за 80. Год — это 52 недели с хвостиком. То есть, 300k будет наработано больше чем за 4 с половиной года. Собственно, у меня на жёсткий диск (не ноутбучный, обычный) гарантия как раз 5 лет и составляла.

kss ★★★★★ ()

Таже хрень. Удивлялся, почему тормозит вим при работе от батарейки. Оказалось что режим стояламый агрессивный) В день набенгало по 1000 парковок, емнип.

actics ()

Да, это все печально. afair это композиция ra и apm приводит к печальному финалу

vasily_pupkin ★★★★★ ()
Ответ на: комментарий от smilessss

Я знаю эту штуку, я ее использую. Хватит некромантить, вон выше набежали белки.

bhfq ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.