HOWTO hvile og dvale strømstyring med systemd

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 hvile og dvale strømstyring med systemd

Indlægaf lath » 5. jan 2019, 01:28

Strømstyring med systemd

Dette indlæg er en HOWTO er kun en række kommandoer, og ikke om hvordan man konfigurerer systemds support for ACPI (Advanced Configuration and Power Interface)

Ikke så langt nede i indlægger møder du teknik baskeren, altså ekstra tips og informationer, der kunne give dig en dybere forståelse af hvad der egentlig foregår.

Kommandoer til systemd

Nu om dage bruges en init(=pid 1) process (program) som hedder systemd, så det er systemd der styrer alt hvad angår hvile, og dvale

Her er de
  • Gå i hvile

    Kode: Vælg alt

    systemctl suspend
  • Gå i dvale

    Kode: Vælg alt

    systemctl hibernate
  • Genstart

    Kode: Vælg alt

    systemctl reboot
  • Sluk

    Kode: Vælg alt

    systemctl poweroff
  • Den her har du nok aldrig hørt om før, men du kan læse mere om den nede i teknikbaskeren

    Kode: Vælg alt

    systemctl hybrid-sleep

Det er ikke en fejl at der ikke er nogen sudo, fordi systemctl kommandoerne kan bruge af en almindelig bruger, hvis et Linux system har PolicyKit installeret - og det har Ubuntu.

At man kan udføre de nævnte strømstyrings-kommanoer uden sudo gør dem interessante i scripts.

For eksempel så kan man kan få en computer at starte på et bestemt tidspunkt ved at konfigurere BIOS/UEFI.

Her kunne man så køre et script som laver noget administrativt arbejde. Når systemet så egenligt ikke længere behøver at være oppe, så kan bruge en af systemctl strømstyrings-kommandoerne for at spare strøm.

I stedet for et tidspunkt kunne man kan også starte ved at have Wake On LAN (WOL) aktiveret i BIOS/UEFI, og så vågne computere ved at sende en magic Ethernet frame til et net interface's (Ethernet kortets) MAC adresse. En Rasperry Pi kunne holde øje med hændelser der kræver noget mere RAM og CPU saft, og så starte den større computer med en Ethernet WOL Magic pakke

Man kan selvfølge bruge WOL på alle de tidspunkter man ønsker.

Teknik basker til styrbord!

Noget om ACPI tilstande
  • ACPI mode S3 er sleep / suspend (hvile), også kaldes Suspend to RAM (STR).
  • ACPI mode S4 er Hibernation (dvale) også kaldet Suspend to Disk
  • Hybrid-sleep er en kombination af ACPI S3 (hvile), og ACPI S4 (dvale)
    • Ved Hybrid-sleep sker der det at Linux (kernen) skriver indholdet af RAM ned i en swap partition (ACPI S4) - altså som at Ubuntu skulle gå i dvale.
      Der er bare lige den detalje at i Hybrid sleep så ufører kernen en ACPI S3 (hvile)
    • Fodelen ved Hybrid sleep, altså kombinere hvile og dvale er at Ubuntu kan starte lige lige så hurtigt som fra ACPI S3 (hvile) tilstand, men hvis strømmen går, feks en laptop går helt død fordi batteriet er fladt, så kan Ubunut vågne fra ACPI S4 (dvale).
    • Ulempen ved Hybrid Sleep er at Ubuntu er lige så lang som at gå Hybrid-sleep som det tager at gå i dvale.

Krav til din computer før Ubuntu kan bruge ACPI S3 (hvile)
  • Du skal have en BIOS der understøtter ACPI
  • Hvis du har en nyere BIOS, eller UEFI, så har BIOS/UEFI ACPI support
  • Når din BIOS/UEFI har ACPI support, så skal ACPI S3 tilstand være aktiveret før hvile virker i Ubuntu.

Krav til din computer før Ubuntu kan bruge ACPI S4 (dvale)
Ubuntu skal have en swap partition. En swap fil kan ikke bruges, fordi at ACPI ikke kan håndtere styresystemers filsystemer.

Du skal dimensionere en swap partition, således at den har mindst den samme størrelse/kapacitet som fysisk RAM.

Hvis du derefter har brug for mere swap plads, så laver du en swap fil, hvor du i /etc/fstab fortæller kernen at swap filen er det swap område den skal starte med at bruge. En swap fil skal "installeres" i root (/) filsystemets partition.

Hvis din computer bruger en traditionel (mekanisk) harddisk, og du vil være snedig, så ligger du en swap partition yderst på disken, fordi en mekanisk harddisk har den største vinkelhastighed yderst på pladen.

Yderst på disken er det samme som først i listen af partitions i installations programmets partition konfigurationsværktøj, hvor en partitions placering er angivet, som først (i begyndelsen) .

Vinkelhastighed er den hastighed et objekt (her disk overfladen) opnår i forhold til et andet objekt (her læse skrive hovedet) når det første objekt(disk overfladen) bevæger sig i en cirkel form. Du kan tænke på vinkelhastighed ,som vinkel(=bevæge-sig-rundt- i-en-cirkel) hastighed, hvilket er fuldstændig korrekt.

Du kan selv indse det ved at bevæge en finger i en lille cirkel, og så sammenligne det med at gøre det samme i den større cirkel. Du finder ud af at du skal bevæge fingeren i den større cirkel meget hurtigere end den lille - for at komme rundt i cirkelen (360 grader) på den samme tid.

For en mekanisk harddisk, svarer en rotation på 2.592.000 (7200*360) grader, som er 14.400φ (7200*2Pi) på 1 minut - til 7200 RPM.

Yderst vs længere inde på disken:
Harddisken i min desktop computer kan overføre 35 MB/sekund inderst på disken, men 90 MB/sekund yderst på disken.
Så for en swap partion yderst vs inderst på min harddisk, så er overføres pages(=4096 bytes blokke) 90/35= ca 2,57 gange langsommere inderst på disken i forhold til yderst på disken.

Bemærk at en swap partition skal være en pæn nr 2 hvis du skal bruge en EFI partition. Årsagen er at der er en fejl i nogle implementeringer af UEFI firmware, hvor de friskt antager at EFI partionen altid er den første.
Firmware er software bagt ind i noget flash hukommelse, der bruges af en microcontroller, som er en komplet mini computer, der bor i en IC kreds.

For at kunne ACPI S4, så skal en swap partioion være lige så stor som - eller mere end - de antal GB fysisk RAM din computer har.
  • Hvis Ubuntu har brugt så meget swap at den tilbageværde mængde swap er mindre end størrelsen på din fysisk RAM så kan din computer ikke gå i ACPI S4 tilstand (dvale).
  • Bemærk at hvis køber mere RAM, så kan du bare lave fra 1 til flere swap paritions der tilsammen matcher de ekstra GB fysisk RAM du computer har fået.
  • Du kan også tilføje en ekstra swap partition hvis din nuværende swap partition ikke kan indeholde indholdet af fysisk RAM + den mængde swap din computer normalt bruger.

/Lars

Rettet masser af gange for bedre sprog og udradering af sprogbøffer
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

Tilbage til "Guides og HowTo's"

Hvem er online

Brugere der læser dette forum: [Bot] og 1 gæst