LINUX.ORG.RU

парковачные головки после спящего

 , ,


0

1

основываясь на этой pm-utils: убъем ваш винт за пол года
и вот этой теме Выбор hdd 2.5

установил, что у меня диск может скоро накрыться, ну и просто не приятен еще этот звук не с того, не с всего

root@hp:~# smartctl --all /dev/sda | grep Load_Cycle_Count
193 Load_Cycle_Count        0x0032   058   058   000    Old_age   Always       -       420083

система стартовых скриптов у меня OpenRC, ноут полюбил отправлять в спячку и после гибернации получаю опять Тцокание hdd

думал что нашел решение... но вот нет, не помогло(
pm-utils: убъем ваш винт за пол года (комментарий)

root@hp:~# cat /usr/lib64/pm-utils/sleep.d/99hdparm
#!/bin/bash
# This script switches the HDD PM off when resume working after sleeping
case "" in
 resume|thaw)
  hdparm -B 254 /dev/sda
  ;;
 *)
  ;;
esac
exit $?
root@hp:~# ls -l /usr/lib64/pm-utils/sleep.d/99hdparm
-rwxr-xr-x 1 root root 162 Июл 19 01:45 /usr/lib64/pm-utils/sleep.d/99hdparm*

Есть у кого какие-нибудь идеи, как добиться, что бы после спящего hdparm -B 254 /dev/sda было?

★★★★★

Я бы первым делом проверил, сколько парковок выдерживает диск по спецификации. Может быть он уже мёртв.

lampslave ★★
()

Отредактировать в power.d/harddrive значения DRIVE_POWER_MGMT_AC и DRIVE_POWER_MGMT_BAT на нужные, т.е. 254 как я понял из вашего поста. После этого можно выкинуть sleep.d/99hdparm.

Возможный источник имеющихся у вас проблем: при thaw и resume хуки вызываются в обратном порядке, поэтому значение установленное вашим sleep-хуком 99hdparm переписывается sleep-хуком 00powersave.

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

power.d/harddrive

у меня просто нет такого( вот что есть

$ ls -l /usr/lib64/pm-utils/power.d/
итого 4
-rwxr-xr-x 1 root root 693 Июн 10  2009 sched-powersave*
$ cat /usr/lib64/pm-utils/power.d/sched-powersave 
#!/bin/sh

path_mc="/sys/devices/system/cpu/sched_mc_power_savings"
path_smt="/sys/devices/system/cpu/sched_smt_power_savings"
val=0

case "$1" in
        true)
                echo "**sched policy powersave ON"
                val=1
                ;;
        false)
                echo "**sched policy powersave OFF"
                val=0
                ;;
esac

# Based on the values (1-enable, 0-disable) for these controls,
# sched groups cpu power will be determined for different domains.
# When power savings policy is enabled and under light load conditions,
# scheduler will minimize the physical packages/cpu cores carrying the
# load and thus conserving power

if [ -w "$path_mc" ] ; then
        echo $val > $path_mc
fi
if [ -w "$path_smt" ] ; then
        echo $val > $path_smt
fi

exit 0

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

первым делом проверил, сколько парковок выдерживает диск по спецификации

как и через что такое можно осуществить?

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

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

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

Количество парковок и сама спецификация наверняка лежит на сайте производителя, ищите свою модель.

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

Не густо. Что за дистр? Покажи еще вывод ls -l /usr/lib64/pm-utils/sleep.d, ls -l /etc/pm/power.d/, ls -l /etc/pm/sleep.d/.

Кстати, ты уверен что твой хук 99hdparm отрабатывает вообще?

cchr
()

Походил по ссылкам в ОП. У тебя WD в ноутбуке? Про idle3-tools слышал, знаешь зачем оно? А то может мы тут лечим симптомы, а надо лечить причину.

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

Про idle3-tools слышал, знаешь зачем оно?

Неа, не в теме

У тебя WD в ноутбуке?

hitachi вот такой вроде как http://www.nix.ru/autocatalog/notebook_hdd/HDD_640_SATAII_Hitachi_Travelstar_...

Что за дистр?

agilia

Покажи еще вывод

