Gå til innhold

Hjelp til proc diskstats fil i Linux


Anbefalte innlegg

Hei,

 

Jeg forsøker å lage et script ved hjelp av Perl som benytter seg av data i filen

 

/proc/diskstats

 

Jeg trenger hjelp til å finne ut hvor mange blocks som skrives hvert sekund, og gjennomsnittstiden det tar for operasjonene å fullføre på disken.

 

Det var ikke helt lett å sette seg inn i dokumentasjonen, da den ikke var så veldig forklarende for min del :(

 

Jeg forsøker meg derfor på forumet her for første gang for å se om det er noen kloke hoder som kan bistå med noe ekspertise!

 

håper på raskt svar

Endret av jensbjens
Lenke til kommentar
Videoannonse
Annonse

Fant denne interpreting-proc-diskstats

 

Field 1 -- # of reads issued

Field 2 -- # of reads merged, field 6 -- # of writes merged

Field 3 -- # of sectors read

Field 4 -- # of milliseconds spent reading

Field 5 -- # of writes completed

Field 7 -- # of sectors written

Field 8 -- # of milliseconds spent writing

Field 9 -- # of I/Os currently in progress

Field 10 -- # of milliseconds spent doing I/Os

Field 11 -- weighted # of milliseconds spent doing I/Os

 

Kanskje noe som dette vil funke

cat /proc/diskstats | grep sda | awk '{ print $7 }'

 

Du må sikkert tweake 'sda' og tallet bak $ for å få infoen du vil ha.

 

(Er riktignok ikke i PERL, men jeg håper det hjelper :))

 

Edit: Hvis noen er flinkere i awk enn meg går det nok fint å droppe 'grep sda' til fordel for en sjekk på $3 i awk.

Endret av Kiff
Lenke til kommentar

Jo takk for svaret, men jeg spesifiserte det kanskje noe mangelfullt.

 

Det jeg er ute etter er ikke sektorer. Jeg vil gjerne kunne lage til en oversikt over blokker, altså hvor mange sektorer som slås sammen. (blir det ikke riktig å si det slik?).

 

Og det jeg trenger er å få til hvor mange slike blokker som skrives i sekundet. :)

 

Jeg er usikker på hvilke regnemåter jeg må bruke for å få til det som er ønskelig. Hvilke tall jeg må dele på, trekke fra osv. :/

Lenke til kommentar

Jeg vet ikke hvordan jeg skal tolke innholdet i /proc/diskstats, men for å hente ut dataene i perl cirka hvert sekund kan du gjøre noe sånt (justér for-løkka for flere kall):

 

#!/usr/bin/perl -w
use strict;

for (1 .. 3) {
   my $diskstats = &get_diskstats();    
   sleep(1);    
}

sub get_diskstats {
   local($/) = undef; # slurp    
   open my $pipe, '-|', 'cat /proc/diskstats' or die $!;    
   my $diskstats = <$pipe>;
   return $diskstats;
}

 

Jeg ville nok også supplert det med awk for å få ut de relevante dataene, men som sagt vet jeg ikke hva som er relevant.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...