Parcourir la source

repro and log parsing scripts for Tables 3 and 4

Ian Goldberg il y a 6 mois
Parent
commit
83f86dbb1f
2 fichiers modifiés avec 168 ajouts et 0 suppressions
  1. 84 0
      repro/parse_logs
  2. 84 0
      repro/repro

+ 84 - 0
repro/parse_logs

@@ -48,6 +48,8 @@ while(<>) {
             &parse_bsearch($cmdline);
         } elsif ($cmdline =~ /^-- heap/) {
             &parse_heap($cmdline);
+        } elsif ($cmdline =~ /^-- avl/) {
+            &parse_avl($cmdline);
         } else {
             warn "Unknown cmdline: $cmdline\n";
             while(<>) {
@@ -378,6 +380,88 @@ sub parse_heap {
     &accum_data(\%online_P2mem_mib_data, $label, $online_mem_mib[2]);
 }
 
+sub parse_avl {
+    my $cmdline = $_[0];
+    my $who = 0;
+    my $section = '';
+    my @online_seconds = (0, 0, 0);
+    my @online_kib = (0, 0, 0);
+    my @online_latencies = (0, 0, 0);
+    my @online_mem_mib = (0, 0, 0);
+
+    my $optimized = "Opt";
+    my $oper = "";
+    unless ($cmdline =~ /avl -m (\d+) -i (\d+) -e (\d+) -opt (\d+) -s 0/) {
+        die "Cannot parse heap cmdline: $cmdline";
+    }
+    my ($size, $nins, $ndel, $optflag) = ($1, $2, $3, $4);
+    if ($nins > 0 && $ndel > 0) {
+        die "avl does both insertions and deletions: $cmdline\n";
+    }
+    $oper = "Ins" if $nins > 0;
+    $oper = "Del" if $ndel > 0;
+    if ($optflag == 0) {
+        $optimized = "Basic";
+    }
+    my $num = ($nins + $ndel);
+
+    while(<>) {
+        if (/===== P([012]) output/) {
+            $who = $1;
+            next;
+        }
+        if (/===== ([A-Z ]+) =====/) {
+            $section = $1;
+            next;
+        }
+        last if /===== End/;
+        # The log was malformed
+        die "Malformed log" if /===== Running/;
+        my $rightsection = 0;
+        if ($section eq "INSERTS" && $oper eq "Ins") {
+            $rightsection = 1;
+        }
+        if ($section eq "DELETES" && $oper eq "Del") {
+            $rightsection = 1;
+        }
+        if ($rightsection) {
+            if (/^(\d+) message bytes sent/) {
+                $online_kib[$who] = $1 / 1024;
+            } elsif (/^(\d+) Lamport clock/) {
+                $online_latencies[$who] = $1;
+            } elsif (/^(\d+) milliseconds wall clock/) {
+                $online_seconds[$who] = $1 / 1000;
+            } elsif (/^Mem: (\d+) KiB/) {
+                $online_mem_mib[$who] = $1 / 1024;
+            }
+        }
+        if ($who == 0 && /^Precomputed values used: (.*)/) {
+            my %used_resources = ();
+            &parse_resources(\%used_resources, $1);
+            my $preproc_resources_str = &serialize_resources(\%preproc_resources);
+            my $used_resources_str = &serialize_resources(\%used_resources);
+            if ($preproc_resources_str ne $used_resources_str) {
+                warn "Resource usage does not match preprocessing:\n" .
+                    "Preproc: $preproc_resources_str\n" .
+                    "Used: $used_resources_str\n ";
+            }
+        }
+    }
+    my $label = "${optimized}PRAC avl$oper $netsetup$size $num";
+    &accum_data(\%preproc_s_data, $label, &maxarray(@preproc_seconds));
+    &accum_data(\%preproc_kib_data, $label, &avgarray(@preproc_kib));
+    &accum_data(\%preproc_latencies_data, $label, &maxarray(@preproc_latencies));
+    &accum_data(\%preproc_P0mem_mib_data, $label, $preproc_mem_mib[0]);
+    &accum_data(\%preproc_P1mem_mib_data, $label, $preproc_mem_mib[1]);
+    &accum_data(\%preproc_P2mem_mib_data, $label, $preproc_mem_mib[2]);
+    &accum_data(\%online_s_data, $label, &maxarray(@online_seconds));
+    &accum_data(\%online_kib_data, $label, &avgarray(@online_kib));
+    &accum_data(\%online_latencies_data, $label, &maxarray(@online_latencies));
+    &accum_data(\%online_P0mem_mib_data, $label, $online_mem_mib[0]);
+    &accum_data(\%online_P1mem_mib_data, $label, $online_mem_mib[1]);
+    &accum_data(\%online_P2mem_mib_data, $label, $online_mem_mib[2]);
+}
+
 sub maxarray {
     my $max = $_[0];
     foreach (@_) {

+ 84 - 0
repro/repro

@@ -153,6 +153,40 @@ if [ "$whichexps" = "fig8" -o "$whichexps" = "all" ]; then
     done
 fi
 
+if [ "$whichexps" = "tab3" -o "$whichexps" = "all" ]; then
+    echo "Running Table 3 experiments..."
+    for iter in $(seq 1 $numiters); do
+        # Table 3
+        logname='tab3'
+        for size in 16 20 24; do
+            run -p m:$((size*2-1)) r5:1 i4:1 c:5
+            run heap -m ${size} -d $((size-1)) -i 1 -e 0 -opt 1 -s 0
+            run -p m:$((size-1)) c:$((size-1))
+            run heap -m ${size} -d $((size-1)) -i 1 -e 0 -opt 0 -s 0
+        done
+    done
+fi
+
+if [ "$whichexps" = "tab4" -o "$whichexps" = "all" ]; then
+    echo "Running Table 4 experiments..."
+    for iter in $(seq 1 $numiters); do
+        # Table 4
+        logname='tab4'
+        run -p a:8 s:171 r17:28 c:50
+        run avl -m 16 -i 1 -e 0 -opt 1 -s 0
+        run -p a:10 s:201 r21:33 c:60
+        run avl -m 20 -i 1 -e 0 -opt 1 -s 0
+        run -p a:12 s:237 r25:39 c:72
+        run avl -m 24 -i 1 -e 0 -opt 1 -s 0
+        run -p m:1 a:30 s:867 r16:72 r16.2:2 c:72
+        run avl -m 16 -i 0 -e 1 -opt 1 -s 0
+        run -p m:1 a:36 s:1047 r20:87 r20.2:2 c:87
+        run avl -m 20 -i 0 -e 1 -opt 1 -s 0
+        run -p m:1 a:43 s:1263 r24:105 r24.2:2 c:105
+        run avl -m 24 -i 0 -e 1 -opt 1 -s 0
+    done
+fi
+
 now=`date`
 echo "$now: Experiments complete"
 
@@ -232,6 +266,56 @@ egrep 'OptPRACOnln heapExt ([0-9]+) 1 .* KiB$' data/prac.dat | sort -k3 -n
 echo
 egrep 'OptPRACTotl heapExt ([0-9]+) 1 .* KiB$' data/prac.dat | sort -k3 -n
 echo
+echo "# Table 3"
+egrep 'BasicPRACPreprc heapIns [0-9]+ 1 .* s$' data/prac.dat | sort -k3 -n
+echo
+egrep 'BasicPRACOnln heapIns [0-9]+ 1 .* s$' data/prac.dat | sort -k3 -n
+echo
+egrep 'BasicPRACPreprc heapIns [0-9]+ 1 .* latencies$' data/prac.dat | sort -k3 -n
+echo
+egrep 'BasicPRACOnln heapIns [0-9]+ 1 .* latencies$' data/prac.dat | sort -k3 -n
+echo
+egrep 'BasicPRACPreprc heapIns [0-9]+ 1 .* KiB$' data/prac.dat | sort -k3 -n
+echo
+egrep 'BasicPRACOnln heapIns [0-9]+ 1 .* KiB$' data/prac.dat | sort -k3 -n
+echo
+egrep 'OptPRACPreprc heapIns [0-9]+ 1 .* s$' data/prac.dat | sort -k3 -n
+echo
+egrep 'OptPRACOnln heapIns [0-9]+ 1 .* s$' data/prac.dat | sort -k3 -n
+echo
+egrep 'OptPRACPreprc heapIns [0-9]+ 1 .* latencies$' data/prac.dat | sort -k3 -n
+echo
+egrep 'OptPRACOnln heapIns [0-9]+ 1 .* latencies$' data/prac.dat | sort -k3 -n
+echo
+egrep 'OptPRACPreprc heapIns [0-9]+ 1 .* KiB$' data/prac.dat | sort -k3 -n
+echo
+egrep 'OptPRACOnln heapIns [0-9]+ 1 .* KiB$' data/prac.dat | sort -k3 -n
+echo
+echo "# Table 4"
+egrep 'OptPRACPreprc avlIns [0-9]+ 1 .* s$' data/prac.dat | sort -k3 -n
+echo
+egrep 'OptPRACOnln avlIns [0-9]+ 1 .* s$' data/prac.dat | sort -k3 -n
+echo
+egrep 'OptPRACPreprc avlIns [0-9]+ 1 .* latencies$' data/prac.dat | sort -k3 -n
+echo
+egrep 'OptPRACOnln avlIns [0-9]+ 1 .* latencies$' data/prac.dat | sort -k3 -n
+echo
+egrep 'OptPRACPreprc avlIns [0-9]+ 1 .* KiB$' data/prac.dat | sort -k3 -n
+echo
+egrep 'OptPRACOnln avlIns [0-9]+ 1 .* KiB$' data/prac.dat | sort -k3 -n
+echo
+egrep 'OptPRACPreprc avlDel [0-9]+ 1 .* s$' data/prac.dat | sort -k3 -n
+echo
+egrep 'OptPRACOnln avlDel [0-9]+ 1 .* s$' data/prac.dat | sort -k3 -n
+echo
+egrep 'OptPRACPreprc avlDel [0-9]+ 1 .* latencies$' data/prac.dat | sort -k3 -n
+echo
+egrep 'OptPRACOnln avlDel [0-9]+ 1 .* latencies$' data/prac.dat | sort -k3 -n
+echo
+egrep 'OptPRACPreprc avlDel [0-9]+ 1 .* KiB$' data/prac.dat | sort -k3 -n
+echo
+egrep 'OptPRACOnln avlDel [0-9]+ 1 .* KiB$' data/prac.dat | sort -k3 -n
+echo
 echo "# End figures"
 
 fi