~ubuntu-branches/ubuntu/quantal/ceph/quantal

« back to all changes in this revision

Viewing changes to src/script/comb.pl

  • Committer: Package Import Robot
  • Author(s): James Page
  • Date: 2012-07-16 09:56:24 UTC
  • mfrom: (0.3.11)
  • mto: This revision was merged to the branch mainline in revision 17.
  • Revision ID: package-import@ubuntu.com-20120716095624-azr2w4hbhei1rxmx
Tags: upstream-0.48
ImportĀ upstreamĀ versionĀ 0.48

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/perl
 
2
 
 
3
use strict;
 
4
 
 
5
my $xaxis = shift @ARGV;
 
6
my @vars;
 
7
while (@ARGV) {
 
8
        $_ = shift @ARGV;
 
9
        last if ($_ eq '-');
 
10
        push(@vars, $_);
 
11
}
 
12
my @dirs;
 
13
while (@ARGV) {
 
14
        $_ = shift @ARGV;
 
15
        last if ($_ eq '-');
 
16
        push(@dirs, $_) if -d $_;
 
17
}
 
18
my @filt = @ARGV;
 
19
push( @filt, '.' ) unless @filt;
 
20
 
 
21
print "#xaxis $xaxis
 
22
#vars @vars
 
23
#dirs @dirs
 
24
#filt @filt
 
25
";
 
26
 
 
27
sub load_sum {
 
28
        my $fn = shift @_;
 
29
 
 
30
        open(I, "$fn");
 
31
        my $k = <I>;
 
32
        chomp($k);
 
33
        my @k = split(/\s+/,$k);
 
34
        shift @k;
 
35
 
 
36
        my $s;
 
37
        while (<I>) {
 
38
                chomp;
 
39
                s/^\#//;
 
40
                next unless $_;
 
41
                my @l = split(/\s+/,$_);
 
42
                my $k = shift @l;
 
43
                for my $f (@k) {
 
44
                        $s->{$k}->{$f} = shift @l;
 
45
                }
 
46
 
 
47
                # clnode latency?
 
48
                if ($fn =~ /cl/) {
 
49
                        $s->{$k}->{'wrlat'} = $s->{$k}->{'wrlsum'} / $s->{$k}->{'wrlnum'} if $s->{$k}->{'wrlnum'} > 0;
 
50
                        $s->{$k}->{'rlat'} = $s->{$k}->{'rlsum'} / $s->{$k}->{'rlnum'} if $s->{$k}->{'rlnum'} > 0;
 
51
                        $s->{$k}->{'lat'} = $s->{$k}->{'lsum'} / $s->{$k}->{'lnum'} if $s->{$k}->{'lnum'} > 0;
 
52
                        $s->{$k}->{'latw'} = $s->{$k}->{'lwsum'} / $s->{$k}->{'lwnum'} if $s->{$k}->{'lwnum'} > 0;
 
53
                        $s->{$k}->{'latr'} = $s->{$k}->{'lrsum'} / $s->{$k}->{'lrnum'} if $s->{$k}->{'lrnum'} > 0;
 
54
                        $s->{$k}->{'statlat'} = $s->{$k}->{'lstatsum'} / $s->{$k}->{'lstatnum'} if $s->{$k}->{'lstatnum'} > 0;
 
55
                        $s->{$k}->{'dirlat'} = $s->{$k}->{'ldirsum'} / $s->{$k}->{'ldirnum'} if $s->{$k}->{'ldirnum'} > 0;
 
56
                }
 
57
        }               
 
58
        return $s;
 
59
}
 
60
 
 
61
 
 
62
my %res;
 
63
my @key;
 
64
my %didkey;
 
65
for my $f (@filt) {
 
66
        my @reg = split(/,/, $f);
 
67
        #print "reg @reg\n";
 
68
        for my $d (@dirs) {
 
69
                if ($f ne '.') {
 
70
                        my $r = (split(/\//,$d))[-1];
 
71
                        my @db = split(/,/, $r);
 
72
                        #print "db @db\n";
 
73
                        my $ok = 1;
 
74
                        for my $r (@reg) {
 
75
                                
 
76
                                $ok = 0 unless grep {$_ eq $r} @db;
 
77
                        }
 
78
                        next unless $ok;
 
79
                }
 
80
                #next if ($f ne '.' && $d !~ /$reg/);                   
 
81
                #print "$d\n";
 
82
                my ($x) = $d =~ /$xaxis=([\d\.]+)/;
 
83
                
 
84
                for my $v (@vars) {
 
85
                        my ($what, $field) = $v =~ /^(.+)\.([^\.]+)$/;
 
86
                        #print "$what $field .. $v  .. $f.$field\n";
 
87
                        my $s = &load_sum("$d/sum.$what");
 
88
                        
 
89
                        #print "\t$v";
 
90
                        if ($field =~ /^sum=/) {
 
91
                                #warn "SUM field $field\n";
 
92
                                push( @{$res{$x}}, $s->{'sum'}->{$'} ); #'});
 
93
                        } else {
 
94
                                #warn "avg field $field\n";
 
95
                                push( @{$res{$x}}, $s->{'avgval'}->{$field} );
 
96
                        }
 
97
 
 
98
                        push( @key, "$f.$field" ) unless $didkey{"$f.$field"};
 
99
                        $didkey{"$f.$field"} = 1;
 
100
 
 
101
                        if (0 && exists $s->{'avgvaldevt'}) {
 
102
                                push( @{$res{$x}}, $s->{'avgvaldevt'}->{$field} );
 
103
                                push( @key, "$f.$field.dev" ) unless $didkey{"$f.$field.dev"};
 
104
                                $didkey{"$f.$field.dev"} = 1;
 
105
                        }
 
106
                }
 
107
        }
 
108
}
 
109
 
 
110
print join("\t", "#", @key) . "\n";
 
111
for my $x (sort {$a <=> $b} keys %res) {
 
112
        print join("\t", $x, @{$res{$x}}) . "\n";
 
113
}