Artikel top billede

(Foto: Computerworld)

Stress din cpu med Linux

Prøv en stresstest og se, om maskinen overlever dine skrappe krav.

Af Torben Okholm, Alt om Data

Denne artikel er oprindeligt bragt på Alt om Data. Computerworld overtog i november 2022 Alt om Data. Du kan læse mere om overtagelsen her.

Hvis der er en ting, Linux er god til, er det at tvinge hardware ud i tovene. Uanset om det er en diminutiv Arm-cpu, der sprinter som en hamster på koffein inden i en Raspberry Pi, eller det kolossale computernet, der spreder sig over Europa og knuser sig igennem de petabytes af data, der bliver skabt af CERNs Large Hadron Collider: Linux arbejder meget hårdt.

Det skyldes, at den klump kode, der sidder i operativsystemets hjerte, er blevet optimeret til at få det bedste ud af alle de ressourcer, der er til rådighed, uanset om det er en lille cpu eller et netværk af mange tusinde. Ubrugt hukommelse får ikke lov at vente, ekstra cpu- og gpu-cyklusser bliver assimileret, og lagerplads bliver paralleliseret, forked og Raidet.

Alt det betyder, at Linux er et særlig godt valg, hvis man vil tvinge sin hardware til den yderste grænse. Hvis din cpu kan overleve nog-le få dage under konstant belastning fra Linux-kernen, kan du roligt regne med, at den ikke svigter halvvejs gennem weekendens om-gang spil. Og hvis du vil køre en Linux-maskine som server og gemme den på loftet, kan du være sikker på, at den ikke svigter, før du har sat stigen væk.

Stressbehandling af hardware var før en god metode til optimering af cpu-ydelsen. Teorien gik på, at når man stressede siliciummet tidligt, kunne man vride lavere spænding og højere clockhastigheder ud. Det gælder ikke i så høj grad for moderne processorer, for de fleste gennemgår behandlingen under testprocessen i produktionen.

Det betyder dog ikke, at stress ikke længere kan være nyttig. Det kan stadig bruges til at afsløre det svageste led i en konfiguration og sikre den kæde af driftssikkerhed, der begynder med psu’en og ender med, at gpu’en arbejder under massiv belastning med alt, hvad man smider efter den. Det giver tillid til køleanlægget og syste-mets ydelse. Uanset om man overclocker sit system eller ej, er denne tillid essentiel.

Enkle løsninger

Et operativsystem, der blomstrer på grund af sin popularitet, betyder at der er mange måder at belaste det på. Det bør ikke betyde no-get, hvilken distribution du bruger, eller hvor gammel den er. Pakkemanageren vil være fuld af funktioner, der kan stresse din cpu.

Hvis du ikke har Linux installeret, kan du nemt bruge en af de mange Live cd/dvd‘er, der kan boote til et arbejdende Linux-miljø, uden at du behøver gøre andet end at sætte disken i drevet og sørge for, at systemet booter fra den. Vi anbefaler den nyeste Ubuntu, hvis du ikke har brugt Linux for nylig, fordi den er kompatibel med det største udvalg af hardware. Den er også nem at bruge.

Man kan endda køre nogle enkle test fra de fleste bootmenuer, idet mange distributioner omfatter “memtest”, der kværner sig igennem hukommelsen og leder efter problemer. Men når du når til Linux-desktoppen, behøver du ikke at installere noget, hvis du ikke har lyst. Man kan for ek-sempel opnå er meget hurtig og nem løsning ved at åbne kommandlinje-terminalen og skrive: while :; do :; done

Det er et meget enkelt Bash-script (Bash er den form for kommandlinje, som de fleste Linux-distroer slår til som standard). Det opret-ter en uendelig løkke, der burde holde cpu’en 100 procent i gang. Til andre kerner og cpu’er er du nødt til manuelt at køre andre udga-ver af den samme kommando. Det kan du gøre ved at åbne andre terminaler eller tilføje en ny fane til den aktuelle terminal.

Men der er flere ulemper ved denne fremgangsmåde. På trods af 100 procent cpu-brug bruger den ikke de forskellige dele af cpu’en ens. Der er for eksempel risiko for, at fpu’en ikke bliver rørt, og det kan påvirke cpu-kølerens generelle effektivitet.

Derfor er det en god ide at bruge et værktøj, der er specifikt beregnet til at sætte cpu’en under belastning. Det gør man nemt fra kommandolinjen ved at installere en anden ‘stress’-kommando. Men før du går videre, skal du trykke [CTRL] + [C] i terminal-sessionen for at standse de uendelige løkker, vi oprette-de.

Stress har flere navne

‘Stress’ er ikke en komplet løsning, men den er stærk nok til de fleste situationer. Og da den er specifikt beregnet til at belaste systemet, er den bedre til at bruge hele cpu’ens konstruktionssæt end Bash-kommandoerne, og det gælder også andre komponenter såsom hu-kommelse og lager, hvis man vælger det.

