Fedora a úsporné technologie pevných disků [aktualizováno 10.3.2013]

Než se dostanu k samotnému článku, přešel jsem na Fedoru! Konkrétně se mi v notebooku usadila Fedora 17 s kódovým označením Beefy Miracle. K přechodu na jinou distribuci mě donutily dvě věci – 1) Ubuntu poslední dobou často vypisovalo hlášky o pádu interní aplikace a 2) nedařilo se mi rychle nainstalovat debian-bootimage a potřeboval jsem druhý den ráno fungovat. Jediné jiné iso image, co jsem měl po ruce, byla právě F17 a vůbec toho nelituji. Bohužel, v některých případech linuxové distribuce (co jsem četl, tak ani Windows) nedokáží správně pracovat s úspornými featurkami pevných disků a tak se může stát, že nadmíru odstavují čtecí hlavy. To má mimo jiné za následek zkracování životnosti pevných disků. V mém případě jsem měl během jednoho měsíce hodnotu Load/Unload Cycle Count vyšší než 9000! Což je sakra dost. Za tyto problémy mohou šetřící technologie výrobců, díky kterým se nějaký ten Watt ušetří, ale radši budu mít menší výdrž na baterii než pořád poslouchat to otravné klepání hlaviček. Můj pevný disk je HITACHI HTS545050A7E380, který má maximální hodnotu Load/Unload Cycles Count udávanou výrobcem 600 000. To je sice velké číslo, nicméně pokud bych nechal nastavení tak jak bylo, do dvou let by bylo po srandě. Teď už chápu proč je záruka 24 měsíců. Ve výchozím stavu byla hodnota APM (Advanced Power Managment) 128, což je u mého disku „Low Power Idle“ mód. Ten údajně snižuje spotřebu o 60-65%, ale odstavuje čtecí hlavy na odstavnou rapmu, což vydává známý nepříjemný zvuk, a doba za kterou je disk schopen znovu pracovat je ~ 300ms. Proto jsem se rozhodl disk přepnout do „Active Idle“ módu, který čtecí hlavy sice, odstaví, ale ne na odstavnou rampu a díky tomu je „doba obnovení“ ~ 20ms. Pro „Active Idle“ mód je třeba změnit APM nahodnotu v rozmezí 192-254. Vytvoříme tedy soubor /etc/pm/sleep.d/96hdparm s následujícím obsahem:

#!/bin/sh

case $1 in
	resume)
               	hdparm -B 192 /dev/sda
                ;;
        thaw)
             	hdparm -B 192 /dev/sda
                ;;
        *) exit $NA ;;
esac
exit 0

/dev/sda je samozřejmě název disku, pro který upravujeme hodnoty. Poté, co je soubor vytvořen, je mu nutné nastavit spustitelný příznak – sudo chmod +x /etc/pm/sleep.d/96hdparm Bez toho by se po probuzení notebooku ze spánku hodnota APM vrátila na 128, což nechceme. Na závěr bych chtěl upozornit, že hodnoty APM a jejich význam se může u jiných výrobců disků měnit, proto je dobré najít si pro svůj disk datasheet a hodnoty volit podle něj. V době psaní článku se mi Load/Unload Cycles Count ustálilo na 9055 a za běhu systému dále neroste. Snad za pár dní či týdnů nebudu muset psát něco jiného.

Aktualizace 10.3.2013

S upgradem na Fedoru 18 se mi stal tento skript nefunkční. Zdá se, že obsluhu uspávání/probouzení převzal systemd namísto pm-utils, takže je potřeba další zásah do systému. Postup je následující:

Vytvořte si soubor /etc/systemd/system/set_hdd_apm.service s tímto obsahem

[Unit]
Description=Setting of APM to value 192
After=sleep.target

[Service]
Type=simple
ExecStart=/usr/bin/set_apm.sh

[Install]
WantedBy=suspend.target

V ExecStart odkazuji na jiný soubor, protože při probouzení potřebuji obsloužit ještě nastavení trackpointu, ale je možné tam vložit příkaz rovnou. Soubor /usr/bin/set_apm.sh by měl vypadat následovně

#!/bin/sh
sleep 10
hdparm -B 192 /dev/sda

Zpoždění 10 sekund je nutné, protože obsluha nastavení disku se spouštěla až po vykonání příkazu, takže vše bylo jinak k ničemu. Těď už stačí jen nově vytvořený soubor zařadit mezi povolené systemd rutiny a je hotovo:

sudo systemctl enable set_hdd_apm.service
sudo systemctl daemon-reload

Poslední příkaz restartuje systemd, takže nemusíte restartovat celý systém a ničit si uptime 🙂

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *