-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgrab_mem_stats.pl
executable file
·61 lines (47 loc) · 1.22 KB
/
grab_mem_stats.pl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#!/usr/bin/perl
use strict;
use warnings;
no warnings 'uninitialized';
my @files = <*.csv>;
my %max; # Hash holds max memory value for each app
my %min; # Hash holds min memory value for each app
my %values; # Hash of arrays holds all memory values for each app
my %mean; # Hash holds mean memory value for each app
my %median; # Hash holds median memory value for each app
for my $file (@files) {
my $line_no; # Count lines
$file =~ /(.+)\.csv/;
my $app = $1;
open F, $file or die "Couldn't open $file for read: $!\n";
for my $line (<F>) {
$line_no++;
next if $line_no == 1; # Discard header
$line =~ /.*?,(.+?),/;
my $value = $1;
push @{ $values{$app} }, $value;
if ($line_no == 2) {
$max{$app} = $value;
$min{$app} = $value;
}
else {
$min{$app} = $value if $value < $min{$app};
$max{$app} = $value if $value > $max{$app};
}
}
close F;
}
for my $app (sort keys %values) {
my $total = 0;
my $count = 0;
my @sorted_values;
for my $value ( sort( @{ $values{$app} } ) ) {
$total += $value;
$count++;
push @sorted_values, $value;
}
$mean{$app} = int( $total / $count );
}
print "app,min,max,average\n";
for my $app (sort keys %max) {
print "$app,$min{$app},$max{$app},$mean{$app}\n";
}