Processorn visar hundra procent: frågan att ställa innan du läser ett tal
Tre olika tal bär samma namn: medelvärdet sedan start, den samlade summan och skillnaden mellan två avläsningar. Bara det sista besvarar "just nu".
AtlasPVE ·
Den här artikeln svarar på
- proxmox hög cpu-användning
- proxmox vilken process äter cpu
- vad är load average
- läsa utdata från top
- proxmox cpu på 100 procent
Du tittar på panelen och processorn ser hårt belastad ut. Innan du gör något finns en enda fråga: vilken period beskriver det här talet?
För tre olika tal bär samma namn, och de tre säger olika saker.
Tre tal med samma namn
Medelvärdet sedan start. Var maskinen hårt sysselsatt i tre dagar för två månader sedan sitter den sysselsättningen fortfarande i det här medelvärdet. Det besvarar inte "just nu".
Den samlade summan. Den sjunker aldrig. Den berättar om det förflutna, inte om i dag.
Skillnaden mellan två avläsningar. Två mätningar tas och förändringen mellan dem läses. Bara denna besvarar "just nu".
Den klassiska fällan
Standardverktyget som listar processer visar på sin första skärm medelvärdet sedan start. Tittar du på den första skärmen och handlar, har du ingripit i det förflutna och inte i i dag.
Rätt väg är att ta minst två avläsningar och läsa den andra. Verktyget i sig har inte fel; sättet det läses på har det.
Samma misstag tar samma form överallt
Den formen har vi redan sett två gånger i den här wikin.
Om diskslitage sa vi inte procenten utan lutningen: åttiofem procent kvar betyder tio år på en disk och åtta månader på en annan.
Om tappade paket sa vi inte summan utan takten: en maskin som hade en dålig timme i fjol framställs som skyldig för livet av sin räknare.
För processorn gäller inte medelvärdet utan skillnaden. Tre olika ställen, ett enda läsfel.
Det kan skrivas som en allmän regel: ett tal utan angivet tidsfönster är ingen mätning. Fråga, innan du handlar på ett tal, vilket fönster det täcker.
När processorn verkligen är hårt belastad
Då behövs en andra åtskillnad: är det en maskin som är upptagen, eller räcker inte tjänaren till?
Att en virtuell maskin använder hela den andel den fått är normalt. Gav du den två kärnor och den har fyllt de två kärnorna arbetar systemet precis som det var tänkt.
Problemet är stunden då tjänaren mättas: gäster slutar få vad de ber om och alla blir långsammare samtidigt.
Och något förväxlas ofta: last är inte processoranvändning. Last räknar saker som väntar, och några av dem väntar inte på processorn utan på disken. Det är möjligt att lasten är hög medan processorn står stilla, och det säger dig att titta någon annanstans.
Vad Atlas gör
När Atlas listar tjänarens mest processorhungriga processer tar det medvetet två avläsningar och läser den andra.
Skälet är precis fällan ovan: den första avläsningen bär medelvärdet sedan start, och att visa den vore vilseledande. Skillnaden är ingen småsak; en lista sorterad på den första avläsningen framställer en process som var upptagen för månader sedan som dagens skyldige.
Ännu ett litet men ärligt detalj: resultatet av mätningen sparas en kort stund och förfrågningar som kommer samtidigt knyts till en enda mätning. Skälet: medan kortet är öppet uppdateras det med några sekunders mellanrum, och att starta en ny mätning vid varje uppdatering belastar tjänaren i onödan.
Det är samma princip som i artikeln om värme: det som iakttar bör inte vara det som kostar.
Källor
Proxmox egen dokumentation. På engelska, och den har sista ordet i den här frågan.