UNIX pusleri: en hurtigere uptime?

Et af de steder jeg er lidt træt af UNIX er "uptime", som viser tre system-"load" værdier - i snit over det sidste et, fem og ti minutter.
Vi kan diskutere hvad load er, men min pointe er nærmere de tidskonstanter. Hvordan får man tilsvarende på en meget mindre tids-skala?

Eksempel:

$ uptime
17:41:19 up 2 days,  5:37,  1 user,  load average: 0.24, 0.41, 0.54

hver af de sidste værdier er resultatet af et IIR-filter hvor tidskonstanterne er - som sagt et, fem og ti minutter.
En ganske fin forklaring kan læses f.eks. på wikipedia.

For tiden laver jeg noget arbejde, hvor load på et eller fem sekund-niveau vil være mere relevant.

Mit spørgsmål er om en sådan udvidelse skal laves i UNIX-kernen, eller om det sagtens kan laves i user-land?
Og giver det mening at lave en et-sekunds load average - givet f.eks. Linux-kernens normale scheduler.

/pto

Kommentarer (11)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
#1 Poul-Henning Kamp Blogger

loadaverage er en helt ubrugelig metrik nu om dage, den stammer fra den gang hvor man havde 100 bruger på 1 MIPS CPU.

For alt andet en en programbelastning der kører konstant på CPU'en, med kun minimal I/O, er loadaverage totalt misvisende.

Hvad er det du i virkeligheden vil vide om din maskines performance ?

  • 1
  • 0
#3 Martin Hundebøll

Du kan bruge første linje fra /proc/stat[1], som du blot skal sample med et sekunds mellemrum og bruge delta-værdierne:

head -n1 /proc/stat; sleep 1; head -n1 /proc/stat  
cpu  40045 2026 11539 2331154 4646 0 143 0 0 0  
cpu  40047 2026 11540 2331551 4646 0 143 0 0 0

Load for det sidste sekund bliver da:

load1 = 40045 + 2026 + 11539 + 4646 + 143  
load2 = 40047 + 2026 + 11540 + 4646 + 143  
idle1 = 2331154  
idle2 = 2331551  
usage = (load2 - load1)/(idle2 - idle1 + load2 - load1)

Det skulle være muligt at lave et kvikt script eller bruge Linux-kernens API til proc...

[1] http://www.linuxhowtos.org/System/procstat.htm

  • 3
  • 0
#6 Henrik Størner

vmstat er nok mere anvendeligt, den giver dig i al fald også information om det er cputid eller disk I/O du max'er ud. (Dine compile-jobs er formentlig ikke noget der kræver meget netværks-I/O, med mindre dine filer ligger på et netværks-share). vmstat kan sample hvert sekund.

  • 2
  • 0
#8 Jesper Frimann

Man skal jo også huske at tage højde for om man kører med HW tråde (Simultanious/coarse/fine-grained multithreading) om man så ønsker at priotere overall throughput eller der er enkelte job der skal prioteres over hinanden.

// Jesper

  • 0
  • 0
Log ind eller Opret konto for at kommentere