summaryrefslogtreecommitdiff
path: root/TAO/performance-tests/Protocols/run_senders.pl
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/performance-tests/Protocols/run_senders.pl')
-rwxr-xr-xTAO/performance-tests/Protocols/run_senders.pl217
1 files changed, 217 insertions, 0 deletions
diff --git a/TAO/performance-tests/Protocols/run_senders.pl b/TAO/performance-tests/Protocols/run_senders.pl
new file mode 100755
index 00000000000..01bfbf5da8a
--- /dev/null
+++ b/TAO/performance-tests/Protocols/run_senders.pl
@@ -0,0 +1,217 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+require Process;
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::Run_Test;
+
+# Type of test to run
+$test_type = "PACED";
+
+# Estimated execution of each test
+$execution_time = 100;
+
+# Expected throughput of the network (in Mbps)
+$expected_throughput = 100;
+
+#
+# Assigns default rates
+#
+$min_rate = 25;
+$max_rate = 100;
+$rate_increment = 25;
+
+@rates[0] = 5;
+
+for ($rate = $min_rate, $i = 1;
+ $rate <= $max_rate;
+ $rate += $rate_increment, $i += 1)
+{
+ @rates[$i] = $rate;
+}
+
+
+#
+# Assigns default message sizes
+#
+$min_message_size = 1 * 1000;
+$max_message_size = 64 * 1000;
+
+@message_sizes[0] = 0;
+
+for ($message_size = $min_message_size, $i = 1;
+ $message_size <= $max_message_size;
+ $message_size *= 2, $i += 1)
+{
+ @message_sizes[$i] = $message_size;
+}
+
+
+#
+# Assigns default protocols
+#
+@protocols =
+ (
+ "IIOP",
+ "DIOP",
+ "SCIOP",
+ );
+
+
+#
+# Parse the arguments
+#
+for ($i = 0; $i <= $#ARGV; $i++) {
+ if ($ARGV[$i] eq "-h" || $ARGV[$i] eq "-?")
+ {
+ print STDERR "\nusage: run_senders.pl\n";
+
+ print STDERR "\t-h shows options menu\n";
+
+ print STDERR "\t-message_sizes: defaults to (";
+ for $message_size (@message_sizes)
+ {
+ print STDERR "$message_size, ";
+ }
+ print STDERR ")\n";
+
+ print STDERR "\t-rates: defaults to (";
+ for $rate (@rates)
+ {
+ print STDERR "$rate, ";
+ }
+ print STDERR ")\n";
+
+ print STDERR "\t-protocols: defaults to (";
+ for $protocol (@protocols)
+ {
+ print STDERR "$protocol, ";
+ }
+ print STDERR ")\n";
+
+ print STDERR "\t-execution_time: defaults to $execution_time\n";
+
+ print STDERR "\t-test_type: defaults to $test_type (valid options are PACED, THROUGHPUT, and LATENCY)\n";
+
+ print STDERR "\n";
+
+ $CL = new PerlACE::Process ("sender", "-h");
+ $CL->Spawn ();
+ $CL->WaitKill (5);
+
+ $SV = new PerlACE::Process ("receiver", "-h");
+ $SV->Spawn ();
+ $SV->WaitKill (5);
+
+ exit;
+ }
+ elsif ($ARGV[$i] eq "-message_sizes")
+ {
+ @message_sizes = split (',', $ARGV[$i + 1]);
+ $i++;
+ }
+ elsif ($ARGV[$i] eq "-rates")
+ {
+ @rates = split (',', $ARGV[$i + 1]);
+ $i++;
+ }
+ elsif ($ARGV[$i] eq "-protocols")
+ {
+ @protocols = split (',', $ARGV[$i + 1]);
+ $i++;
+ }
+ elsif ($ARGV[$i] eq "-execution_time")
+ {
+ $execution_time = $ARGV[$i + 1];
+ $i++;
+ }
+ elsif ($ARGV[$i] eq "-test_type")
+ {
+ $test_type = $ARGV[$i + 1];
+ $i++;
+
+ # Rate is irrelevant in THROUGHPUT and LATENCY tests.
+ if ($test_type eq "THROUGHPUT" ||
+ $test_type eq "LATENCY")
+ {
+ @rates = split (',', "1");
+ }
+ }
+ else
+ {
+ $extra_args .= " " . $ARGV[$i];
+ }
+}
+
+$i = 0;
+
+#
+# This loop form the arguments
+#
+for $protocol (@protocols)
+{
+ for $rate (@rates)
+ {
+ for $message_size (@message_sizes)
+ {
+ # DIOP does not support messages beyond 8K
+ next if ($protocol eq "DIOP" && $message_size > (8 * 1000));
+
+ # Since DIOP is unreliable, it doesn't make sense to use it for THROUGHPUT and LATENCY tests.
+ next if ($protocol eq "DIOP" && ($test_type eq "THROUGHPUT" || $test_type eq "LATENCY"));
+
+ # Assign iterations
+ if ($test_type eq "PACED")
+ {
+ $iterations = $execution_time * $rate;
+ }
+ elsif ($test_type eq "THROUGHPUT")
+ {
+ # Skip message size of zero since we will never to able get any throughput
+ next if ($message_size == 0);
+ $iterations = $expected_throughput * 1000 * 1000 * $execution_time / $message_size / 8;
+ }
+ elsif ($test_type eq "LATENCY")
+ {
+ # Latency iteration are fixed. Using
+ # expected_throughput is really not a good measure.
+ $iterations = 10000;
+ }
+
+ @configs[$i] = "-i $iterations -p $protocol -r $rate -s $message_size";
+ $i++;
+ }
+ }
+}
+
+
+if ($test_type eq "PACED")
+{
+ $test = 0;
+
+ # Sender-side stats are not interesting when pacing
+ $print_statistics = 0;
+}
+elsif ($test_type eq "THROUGHPUT")
+{
+ $test = 1;
+ $print_statistics = 1;
+}
+elsif ($test_type eq "LATENCY")
+{
+ $test = 2;
+ $print_statistics = 1;
+}
+
+
+for $config (@configs)
+{
+ $command = "./sender -a $test -t $print_statistics $config $extra_args";
+ print "$command \n";
+ system ($command);
+}
+