Når den er installeret, skriver man stress på kommandolinjen, og det giver et simpelt sæt ar-gumenter. Hvis man for eksempel tilføjer --cpu 2, udløser det to funktioner, der konstant udregner kvadratroden af et tal. Man kan tilføje allokation/deallokation af hukommelse med argumentet --vm 1 efterfulgt af --vm-bytes 128M for den mængde hukommelse, man vil have gang i.

Endelig, hvis man vil føje noget filsystem-input/output til blandingen, bruger man argumentet --io 1. Det tvinger filsyste-met til konstant at rydde sine buffere. Når man samler alt dette, skal man bruge denne kommando: stress --cpu 2 --vm 1 --vm-bytes 128M --io 1.

Efter at have kørt denne kommando bør du konstatere, at dit system arbejder under stor belastning, forhåbentlig i en sådan grad, at det begynder at knibe med responsen. Dog ikke for meget; Linux’ scheduler er fremragende til at vedligeholde interaktive sessioner under perioder med stor belastning.

Hvis man vil forstå lidt mere om, hvad stresskommandoen laver, kan man tilføje argumentet --verbose. Det giver noget baggrundsinformation om, hvad værktøjet egentlig gør ved systemet, og man får at vide, hvordan processerne kører. Men hvis du vil se mere om, hvordan dit system klarer belastningen, skal du se på et par systemværktøjer.

Overvåg din cpu

Den tilbagevendende kommando til overvågning af et Linux-system hedder ‘top’. Der findes ikke en Linux-distribution, eller for den sags skyld en Unix-installation, der ikke viser en dynamisk procesliste, herunder den særdeles kryptiske brugstabel, når man skriver denne kommando.

Proceslisten er sorteret efter brug, og de mest cpu-slugende opgaver ligger øverst. Hvis du stadig kører den førnævnte ‘stress’-kommando, bør du se fire separate ‘stress’-processer. De udgør to til cpu-opgaver, en til hukommelsesallokering – den bør være genkendelig på grund af størrelsen af ‘VIRT’-søjlen – og en til filsystem-input/output.

Alt, hvad der ellers slås om at være med, bør boble op og ned blandt disse opgaver. Den øverste tabel viser oppetiden for din maskine, hvor mange brugere der er logget ind, og treenig-heden for ‘load average’, der ikke giver nogen mening, hvis man ikke har set dem før, men de tal er vigtige i overvågningen af systemet. Sådan ser det ud for os: load average: 1,14; 0,78; 0,20.

Disse tre tal står for gennemsnitlig belastning over stadig længere tidsrum: et, fem og 15 minutter, fra venstre til højre, og tallet re-præsenterer de krav, der bliver stillet til cpu’en. Bemærk, at 1,0 svarer til 100 procent af en enkelt cpu (2,0 ville svare til 100 procent over to cpu’er, hvis det er systemets konfiguration), og det er uden nogen andre processer, der venter på at bruge cpu’en. 0,5 er 50 procent af en enkelt cpu.

I vores system blev cpu-kapaciteten i det forløbne minut overbelastet sådan, at 0,14 eller 14 procent af processerne ven-tede på at køre. De tidligere målinger viser systemets tilstand, da vi stoppede og kørte stress, hvilket bragte cpu’en på cirka 80 procent og 20 procent.

Det er derfor, server-administratorer ser rædselsslagne ud, hvis de har et tal på over 0,8 for enten fem eller 15 minutter, fordi det betyder (medmindre man er udsat for Slashdotting), at der er en proces på systemet, der løber løbsk. Hvis du ønsker et kønnere alternativ til ‘top’ uden at blive alt for grafisk, omfatter mange distributioner ‘htop’, der viser den samme information, blot i et lidt mere øjevenligt format.

StressLinux

Selvom disse løsninger er effektive, er de ikke udviklet med henblik på stress-test. Og mens man nemt kan fylde sin Linux-installation op med yderligere pakkeinstallation, er dette et af de tilfælde, hvor en specific Linux-distribution giver vældig god mening. Brugen af en Live cd i stedet for en installation sikrer for eksempel ens personlige data, hvis testen fører til en systemgenstart eller totalt nedbrud.

Der er adskillige distributioner, der kan klare det, men vores foretrukne hedder meget passende StressLinux. I modsætning til Ubuntu er det en fritskrabet distribution, der kun rummer de værktøjer, man har brug for til at teste sin hardware, og intet andet. Fordelen er, at det er en lille distribution. Dens 64bit iso-download fylder omkring 220 MB, og der er images til både usb-nøgler og en VMware-appliance, hvis du har brug for alternativer.

