Skip to content
Snippets Groups Projects
Commit 5f0c89e0 authored by Keith Wansbrough's avatar Keith Wansbrough
Browse files

[project @ 2000-07-17 18:44:16 by keithw]

Insert code to handle instruction counts from Heimdall, as well as
CacheProf.
parent eacefec6
No related branches found
No related tags found
No related merge requests found
...@@ -62,6 +62,9 @@ $DefaultStderrFile = "$TmpPrefix/no_stderr$$"; ...@@ -62,6 +62,9 @@ $DefaultStderrFile = "$TmpPrefix/no_stderr$$";
$PreScript = ''; $PreScript = '';
$PostScript = ''; $PostScript = '';
$TimeCmd = ''; $TimeCmd = '';
$Heimdall = 0;
$HeimdallPrefix = '';
$HeimdallStats = "heimdall.summary";
$StatsFile = "$TmpPrefix/stats$$"; $StatsFile = "$TmpPrefix/stats$$";
$CacheProfStats = "cacheprof.out.summary"; $CacheProfStats = "cacheprof.out.summary";
$SysSpecificTiming = ''; $SysSpecificTiming = '';
...@@ -114,6 +117,10 @@ arg: while ($_ = $ARGV[0]) { ...@@ -114,6 +117,10 @@ arg: while ($_ = $ARGV[0]) {
/^-cacheprof$/ && do { $SysSpecificTiming = 'ghc-instrs'; /^-cacheprof$/ && do { $SysSpecificTiming = 'ghc-instrs';
$CacheProf = 'yes'; $CacheProf = 'yes';
next arg }; next arg };
/^-heimdall$/ && do { $HeimdallPrefix = 'heimdall_cp '; # must have trailing space!
$SysSpecificTiming = 'ghc-instrs';
$Heimdall = 1;
next arg; };
/^-t(.*)/ && do { $TimeCmd = &grab_arg_arg('-t', $1); next arg; }; /^-t(.*)/ && do { $TimeCmd = &grab_arg_arg('-t', $1); next arg; };
# anything else is taken to be a pgm arg # anything else is taken to be a pgm arg
...@@ -192,7 +199,7 @@ cat /dev/null > $DefaultStdoutFile ...@@ -192,7 +199,7 @@ cat /dev/null > $DefaultStdoutFile
cat /dev/null > $DefaultStderrFile cat /dev/null > $DefaultStderrFile
$PreScriptLines $PreScriptLines
$SpixifyLine1 $SpixifyLine1
$TimeCmd /bin/sh -c \'$ToRun $TimingMagic @PgmArgs < $PgmStdinFile 1> $TmpPrefix/runtest$$.1 2> $TmpPrefix/runtest$$.2 3> $TmpPrefix/runtest$$.3\' $TimeCmd /bin/sh -c \'$HeimdallPrefix$ToRun $TimingMagic @PgmArgs < $PgmStdinFile 1> $TmpPrefix/runtest$$.1 2> $TmpPrefix/runtest$$.2 3> $TmpPrefix/runtest$$.3\'
progexit=\$? progexit=\$?
if [ \$progexit -eq 0 ] && [ $PgmFail -ne 0 ]; then if [ \$progexit -eq 0 ] && [ $PgmFail -ne 0 ]; then
echo $ToRun @PgmArgs \\< $PgmStdinFile echo $ToRun @PgmArgs \\< $PgmStdinFile
...@@ -232,6 +239,9 @@ else ...@@ -232,6 +239,9 @@ else
fi fi
egrep -v '^ld\.so:.*has older revision than expected' < $TmpPrefix/runtest$$.2 > $TmpPrefix/runtest$$.2b egrep -v '^ld\.so:.*has older revision than expected' < $TmpPrefix/runtest$$.2 > $TmpPrefix/runtest$$.2b
mv -f $TmpPrefix/runtest$$.2b $TmpPrefix/runtest$$.2 mv -f $TmpPrefix/runtest$$.2b $TmpPrefix/runtest$$.2
egrep '^=== HEIMDALL: ' < $TmpPrefix/runtest$$.2 > $HeimdallStats
egrep -v '^=== HEIMDALL: ' < $TmpPrefix/runtest$$.2 > $TmpPrefix/runtest$$.2b
mv -f $TmpPrefix/runtest$$.2b $TmpPrefix/runtest$$.2
hit='NO' hit='NO'
for out_file in @PgmStderrFile ; do for out_file in @PgmStderrFile ; do
...@@ -280,10 +290,11 @@ if ( $SysSpecificTiming eq '' ) { ...@@ -280,10 +290,11 @@ if ( $SysSpecificTiming eq '' ) {
&process_stats_file(); &process_stats_file();
&process_cacheprof_files() if $CacheProf eq 'yes'; &process_cacheprof_files() if $CacheProf eq 'yes';
&process_heimdall_file() if $Heimdall;
# print out what we found # print out what we found
print STDERR "<<$SysSpecificTiming: "; print STDERR "<<$SysSpecificTiming: ";
if ( $CacheProf ne 'yes' ) { if ( $CacheProf ne 'yes' && !$Heimdall) {
print STDERR "$BytesAlloc bytes, $GCs GCs, $AvgResidency/$MaxResidency avg/max bytes residency ($ResidencySamples samples), $GCWork bytes GC work, ${TotMem}M in use, $InitTime INIT ($InitElapsed elapsed), $MutTime MUT ($MutElapsed elapsed), $GcTime GC ($GcElapsed elapsed)"; print STDERR "$BytesAlloc bytes, $GCs GCs, $AvgResidency/$MaxResidency avg/max bytes residency ($ResidencySamples samples), $GCWork bytes GC work, ${TotMem}M in use, $InitTime INIT ($InitElapsed elapsed), $MutTime MUT ($MutElapsed elapsed), $GcTime GC ($GcElapsed elapsed)";
} else { } else {
print STDERR "$BytesAlloc bytes, $GCs GCs, $AvgResidency/$MaxResidency avg/max bytes residency ($ResidencySamples samples), $GCWork bytes GC work, ${TotMem}M in use, $InitTime INIT ($InitElapsed elapsed), $MutTime MUT ($MutElapsed elapsed), $GcTime GC ($GcElapsed elapsed), $TotInstrs instructions, $TotReads memory reads, $TotWrites memory writes"; print STDERR "$BytesAlloc bytes, $GCs GCs, $AvgResidency/$MaxResidency avg/max bytes residency ($ResidencySamples samples), $GCWork bytes GC work, ${TotMem}M in use, $InitTime INIT ($InitElapsed elapsed), $MutTime MUT ($MutElapsed elapsed), $GcTime GC ($GcElapsed elapsed), $TotInstrs instructions, $TotReads memory reads, $TotWrites memory writes";
...@@ -450,3 +461,22 @@ sub process_cacheprof_files { ...@@ -450,3 +461,22 @@ sub process_cacheprof_files {
} }
close(STATS); close(STATS);
} }
sub process_heimdall_file {
open(STATS, "< $HeimdallStats") || die("Can't open $HeimdallStats\n");
# instruction counts from Julian Seward's HEIMDALL:
#
# === HEIMDALL: instruction counts: 815000 instrs, 230040 reads, 138692 writes
while (<STATS>) {
/^=== HEIMDALL: instruction counts: ([0-9]+) instrs, ([0-9]+) reads, ([0-9]+) writes/
&& do {
$TotInstrs = $1;
$TotReads = $2;
$TotWrites = $3;
}
}
close(STATS);
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment