- my $delta;
- my $data;
- my $last_time = $last{$snapshot_time};
- if (!defined($last_time)) {
- printf "Read: %-g, Write: %-g, create/destroy: %-g/%-g, stat: %-g, punch: %-g\n",
- $cur{$read_bytes}, $cur{$write_bytes},
- $cur{$create}, $cur{$destroy},
- $cur{$statfs}, $cur{$punch};
- if ($interval) {
- print "[NOTE: cx: create, dx: destroy, st: statfs, pu: punch ]\n\n";
- print "Timestamp Read-delta ReadRate Write-delta WriteRate\n";
- print "--------------------------------------------------------\n";
- }
- }
- else {
- my $timespan = $cur{$snapshot_time} - $last{$snapshot_time};
- my $rdelta = $cur{$read_bytes} - $last{$read_bytes};
- my $rrate = ($rdelta) / ($timespan * ( 1 << 20 ));
- my $wdelta = $cur{$write_bytes} - $last{$write_bytes};
- my $wrate = ($wdelta) / ($timespan * ( 1 << 20 ));
- $rdelta = ($rdelta) / (1024 * 1024);
- $wdelta = ($wdelta) / (1024 * 1024);
- # This print repeats after every interval.
- printf "%10lu %6.2fMB %6.2fMB/s %6.2fMB %6.2fMB/s",
- $cur{$snapshot_time}, $rdelta, $rrate, $wdelta, $wrate;
-
- $delta = $cur{$getattr} - $last{$getattr};
- if ( $delta != 0 ) {
- $rdelta = int ($delta/$timespan);
- print " ga:$delta,$rdelta/s";
- }
-
- for $data ( @extinfo ) {
- $delta = $cur{$data} - $last{$data};
- if ($delta != 0) {
- print " $shortname{$data}:$delta";
- }
- }
- print "\n";
- $| = 1;
- }
+ my $delta;
+ my $data;
+ my $last_time = $last{$timestamp};
+ if (!defined($last_time)) {
+ printf "Read: %.1f GiB, Write: %.1f GiB, cr: %lu dx: %lu, st: %lu, pu: %lu\n",
+ $cur{$read_bytes} / (1 << 30), $cur{$write_bytes} / (1 << 30),
+ $cur{$create}, $cur{$destroy}, $cur{$statfs}, $cur{$punch};
+ print "[NOTE: cx: create, dx: destroy, st: statfs, pu: punch]\n\n";
+ } else {
+ my $timespan = $cur{$timestamp} - $last{$timestamp};
+ my $rtot = ($cur{$read_bytes} - $last{$read_bytes}) / (1 << 20);
+ my $riops = ($cur{"read_ops"} - $last{"read_ops"}) / $timespan;
+ my $rrate = $rtot / $timespan;
+ my $wtot = ($cur{$write_bytes} - $last{$write_bytes}) / (1 << 20);
+ my $wiops = ($cur{"write_ops"} - $last{"write_ops"}) / $timespan;
+ my $wrate = $wtot / $timespan;
+
+ # this is printed once per screen, like vmstat/iostat
+ if ($count++ % ($height - 2) == 0) {
+ print "Timestamp Read-MiB RdMiB/s WriteMiB WrMiB/s RdIOPS WrIOPS\n";
+ print "---------- -------- ------- -------- ------- ------ ------\n";
+ if ($have_readkey) {
+ ($width, $height, $wpixels, $hpixels) = GetTerminalSize();
+ } else {
+ ($height, $width) = split / /, `stty size 2> /dev/null`;
+ #$width = 120 if ! $width
+ }
+ }
+ # This print repeats after every interval.
+ printf "%10lu %8.1f %7.1f %8.1f %7.1f %6lu %6lu",
+ $cur{$timestamp}, $rtot, $rrate, $wtot, $wrate, $riops, $wiops;
+
+ $delta = $cur{$getattr} - $last{$getattr};
+ if ( $delta != 0 ) {
+ $rdelta = int ($delta/$timespan);
+ print " ga:$delta,$rdelta/s";
+ }
+
+ for $data ( @extinfo ) {
+ $delta = $cur{$data} - $last{$data};
+ if ($delta != 0) {
+ print " $shortname{$data}:$delta";
+ }
+ }
+ print "\n";
+ $| = 1;
+ }