[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: hdparm -B 255 /dev/sda



В Пнд, 02/03/2009 в 06:06 +0300, George Shuklin пишет:
> 02.03.09, 02:02, "Mishustin Alexey" <shumkar@shumkar.ru>:
> 
> > Инструкция по отключению частой парковки головок харддиска на ноутбуке,
> > приведенная на http://forums.debian.net/viewtopic.php?t=32794 , не
> > работает. Я сделал все, что там написано, и даже больше (отключил
> > Laptop-mode, правил /etc/hdparm.conf и др.), но головки паркуются
> > по-прежнему, а hdparm -I /dev/sda | grep Advanced выдает:
> > Advanced power management level: 128
> >    * Advanced Power Management feature set
> > Пробовал уже, от безысходности, класть в кронтаб ежеминутно скрипт
> > следующего содержания:
> > IFCLICK=`hdparm -I /dev/sda | grep "Advanced Power" | grep '*'`
> > if [ -n $IFCLICK ]; then
> > hdparm -B 255 /dev/sda
> > hdparm -S 0 /dev/sda
> > sudo -u shumkar -H /usr/bin/zenity --display=:0.0 --warning
> > --title="/usr/local/bin/hdparmer.sh" --text='HDD\ hdparm\ options\ have\
> > been\ reset' &
> > fi
> > Так этот скрит выводит сообщение при каждом своем запуске - каждую
> > минуту. И каждую минуту что-то упорно перенастраивает hdparm обратно на
> > 128.
> > Только сли я делаю  hdparm -B 255 /dev/sda и hdparm -S 0 /dev/sda
> > вручную, это остается до следующей перезагрузки/просыпания/
> > подключения/отключения от сети. Но мне неудобно выполнять эти команды
> > вручную постоянно.
> > Заменил уже все вхождения 'hdparm -B 128' на 'hdparm -B 255' в /etc/acpi
> > - не помогло. Все по-прежнему.
> > Описанная проблема имеет место быть в Lenny. 
> 
> 
> Опция -k у hdparm'а использовалась?

Применил опцию -k в /etc/hdparm.conf. Не помогло. После любого
acpi-события apm по-прежнему включается, hdparm выставляется в -B 128.
От батареи ли я работаю, от сети ли - без разницы. 

Наверное, я где-то накосячил в конфигах, другого объяснения у меня пока
нет. Помогите, пожалуйста, разобраться!

Прикладываю листинги (в файле).

-- 
С уважением,
Алексей Мишустин
======= Листинг 1 =======

# cat /etc/hdparm.conf | sed -n '/[#]/!p' | sed -n '/.\+/p'
quiet 
/dev/sda {
	apm = 255
	spindown_time = 0 
	dma = on
	keep_settings_over_reset = on
}

======= Листинг 2 =======

# cat /etc/apm/event.d/20hdparm | sed -n '/[#]/!p' | sed -n '/.\+/p'
set -e
APMD_DRIVES=sda
APMD_SPINDOWN=18
HDPARM=/sbin/hdparm
[ -x "${HDPARM}" ] || exit 0
[ -n "${APMD_DRIVES}" ] || exit 0
for DRIVE in $APMD_DRIVES; do
  [ -b "${DRIVE}" ] || exit 0
done
[ "${APMD_SPINDOWN}" -gt 0 ] || exit 0
power_conserve ()
{
    for DRIVE in $APMD_DRIVES; do
	"${HDPARM}" -q -S 0 -B 255 "${DRIVE}" || true
    done
}
power_performance ()
{
    for DRIVE in $APMD_DRIVES; do
      "${HDPARM}" -q -S 0 -B 255 "${DRIVE}" || true
    done
}
choose_power ()
{
    if on_ac_power > /dev/null
    then
	power_performance
    else
	power_conserve
    fi
}
if [ "${1}" = "start" ]; then
    choose_power
elif [ "${1}" = "resume" ] && [ "${2}" != "standby" ]; then
    choose_power
elif [ "${1},${2}" = "change,power" ]; then
    choose_power
elif [ "${1}" = "stop" ]; then
    power_performance
fi
exit 0

======= Листинг 3 =======

# cat /etc/acpi/ac.d/90-hdparm.sh  | sed -n '/[#]/!p' | sed -n '/.\+/p'
. /usr/share/acpi-support/power-funcs
DO_HDPARM=y
if [ -e /usr/sbin/laptop_mode ] ; then 
  LMT_CONTROL_HD_POWERMGMT=$(. /etc/laptop-mode/laptop-mode.conf && echo "$CONTROL_HD_POWERMGMT")
  if [ "$LMT_CONTROL_HD_POWERMGMT" != 0 ] ; then
    DO_HDPARM=n
  fi
fi
if [ $DO_HDPARM = y ] ; then
  getState;
  
  for dev in /dev/sd? /dev/hd? ; do
    if [ -b $dev ] ; then
      if hdparm -i $dev 2> /dev/null | grep -q 'AdvancedPM=yes' ; then
	if [ $STATE = "BATTERY" ] ; then
	  hdparm -B 255 $dev
	else
	  hdparm -B 255 $dev
	fi
      fi
    fi
  done
fi 

======= Листинг 4 =======

# cat /etc/acpi/resume.d/90-hdparm.sh  | sed -n '/[#]/!p' | sed -n '/.\+/p'
. /usr/share/acpi-support/power-funcs
DO_HDPARM=y
if [ -e /usr/sbin/laptop_mode ] ; then 
  LMT_CONTROL_HD_POWERMGMT=$(. /etc/laptop-mode/laptop-mode.conf && echo "$CONTROL_HD_POWERMGMT")
  if [ "$LMT_CONTROL_HD_POWERMGMT" != 0 ] ; then
    DO_HDPARM=n
  fi
fi
if [ $DO_HDPARM = y ] ; then
  getState;
  
  for dev in /dev/sd? /dev/hd? ; do
    if [ -b $dev ] ; then
      if hdparm -i $dev 2> /dev/null | grep -q 'AdvancedPM=yes' ; then
	if [ $STATE = "BATTERY" ] ; then
	  hdparm -B 255 $dev
	else
	  hdparm -B 255 $dev
	fi
      fi
    fi
  done
fi

======= Листинг 5 =======

# cat /etc/laptop-mode/laptop-mode.conf  | sed -n '/[#]/!p' | sed -n '/.\+/p'
VERBOSE_OUTPUT=0
ENABLE_LAPTOP_MODE_ON_BATTERY=0
ENABLE_LAPTOP_MODE_ON_AC=0
ENABLE_LAPTOP_MODE_WHEN_LID_CLOSED=0
MINIMUM_BATTERY_CHARGE_PERCENT=0
DISABLE_LAPTOP_MODE_ON_CRITICAL_BATTERY_LEVEL=0
HD="/dev/[hs]d[abcdefgh]"
PARTITIONS="auto /dev/mapper/*"
ASSUME_SCSI_IS_SATA=1
LM_BATT_MAX_LOST_WORK_SECONDS=600
LM_AC_MAX_LOST_WORK_SECONDS=360
CONTROL_READAHEAD=1
LM_READAHEAD=3072
NOLM_READAHEAD=128
CONTROL_NOATIME=0
USE_RELATIME=1
CONTROL_HD_IDLE_TIMEOUT=0
LM_AC_HD_IDLE_TIMEOUT_SECONDS=0
LM_BATT_HD_IDLE_TIMEOUT_SECONDS=0
NOLM_HD_IDLE_TIMEOUT_SECONDS=0
CONTROL_HD_POWERMGMT=1
BATT_HD_POWERMGMT=255
LM_AC_HD_POWERMGMT=255
NOLM_AC_HD_POWERMGMT=255
CONTROL_HD_WRITECACHE=0
NOLM_AC_HD_WRITECACHE=1
NOLM_BATT_HD_WRITECACHE=0
LM_HD_WRITECACHE=0
CONTROL_MOUNT_OPTIONS=1
LM_DIRTY_RATIO=60
NOLM_DIRTY_RATIO=40
LM_DIRTY_BACKGROUND_RATIO=1
NOLM_DIRTY_BACKGROUND_RATIO=10
DEF_UPDATE=5
DEF_XFS_AGE_BUFFER=15
DEF_XFS_SYNC_INTERVAL=30
DEF_XFS_BUFD_INTERVAL=1
DEF_MAX_AGE=30
XFS_HZ=100
LM_SECONDS_BEFORE_SYNC=2

То есть Laptop_mode у меня отключен:

#cat /proc/sys/vm/laptop_mode 
0

=========================

Те же строчки, что и в листингах 3-4 (

if [ $STATE = "BATTERY" ] ; then
  hdparm -B 255 $dev
else
  hdparm -B 255 $dev
fi 

), выставлены у меня и в /etc/acpi/battery.d/90-hdparm.sh , 
/etc/acpi/start.d/90-hdparm.sh , /etc/acpi/suspend.d/90-hdparm.sh .
Я уж не стал их сюда тоже лепить.

Еще я наделал, сам не знаю зачем ;), в каждой из папок /etc/acpi/ac.d|battery|start|resume|suspend по такому файлу 99-hdd-fix.sh:

#! /bin/bash
hdparm -B 255 /dev/sda
hdparm -S 0 /dev/sda

А еще создал пустой файл /etc/pm/power.d/laptop-tools (с единственной строчкой #! /bin/bash), т.к. он был частью успешно сработавшего рецепта от той же самой проблемы на соседнем ноуте с убунтой.

В общем, чего только не перепробовал... Плиз хэлп!

Reply to: