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

Private GIT Repository
Use std::vector and stl algorithms for cost_func.
[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;
12 my $plainmatch;
13
14 my %alldata = ();
15
16 while (<>) {
17     chomp;
18     if (s{^(?:\[0\.0+\] )?\[main/INFO\] \| bookkeeping\.*: }{}) {
19         $bookkeeping = $_ eq "on";
20         $finalmatch = $prefix .
21             'Final load after (\d+):(\d+) iterations: ' . $pflt;
22         $plainmatch = $prefix . '\((\d+):(\d+)\) current load: ' . $pflt;
23         if ($bookkeeping) {
24             $finalmatch = $finalmatch . ' ; expected: ' . $pflt;
25             $plainmatch = $plainmatch . ' ; expected: ' . $pflt;
26         }
27         if (0) {
28             print STDERR "BOOKKEEPING: \"$_\" ($bookkeeping)\n";
29             print STDERR "INITMATCH..: \"$initmatch\"\n";
30             print STDERR "PLAINMATCH.: \"$plainmatch\"\n";
31             print STDERR "FINALMATCH.: \"$finalmatch\"\n";
32         }
33     }
34     next if not defined $bookkeeping;
35     if (m{$plainmatch} or m{$finalmatch}) {
36         my $host = $1;
37         my $data = {
38             time     => $2,
39             lb       => $3,
40             comp     => $4,
41             load     => $5,
42         };
43         if ($bookkeeping) {
44             $data->{expected} = $6;
45         } else {
46             $data->{expected} = $data->{load};
47         }
48 #        print STDERR "PUSH $host $data->{time} $data->{load} (plain/final)\n";
49         push @{$alldata{$host}}, $data;
50     } elsif (m{$initmatch}) {
51         my $host = $1;
52         my $data = {
53             time     => $2,
54             lb       => 0,
55             comp     => 0,
56             load     => $3,
57             expected => $3,
58         };
59 #        print STDERR "PUSH $host $data->{time} $data->{load} (init)\n";
60         push @{$alldata{$host}}, $data;
61     }
62 }
63
64 foreach my $host (sort(keys %alldata)) {
65 #    print STDERR "GOT \"$host\"\n";
66     my $datalist = $alldata{$host};
67     print "# $host\n";
68     foreach my $data (@{$datalist}) {
69         print "$data->{time} $data->{load}\n";
70     }
71     print "\n"
72 }