chomp;
my ($stamp) = /^\S+ (\S+)/;
- my ($what,$req,$desc) = /\d+ -- \S+ mds\d+ ... client\d+ \S+ \S+ client_(request|reply)\((\S+) ([^\)]+)/;
+ my ($req,$desc) = /\d+ -- \S+ mds\d+ ... client\d+ \S+ \d+ \S+ client_request\((\S+) ([^\)]+)/;
if (defined $req) {
- #print "$what $req at $stamp $desc\n";
- if ($what eq 'request') {
- $r{$req} = $stamp;
- $what{$req} = $desc;
- } elsif ($what eq 'reply') {
- if (exists $r{$req}) {
- my $len = tosec($stamp) - tosec($r{$req});
-
- #print "$req $len ($r{$req} - $stamp)\n";
- $lat_req{$len} = $req;
-
- delete $r{$req};
- }
- } else {
- die;
- }
+ #print "$req $len ($r{$req} - $stamp)\n";
+ $r{$req} = $stamp;
+ $what{$req} = $desc;
+ next;
}
-
+ ($req,$desc) = /\d+ -- \S+ mds\d+ ... client\d+ \S+ \S+ client_reply\((\S+) ([^\)]+)/;
+ if (defined $req) {
+ if (exists $r{$req}) {
+ my $len = tosec($stamp) - tosec($r{$req});
+
+ #print "$req $len ($r{$req} - $stamp)\n";
+ $lat_req{$len} = $req;
+
+ delete $r{$req};
+ }
+ }
}
my %r; # reqid -> start
my %lat_req; # latency -> request
+my %desc;
sub tosec($) {
my $v = shift;
chomp;
my ($stamp) = /^\S+ (\S+) /;
- my ($who,$tid) = /osd\d+ <.. (\D+\d+) \S+ \S+ osd_op\((\S+)/;
+ my ($who,$tid,$desc) = /osd\d+ <.. (\D+\d+) \S+ \d+ \S+ osd_op\((\S+) ([^\)]+)/;
if (defined $tid) {
my $req = "$who:$tid";
$r{$req} = $stamp unless exists $r{$req};
+ $desc{$req} = $desc;
next;
}
for my $len (sort {$b <=> $a} keys %lat_req) {
- print "$len\t$lat_req{$len}\n";
+ print "$len\t$lat_req{$len}\t$desc{$lat_req{$len}}\n";
}