HOWTO : Køre en SATA disk med max performance, manuel løsning og en udev regel for en permanent løsning

Har du en guide til en funktion eller et program? Har du tips og trick, som du gerne vil dele med andre? Post dem her.
lath
Indlæg: 5095
Tilmeldt: 27. apr 2008, 02:16
IRC nickname: lars_t_h
Geografisk sted: Fyn

HOWTO : Køre en SATA disk med max performance, manuel løsning og en udev regel for en permanent løsning

Indlæg af lath »

Mit problem
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
Husk mellemrumstegnet imellem su/sudo og kommandoen

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

  1. Gå til denne mappe /etc/udev/rules.d/

    Kode: Vælg alt

    cd /etc/udev/rules.d/
  2. Lav en ny fil som hedder 50-hd_power_save.rules

    Kode: Vælg alt

    touch 50-hd_power_save.rules
  3. Rediger den fil

    Kode: Vælg alt

    nano 50-hd_power_save.rules
  4. 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
    .
  5. For at få nano til at skrive filen til disken, så skal du taste denne kombination CTRL+o (bogstavet o)
  6. Dernæst skal du forlade nano editoren. Det gør du med taste kombinationen: CTRL+x
  7. Ændringen træder i kraft efter næste boot.

/Lars
Jeg er Software ingeniør (Diplomingeniør) i Informationsteknologi og indlejede systemer, hvor indlejrede systemer er computer (microcontroller) + elektronik i for eksempel et TV, en router, en vaskemaskine og den slags