mirror of
https://github.com/kdlucas/byte-unixbench.git
synced 2024-12-11 23:30:07 +08:00
Extend N-copies to 2N for Context Switching case in out-of-box run
This commit is contained in:
parent
a07fcc0326
commit
cb5a8ade2a
@ -99,6 +99,11 @@ my $RESULTDIR = getDir('UB_RESULTDIR', $FindBin::Bin . "/results");
|
||||
# Directory where the tests are executed.
|
||||
my $TESTDIR = getDir('UB_TESTDIR', $FindBin::Bin . "/testdir");
|
||||
|
||||
# System information
|
||||
my $systemInfo = getSystemInfo();
|
||||
|
||||
# Multi-parallel literal
|
||||
my $multiParallel = "Multi-parallel copies";
|
||||
|
||||
############################################################################
|
||||
# TEST SPECIFICATIONS
|
||||
@ -255,6 +260,7 @@ my $testParams = {
|
||||
"cat" => 'system',
|
||||
"repeat" => 'long',
|
||||
"options" => "10",
|
||||
"system_capacity_parallel_factor" => 2,
|
||||
},
|
||||
"pipe" => {
|
||||
"logmsg" => "Pipe Throughput",
|
||||
@ -900,6 +906,7 @@ sub parseArgs {
|
||||
# Generate the requested list of bench programs.
|
||||
my $opt;
|
||||
my $word;
|
||||
my $copies;
|
||||
while ($word = shift(@words)) {
|
||||
if ($word !~ m/^-/) { # A test name.
|
||||
if ($word eq "all") {
|
||||
@ -922,7 +929,9 @@ sub parseArgs {
|
||||
if (!defined($params->{'copies'})) {
|
||||
$params->{'copies'} = [ ];
|
||||
}
|
||||
push(@{$params->{'copies'}}, shift(@words));
|
||||
$copies = shift(@words);
|
||||
abortRun("-c copies should be positive integer") if ($copies !~ m/^\d+$/ || $copies <= 0);
|
||||
push(@{$params->{'copies'}}, $copies);
|
||||
} else {
|
||||
die("Run: unknown option $word\n");
|
||||
}
|
||||
@ -1342,7 +1351,7 @@ sub runBenchmark {
|
||||
$params->{'command'} = $command;
|
||||
|
||||
# Set up the benchmark results structure.
|
||||
my $bresult = { 'name' => $bench, 'msg' => $params->{'logmsg'} };
|
||||
my $bresult = { 'name' => $bench, 'msg' => $params->{'logmsg'}, 'copies' => $copies};
|
||||
|
||||
if ($verbose > 0) {
|
||||
printf "\n%d x %s ", $copies, $params->{'logmsg'};
|
||||
@ -1416,13 +1425,22 @@ sub runTests {
|
||||
abortRun("unknown benchmark \"$bench\"");
|
||||
}
|
||||
|
||||
my $benchCopies = $copies;
|
||||
if ($benchCopies == 0) {
|
||||
$benchCopies = $systemInfo->{'numCpus'};
|
||||
my $pFactor = $params->{'system_capacity_parallel_factor'};
|
||||
if (defined $pFactor) {
|
||||
$benchCopies *= $pFactor;
|
||||
}
|
||||
}
|
||||
|
||||
# If the benchmark doesn't want to run with this many copies, skip it.
|
||||
my $cat = $params->{'cat'};
|
||||
my $maxCopies = $testCats->{$cat}{'maxCopies'};
|
||||
next if ($maxCopies > 0 && $copies > $maxCopies);
|
||||
next if ($maxCopies > 0 && $benchCopies > $maxCopies);
|
||||
|
||||
# Run the benchmark.
|
||||
my $bresult = runBenchmark($bench, $params, $verbose, $logFile, $copies);
|
||||
my $bresult = runBenchmark($bench, $params, $verbose, $logFile, $benchCopies);
|
||||
$results->{$bench} = $bresult;
|
||||
}
|
||||
$results->{'end'} = time();
|
||||
@ -1450,7 +1468,8 @@ sub runTests {
|
||||
# Display a banner indicating the configuration of the system under test
|
||||
# to the given file desc.
|
||||
sub displaySystem {
|
||||
my ( $info, $fd ) = @_;
|
||||
my ( $fd ) = @_;
|
||||
my $info = $systemInfo;
|
||||
|
||||
# Display basic system info.
|
||||
printf $fd " System: %s: %s\n", $info->{'name'}, $info->{'system'};
|
||||
@ -1487,9 +1506,9 @@ sub logResults {
|
||||
# Display the individual test scores.
|
||||
foreach my $bench (@{$results->{'list'}}) {
|
||||
my $bresult = $results->{$bench};
|
||||
|
||||
printf $outFd "%-40s %12.1f %-5s (%.1f s, %d samples)\n",
|
||||
$bresult->{'msg'},
|
||||
my $copiesInfo = number($bresult->{'copies'}, "copy", "copies");
|
||||
printf $outFd "%-55s %12.1f %-5s (%.1f s, %d samples)\n",
|
||||
$bresult->{'msg'}."($copiesInfo)",
|
||||
$bresult->{'score'},
|
||||
$bresult->{'scorelabel'},
|
||||
$bresult->{'time'},
|
||||
@ -1520,21 +1539,22 @@ sub logIndexCat {
|
||||
# scores, or a partial set.
|
||||
my $head = $testCats->{$cat}{'name'} .
|
||||
($full ? " Index Values" : " Partial Index");
|
||||
printf $outFd "%-40s %12s %12s %8s\n",
|
||||
printf $outFd "%-55s %12s %12s %8s\n",
|
||||
$head, "BASELINE", "RESULT", "INDEX";
|
||||
|
||||
# Display the individual test scores.
|
||||
foreach my $bench (@{$results->{'list'}}) {
|
||||
my $bresult = $results->{$bench};
|
||||
next if $bresult->{'cat'} ne $cat;
|
||||
my $copiesInfo = number($bresult->{'copies'}, "copy", "copies");
|
||||
|
||||
if (defined($bresult->{'iscore'}) && defined($bresult->{'index'})) {
|
||||
printf $outFd "%-40s %12.1f %12.1f %8.1f\n",
|
||||
$bresult->{'msg'}, $bresult->{'iscore'},
|
||||
printf $outFd "%-55s %12.1f %12.1f %8.1f\n",
|
||||
$bresult->{'msg'}."($copiesInfo)", $bresult->{'iscore'},
|
||||
$bresult->{'score'}, $bresult->{'index'};
|
||||
} else {
|
||||
printf $outFd "%-40s %12s %12.1f %8s\n",
|
||||
$bresult->{'msg'}, "---",
|
||||
printf $outFd "%-55s %12s %12.1f %8s\n",
|
||||
$bresult->{'msg'}."($copiesInfo)", "---",
|
||||
$bresult->{'score'}, "---";
|
||||
}
|
||||
}
|
||||
@ -1544,8 +1564,8 @@ sub logIndexCat {
|
||||
if (!$full) {
|
||||
$title .= " (Partial Only)";
|
||||
}
|
||||
printf $outFd "%-40s %12s %12s %8s\n", "", "", "", "========";
|
||||
printf $outFd "%-66s %8.1f\n", $title, $iscore;
|
||||
printf $outFd "%-55s %12s %12s %8s\n", "", "", "", "========";
|
||||
printf $outFd "%-81s %8.1f\n", $title, $iscore;
|
||||
|
||||
printf $outFd "\n";
|
||||
}
|
||||
@ -1564,7 +1584,7 @@ sub logIndex {
|
||||
|
||||
# Dump the given run results into the given report file.
|
||||
sub summarizeRun {
|
||||
my ( $systemInfo, $results, $verbose, $reportFd ) = @_;
|
||||
my ( $results, $verbose, $reportFd ) = @_;
|
||||
|
||||
# Display information about this test run.
|
||||
printf $reportFd "------------------------------------------------------------------------\n";
|
||||
@ -1574,7 +1594,7 @@ sub summarizeRun {
|
||||
strftime("%H:%M:%S", localtime($results->{'end'}));
|
||||
printf $reportFd "%s in system; running %s of tests\n",
|
||||
number($systemInfo->{'numCpus'}, "CPU"),
|
||||
number($results->{'copies'}, "parallel copy", "parallel copies");
|
||||
$results->{'copies'} == 0 ? $multiParallel : number($results->{'copies'}, "parallel copy", "parallel copies");
|
||||
printf $reportFd "\n";
|
||||
|
||||
# Display the run scores.
|
||||
@ -1597,7 +1617,8 @@ sub summarizeRunCsvHeader {
|
||||
# Write CSV Headers of test.
|
||||
foreach my $bench (@{$results->{'list'}}) {
|
||||
my $bresult = $results->{$bench};
|
||||
printf $reportFd ",%s", $bresult->{'msg'};
|
||||
my $copiesInfo = number($bresult->{'copies'}, "copy", "copies");
|
||||
printf $reportFd ",%s", $bresult->{'msg'}."($copiesInfo)";
|
||||
}
|
||||
printf $reportFd "\n";
|
||||
}
|
||||
@ -1633,7 +1654,7 @@ sub summarizeRunCsvRows {
|
||||
|
||||
# Dump the given run results into the given report file.
|
||||
sub runHeaderHtml {
|
||||
my ( $systemInfo, $reportFd ) = @_;
|
||||
my ( $reportFd ) = @_;
|
||||
|
||||
# Display information about this test run.
|
||||
my $title = sprintf "Benchmark of %s / %s on %s",
|
||||
@ -1680,7 +1701,8 @@ EOF
|
||||
# Display a banner indicating the configuration of the system under test
|
||||
# to the given file desc.
|
||||
sub displaySystemHtml {
|
||||
my ( $info, $fd ) = @_;
|
||||
my ( $fd ) = @_;
|
||||
my $info = $systemInfo;
|
||||
|
||||
printf $fd "<h3>Test System Information</h3>\n";
|
||||
printf $fd "<p><table>\n";
|
||||
@ -1834,7 +1856,7 @@ sub logResultsHtml {
|
||||
|
||||
# Dump the given run results into the given report file.
|
||||
sub summarizeRunHtml {
|
||||
my ( $systemInfo, $results, $verbose, $reportFd ) = @_;
|
||||
my ( $results, $verbose, $reportFd ) = @_;
|
||||
|
||||
# Display information about this test run.
|
||||
my $time = $results->{'end'} - $results->{'start'};
|
||||
@ -1901,15 +1923,15 @@ sub main {
|
||||
createDirrectoriesIfNotExists(@creatingDirectories);
|
||||
|
||||
preChecks();
|
||||
my $systemInfo = getSystemInfo();
|
||||
|
||||
# If the number of copies to run was not set, set it to 1
|
||||
# and the number of CPUs in the system (if > 1).
|
||||
# and the system capacity based on number of CPUs in the system
|
||||
# (if > 1) and per benchmark characteristic.
|
||||
my $copies = $params->{'copies'};
|
||||
if (!$copies || scalar(@$copies) == 0) {
|
||||
push(@$copies, 1);
|
||||
if (defined($systemInfo->{'numCpus'}) && $systemInfo->{'numCpus'} > 1) {
|
||||
push(@$copies, $systemInfo->{'numCpus'});
|
||||
push(@$copies, 0);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1950,23 +1972,23 @@ sub main {
|
||||
}
|
||||
|
||||
printf $reportFd " BYTE UNIX Benchmarks (Version %s)\n\n", $version;
|
||||
runHeaderHtml($systemInfo, $reportFd2);
|
||||
runHeaderHtml($reportFd2);
|
||||
|
||||
# Dump information about the system under test.
|
||||
displaySystem($systemInfo, $reportFd);
|
||||
displaySystemHtml($systemInfo, $reportFd2);
|
||||
displaySystem($reportFd);
|
||||
displaySystemHtml($reportFd2);
|
||||
|
||||
# Run the tests! Do a test run once for each desired number of copies;
|
||||
# for example, on a 2-CPU system, we may do a single-processing run
|
||||
# followed by a dual-processing run.
|
||||
foreach my $c (@$copies) {
|
||||
if ($verbose > 1) {
|
||||
printf "Run with %s\n", number($c, "copy", "copies");
|
||||
printf "Run with %s\n", $c == 0 ? $multiParallel : number($c, "copy", "copies");
|
||||
}
|
||||
my $results = runTests($tests, $verbose, $logFile, $c);
|
||||
|
||||
summarizeRun($systemInfo, $results, $verbose, $reportFd);
|
||||
summarizeRunHtml($systemInfo, $results, $verbose, $reportFd2);
|
||||
summarizeRun($results, $verbose, $reportFd);
|
||||
summarizeRunHtml($results, $verbose, $reportFd2);
|
||||
|
||||
if ($isOutputFormatCsv) {
|
||||
if ( $is_csv_header_written == 0 ) {
|
||||
|
Loading…
Reference in New Issue
Block a user