]> AND Private Git Repository - loba.git/blob - extract.pl
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
Revert "Use a do..while() loop instead of this ugly continue statement."
[loba.git] / extract.pl
1 #!/usr/bin/env perl
2
3 use strict;
4 use warnings;
5
6 my $bookkeeping;
7 my $flt = '[+-]?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?';
8 my $pflt = "($flt)";
9 my $prefix = '^\[([^: ]+)(?::loba:\(\d+\))? ' . $pflt . '\] \[proc/INFO\] ';
10 my $initmatch = $prefix . 'Initial load: ' . $pflt;
11 my $finalmatch = $prefix . 'Final load after (\d+):(\d+):(\d+) iterations: ' . $pflt;;
12 my $plainmatch = $prefix . '\((\d+):(\d+):(\d+)\) current load: ' . $pflt;
13
14 my %alldata = ();
15
16 while (<>) {
17     chomp;
18     if (m{$plainmatch} or m{$finalmatch}) {
19         my $host = $1;
20         my $data = {
21             time     => $2,
22             lb       => $3,
23             comp     => $4,
24             load     => $6,
25         };
26 #        print STDERR "PUSH $host $data->{time} $data->{load} (plain/final)\n";
27         push @{$alldata{$host}}, $data;
28     } elsif (m{$initmatch}) {
29         my $host = $1;
30         my $data = {
31             time     => $2,
32             lb       => 0,
33             comp     => 0,
34             load     => $3,
35         };
36 #        print STDERR "PUSH $host $data->{time} $data->{load} (init)\n";
37         push @{$alldata{$host}}, $data;
38     }
39 }
40
41 foreach my $host (sort(keys %alldata)) {
42 #    print STDERR "GOT \"$host\"\n";
43     my $datalist = $alldata{$host};
44     print "# $host\n";
45     foreach my $data (@{$datalist}) {
46         print "$data->{time} $data->{load}\n";
47     }
48     print "\n\n"
49 }