Ved første boot vælger du standard-valget i Startmenuen, og få øjeblik-ke senere ser du log-inprompten. Standard-login og kodeord er i begge tilfælde ‘stress’, og herefter bliver du bedt om at vælge et tastaturlayout efterfulgt af et script, der hedder sensors-detect’. Der er flere detaljer i boksen ‘Temperaturstyring’, men ellers dropper du dette trin ved at vælge ‘no’ ved hver valgmulighed. Nu bliver du hældt tilbage til kommandolinjen, hvor du kan se en praktisk liste over de inkluderede funktioner.

Burn-funktioner

På listen over funktioner kan du se ‘stress’ og andre værktøjer, der jager dit lager og dit netværk gennem den brændende ring. Men vi er interesserede i ‘burn’-kommandoerne. De er specifikt beregnet til at opvarme din cpu med håndlavet assemblerkode, der retter sig mod enhver del af dit silicium.

De understøttede platforme er, som det fremgår af deres navne, ikke født i går, men hvis man vælger mellem ‘burnK7’ og ‘burnP6’ for henholdsvis AMD- og Intelplatforme, får man gode resultater på moderne hardware. Du skal også køre hver kom-mando for hver cpu-kerne. Men medmindre du har lidt Linux-erfaring, er det ikke indlysende, hvordan man gør det fra en enkelt komman-doprompt.

Løsningen er enten at skifte til en anden log-inprompt med [CTRL] + [Alt] og en funktionstast eller at køre den følgende kom-mando: nohup burnP6 &. Det kører burn-kommandoen i baggrunden og lader dig skrive i terminalen, og du kan bruge så mange komman-doer mellem ‘nohup’ og ‘&’ til at køre så mange processer, du vil. Sørg nu for, at brandalarmen virker, og lad systemet køre en dag eller to. Hvis din pc overlever, er den i topform. Hvis ikke, må du købe ekstra køling eller strømforsyning.

Alle de burn-værktøjer, vi har nævnt, er gode til at stresse dit system, men de giver meget lidt feedback. Det skyldes, at de fleste overvåger systemets tilstand med forskellige metoder. Den bedste måde på Linux er at installere en pakke, der hedder ‘lm-sensors’.

Den giver dig adgang til et script, der hedder ‘sensors-detect’, som du skal køre fra kommandolinjen med systemadministrator-rettigheder – skriv for eksempel sudo sensors-detect fra Ubuntu-terminalen. Du får en række spørgsmål – det er de samme spørgsmål, der kommer fra StressLinux-distributionen, fordi den konfigurerer sensorspakken for dig.

Du kan som regel vælge standardsvarene, så går sensors-detect i gang og prøver at finde de forskellige sensorer i dit system. Det sidste spørgsmål er, om værktøjet må oprette en konfigurationsfil. Svar ‘Yes’, så bliver alt konfigureret. Når du nu skriver sensors som almindelig bruger, ser du en tabel der indeholder de forskellige målinger for din hardware, og du har mulighed for at overvåge den virkning, din stresstest har på dit system.

Et område, der er beslægtet med stress-test, er benchmarking. Formålet er måske ikke det samme, men der bliver produceret de samme resultater – hardware bliver trukket gennem helvede.

Den største forskel er, at benchmarks skal times, hvis resultaterne skal give nogen mening, og derfor lader man dem ikke køre i dagevis. Men man kan se, om ens justeringer af systemet virker, og om systemet kan overleve et kombineret angreb.

Den berømte Heaven-benchmark er primært beregnet til at teste gpu-ydelse, men den kan også sætte cpu’en under stort pres, og den kan teste kølingen på cpu’en, bundkortet og gpu’en.

Der findes adskillige Linux-specifikke benchmarks, men vores favorit er et open source-projekt ved navn ‘BSMBench’ (http://bsmbench.org). Det blev udviklet med henblik på at beregne processorkraften i computernet, men det virker lige så godt inden for multicore-hyperthreading, og det kan give nogle meget overraskende resultater, samtidig med at det sætter cpu’erne under pres.

Det er for nyt til at være med i nogen distribution, men det er nemt nok at bygge, hvis man følger de README-instruktioner, der er en del af den direkte download. Man skal blot køre et simpelt script og eksekvere en omfattende benchmark på en enkelt kerne. Skriv blot: ./bsmbench_balance -i sets/balance-1.bsmbench -o output/bal-1.out.

[themepacific_accordion]
[themepacific_accordion_section title="Fakta"]

Projektets mål

[/themepacific_accordion_section]
[themepacific_accordion_section title="Fakta"]

Krav

[/themepacific_accordion_section]
[themepacific_accordion_section title="Fakta"]

Domæne- navne

[/themepacific_accordion_section]
[themepacific_accordion_section title="Fakta"]

Vær beredt

[/themepacific_accordion_section]
[/themepacific_accordion]