#!/usr/bin/perl use strict; use warnings; use Data::Dumper; use POSIX; my (%read_ops, %write_ops, %read_bytes, %write_bytes, %req_ops, %res_ops); my ($read, $write, $nops) = (0, 0, 0); my @opnames = ( 'null', 'getattr', 'setattr', 'lookup', 'access', 'ireadlink', 'read', 'write', 'create', 'mkdir', 'symlink', 'mkdir', 'remove', 'rmdir', 'rename', 'link', 'readdir', 'readdir+', 'fsstat', 'fsinfo', 'pathconf', 'commit', ); my ($header1, $header2); chomp($header1 = ); chomp($header2 = ); while() { chomp($_); #print $_, "\n"; my @field = split ' ', $_; if ($field[6] eq 'request') { $req_ops{$field[9]}++; if ($field[9] == 7) { $write += $field[12]; $write_ops{POSIX::strftime("%Y%m%d%H", localtime(floor($field[0] / 1000000)))}++; $write_bytes{POSIX::strftime("%Y%m%d%H", localtime(floor($field[0] / 1000000)))} += $field[12]; } } elsif ($field[6] eq 'response') { $res_ops{$field[9]}++; if ($field[9] == 6) { $read += $field[12]; my $ts = floor($field[0]/1000000); my $date = POSIX::strftime('%Y%m%d%H', localtime($ts)); $read_ops{POSIX::strftime("%Y%m%d%H", localtime(floor($field[0] / 1000000)))}++; $read_bytes{POSIX::strftime("%Y%m%d%H", localtime(floor($field[0] / 1000000)))} += $field[12]; } } } sub sort_req_ops { $req_ops{$b} <=> $req_ops{$a}; } sub sort_res_ops { $res_ops{$b} <=> $res_ops{$a}; } foreach my $key (sort sort_req_ops (keys(%req_ops))) { print $opnames[$key], ": \t", $req_ops{$key}, "\n"; $nops += $req_ops{$key}; } #print Dumper(\%req_ops); print "---\n"; print Dumper(\%res_ops); print "===\n"; print "===\n"; print Dumper(\%write_ops); print "===---\n"; print Dumper(\%write_bytes); print "===\n"; print Dumper(\%read_ops); print "===---\n"; print Dumper(\%read_bytes);