Jeg bruger openSUSE Leap 15.0 og har haft problemer med at at min (mekaniske/traditionelle) harddisk konstant går i device sleep (tænk: harddisk sleep/dvale).
Det resulterer i nogle klik lyde, som fremkaldes af en voldsom acceleration. Det er ekstremt usundt for en mekanisk harddisk.
Et andet resultat er at nogle gange så stopper hele systemet fordi at harddisken først skal op i omdrejninger. Vi snakker om lag på op til 30 sekunder!
Det lag kommer fra en konfiguration af en kerne tråd der hedder pdflush - som er noget man ikke skal pille ved, hvis man ikke ved hvad man gør.
Syndebukken er en feature i AHCI som hedder Aggressive Link Power Management (ALPM)
AHCI er : Advanced Host Controller Interface
Følgevirkninger af at en harddisk går i device sleep
Hele system stopper fordi mange vigtige programmer, f.eks X serveren - der står at tegne en GUI på skærmen - er i en kernel context(=programmet er inde i Linux kerne land, fordi det har lavet et system kald, syscall).
I den kernel context venter de i en kø på at I/O scheduleren giver programmet mulighed for at skrive til eller læse fra filer/mapper, hvor en fil også er en UNIX socket/named pipe.
X serveren bruger en UNIX socket.
Før du begynder at skrive terminal kommandoer
Jeg foretrækker et være i en root / superbruger shell/terminal.
Det gør man sådan her:
- openSUSE Leap 15.0
Kode: Vælg alt
su -
... og derefter indtaste det korrekte kodeord for root / superbrugeren - Ubuntu
Kode: Vælg alt
sudo su -
... og derefter indtaste sit korrekte kodeord.
Man forlader en hvilken som helst shell/terminal ved at skrive:
Kode: Vælg alt
exit
At du kan lukke en terminal / shell på den måde, betyder også at hvis du har startet en terminal og at du ikke har startet en ny terminal session / shell - så kan du lukke terminal vinduet ved at du i dit script skrive
Kode: Vælg alt
exit
For alle kommandoer herunder antager jeg at du er root / superbrugeren i den terminal session du har startet.
Hvis du ikke har lyst til at åbne en root shell / terminal skal du for:
- openSUSE Leap 15.0 skrive
Kode: Vælg alt
su
... foran hver kommando. - Ubuntu skrive
Kode: Vælg alt
sudo
... foran hver kommando
Manuel løsning
Manuel løsning er at køre denne kommando - efter hver boot, sleep/suspend og dvale:
Kode: Vælg alt
hdparm -B 254 /dev/sdX
... hvor X er drev bogstavet for den harddisk du have max performace fra
Permanent løsning 1 - BIOS / UEFI
I BIOS/UEFI sætter man disken til at blive styret af IDE i stedet for AHCI.
Den løsning giver dog et hak i tuden på performance.s
Permanent løsning 2 - udev regel
- Gå til denne mappe /etc/udev/rules.d/
Kode: Vælg alt
cd /etc/udev/rules.d/
- Lav en ny fil som hedder 50-hd_power_save.rules
Kode: Vælg alt
touch 50-hd_power_save.rules
- Rediger den fil
Kode: Vælg alt
nano 50-hd_power_save.rules
- I den fil skal du skrive
Kode: Vælg alt
ACTION=="add", SUBSYSTEM=="scsi_host", KERNEL=="host*", ATTR{link_power_management_policy}="max_performance"
udev regelen skal skrive på en linie!
Du indsætter tekst i en terminal / shell ved at bruge taste kombinationen SHIFT+INSERT
. - For at få nano til at skrive filen til disken, så skal du taste denne kombination CTRL+o (bogstavet o)
- Dernæst skal du forlade nano editoren. Det gør du med taste kombinationen: CTRL+x
- Ændringen træder i kraft efter næste boot.
/Lars