In Linux, the hard disk can be put to sleep entirely if it is not needed or it can be run in a more economic or quieter mode. On modern laptops, you do not need to switch off the hard disks manually, because they automatically enter an economic operating mode whenever they are not needed. However, if you want to maximize power savings, test some of the following methods.
The hdparm application can be used to modify various hard disk settings.
The option -y
instantly switches the hard disk to the
standby mode. -Y
puts it to sleep. hdparm
-S x
causes the hard disk to be spun down after
a certain period of inactivity. Replace x
as
follows: 0
disables this mechanism, causing the hard
disk to run continuously. Values from 1
to
240
are multiplied by 5 seconds. Values from
241
to 251
correspond to 1 to 11
times 30 minutes.
Internal power saving options of the hard disk
can be controlled with the option -B
.
Select a value from 0
to 255
for maximum saving to maximum throughput. The result depends
on the hard disk used and is difficult to assess. To make
a hard disk quieter, use the option -M
.
Select a value from 128
to
254
for quiet to fast.
Often, it is not so easy to put the hard disk to sleep. In Linux, numerous processes write to the hard disk, waking it up repeatedly. Therefore, it is important to understand how Linux handles data that needs to be written to the hard disk. First, all data is buffered in the RAM. This buffer is monitored by the pdflush daemon. When the data reaches a certain age limit or when the buffer is filled to a certain degree, the buffer content is flushed to the hard disk. The buffer size is dynamic and depends on the size of the memory and the system load. By default, pdflush is set to short intervals to achieve maximum data integrity. It checks the buffer every 5 seconds and writes the data to the hard disk. The following variables are interesting:
/proc/sys/vm/dirty_writeback_centisecs
contains the delay until a pdflush thread wakes up in hundreths of a second.
/proc/sys/vm/dirty_expire_centisecs
defines after which timeframe a dirty page should be written out latest. Default is 3000 which means 30 seconds.
/proc/sys/vm/dirty_background_ratio
maximum percentage of dirty pages until pdflush begins to write them. Default is 5%.
/proc/sys/vm/dirty_ratio
when the dirty page exceed this percentage of the total memory, processes are forced to write dirty buffers during their time slice instead of doing more writes.
![]() | Impairment of the Data Integrity |
---|---|
Changes to the pdflush daemon settings endanger the data integrity. |
Apart from these processes, journaling file systems, like ReiserFS and Ext3,
write their metadata independently from pdflush, which also prevents the
hard disk from spinning down. To avoid this, a special kernel extension has
been developed for mobile devices. See
/usr/src/linux/Documentation/laptop-mode.txt
for
details.
Another important factor is the way active programs behave. For example, good editors regularly write hidden backups of the currently modified file to the hard disk, causing the disk to wake up. Features like this can be disabled at the expense of data integrity.
In this connection, the mail daemon postfix makes use of the variable
POSTFIX_LAPTOP
. If this variable is set to
yes
, postfix accesses the hard disk far less
frequently.