$ ls -l /usr/lib64/pm-utils/sleep.d
итого 56
-rwxr-xr-x 1 root root 2490 Июн 10  2009 00auto-quirk*
-rwxr-xr-x 1 root root  274 Июн 10  2009 00logging*
-rwxr-xr-x 1 root root  203 Июн 10  2009 00powersave*
-rwxr-xr-x 1 root root  809 Июн 10  2009 01grub*
-rwxr-xr-x 1 root root  664 Июн 10  2009 49bluetooth*
-rwxr-xr-x 1 root root  991 Июн 10  2009 55NetworkManager*
-rwxr-xr-x 1 root root  335 Июн 10  2009 75modules*
-rwxr-xr-x 1 root root  455 Июн 10  2009 90clock*
-rwxr-xr-x 1 root root 1098 Июн 10  2009 94cpufreq*
-rwxr-xr-x 1 root root  297 Июн 10  2009 95led*
-rwxr-xr-x 1 root root 2268 Июн 10  2009 98smart-kernel-video*
-rwxr-xr-x 1 root root  162 Июл 19 01:45 99hdparm*
-rwxr-xr-x 1 root root 5685 Июн 10  2009 99video*
$ ls -l /etc/pm/power.d/
итого 0
$ ls -l /etc/pm/sleep.d/
итого 0

ты уверен что твой хук 99hdparm отрабатывает вообще?

нет, скорей не уверен( чем уверен

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

Если Hitachi, то idle3-tools не в тему. На WD есть таймер, который паркует головки каждые n секунд неактивности и это n по дефолту маленькое, но это не твой случай.

нет, скорей не уверен( чем уверен

Выложи куда-нибудь кусок /var/log/pm-suspend.log после hibernate/thaw. А проверить очень просто: добавь команду создания файла в каком-нибудь месте и проверь создается ли этот файл.

cchr
()

BTW, скрипт странный. Должно быть по идее не

case "" in
...
esac
, а что-то вроде
case "$1" in
...
esac

Если выполнить /usr/lib64/pm-utils/sleep.d/99hdparm thaw, значение меняется?

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

Есть у кого какие-нибудь идеи

ioping -D -i 6 /var/tmp

Просто дёргать диск каждые 6 секунд.

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

вот, именно после спячки http://pastebin.com/ruC3uxgR

проверить очень просто: добавь команду создания файла в каком-нибудь месте и проверь создается ли этот файл

ну это я могу), только вот после лога на pastebin надо ли?

просто вроде как написано
/usr/lib64/pm-utils/sleep.d/99hdparm thaw hibernate: success

и если надо б, то куда посоветуешь (touch прописать) в срипте после или перед «exit $?»?

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

Если выполнить /usr/lib64/pm-utils/sleep.d/99hdparm thaw, значение меняется?

по ходу нет

root@hp:~# smartctl --all /dev/sda | grep Load_Cycle_Count
193 Load_Cycle_Count        0x0032   058   058   000    Old_age   Always       -       420086
root@hp:~# smartctl --all /dev/sda | grep Load_Cycle_Count
193 Load_Cycle_Count        0x0032   058   058   000    Old_age   Always       -       420086
root@hp:~# /usr/lib64/pm-utils/sleep.d/99hdparm thaw
root@hp:~# smartctl --all /dev/sda | grep Load_Cycle_Count
193 Load_Cycle_Count        0x0032   058   058   000    Old_age   Always       -       420086
NK ★★★★★
() автор топика
Ответ на: комментарий от NK

Судя по логу твой хук вызывается. Но работает ли он правильно? См мой коммент выше про case.

touch после exit писать точно не надо :) Поставь перед exit или перед case, разницы особо нет.

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

Тогда поправь строчку с case на ту, которую я указал выше с $1 и попробуй снова.

Hint: если вызвать просто без параметра hdparm -B /dev/sda оно напишет текущее значение. Мониторить вывод smartctl не обязательно.

P.S. по твоему выводу smartctl нельзя ничего сказать про то, отработал ли хук правильно. Ты ожидал, что значение Load Cycle Count уменьшится что ли? Я имел в виду значение выдаваемое hdparm -B.

cchr
()
Последнее исправление: cchr (всего исправлений: 2)

Сходную проблему я решил следующей командой в хуке:
[code]
hdparm -B 255 -S 0 /dev/sda
[/code]

Про лимит парковок - у ноутбучных винтов может быть от 600 000 до 300 000 парковок, зависит от модели. Так что еще не всё потеряно.

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

я так кстати примерно уже и сделал воспользовавшись советом
парковачные головки после спящего (комментарий)

за час после возвращения из засыпания пока никаких изменений вроде бы не случилось

root@hp:~# smartctl --all /dev/sda | grep Load_Cycle_Count
193 Load_Cycle_Count        0x0032   058   058   000    Old_age   Always       -       424138
root@hp:~# smartctl --all /dev/sda | grep Load_Cycle_Count
193 Load_Cycle_Count        0x0032   058   058   000    Old_age   Always       -       424138

Единственно, лично к тебе вопрос, а у тебя зачем ключ "-S 0" ну из каких соображений?

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

Ты ожидал, что значение Load Cycle Count уменьшится что ли?

То что уменьшится, это точно не ожидал)

Я имел в виду значение выдаваемое hdparm -B

У меня вот так

root@hp:~# hdparm -B /dev/sda
  -B: bad/missing power-management-mode value (1..255)

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

Во-первых, точно так же только с ключом -B диск щелкал. Я с самого начала решил, что мне важнее экономия моторесурса диска, чем какое-то небольшое сбережение от парковок. Согласно ману, -B управляет APM, а -S управляет spindown (то, что нужно). При этом -S 0 отключает эту фичу вообще, т.е. диск не должен парковать головки для энергосбережения в принципе. Возможно, хватает только -S 0, но я не проверял.

$ smartctl -a /dev/sda | grep Load_Cycle_Count
193 Load_Cycle_Count        0x0032   176   176   000    Old_age   Always       -       73722
$ smartctl -a /dev/sda | grep Power_On_Hours
  9 Power_On_Hours          0x0032   081   081   000    Old_age   Always       -       14467
lu4nik ★★★
()
Ответ на: комментарий от NK

а это не вредно?

Вредно, наверное. Пользоваться диском тоже вредно для диска. Как и хранить его, не пользуясь. В идеале надо просто таймер парковки на большее значение поставить, но раз этого нет, почему бы не дёргать диск так? Одно-два дополнительных движения головки за 6 секунд. За сутки это будет 86400/6 == 14400 лишних движений. При нагрузке головка диска довольно сильно дёргается, но не может дёргаться быстрее, чем раз в 15-17 мс, это примерно 60 раз за секунду. Итого получается за сутки имеем дополнительной нагрузки на диск: 14400/60 == 240 секунд = 4 минуты (или 8 минут, если движений два) интенсивного seek'а. А дальше сам думай, считаешь ты это вредным или нет.

i-rinat ★★★★★
()
Ответ на: комментарий от NK

Хм. Видимо другой версии hdparm. Тогда сделай hibernate/thaw, убедись, что действительно имеет место частая парковка головок (на слух или мониторь LCC), после это запусти свой хук с параметром thaw и повтори наблюдения.

case тот поправил?

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

не, case в обще не трогал, тотально все закоментил, оставил только `hdparm -B 255 /dev/sda`

мониторю через

root@hp:~# smartctl --all /dev/sda | grep Load_Cycle_Count
193 Load_Cycle_Count        0x0032   058   058   000    Old_age   Always       -       424139

вроде работает, Load_Cycle_Count после возврата из спящего выше1 не росло пока что (а может и в обще не росло), спасибо за помощь

Наверно еще спрошу у тебя кое-что, а на твой взгляд все таки эта штука с case более полезная, чем чисто тупа одна строчка, как у меня сейчас?

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

вроде работает, Load_Cycle_Count после возврата из спящего выше1 не росло пока что (а может и в обще не росло), спасибо за помощь

Эт хорошо. Пожалуйста)

Наверно еще спрошу у тебя кое-что, а на твой взгляд все таки эта штука с case более полезная, чем чисто тупа одна строчка, как у меня сейчас?

В твоем случае разницы нет. Просто оно выполняется не только после resume/thaw, но и перед hibernate/suspend, но никак на последнюю пару не влияет.

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

понял, спасибо...

аа, это походу у меня все таки ошибка в скрипте была и именно где ты там мне писал, я просто через cat << EOF > /usr/lib64/pm-utils/sleep.d/99hdparm делал вывод-создание-пропись и то что фигня в exit $? получается углядел и сделал так exit \$? , а с case и недоглядел вот, вот так хотел получить

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

NK ★★★★★
() автор топика
Ответ на: комментарий от Falcon-peregrinus

А зачем такой сложный скрипт? Просто строчку hdparm -B 254 /dev/sda нельзя разве?

из-за ненависти к этому звуку от hdd , как-то думал готовеньким решением воспользоваться и действительно, все не так уж и сложно оказалось, поступил, как посоветовали

спасибо

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