summaryrefslogtreecommitdiff
path: root/TAO/performance-tests/Cubit/TAO/MT_Cubit/README
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/performance-tests/Cubit/TAO/MT_Cubit/README')
-rw-r--r--TAO/performance-tests/Cubit/TAO/MT_Cubit/README215
1 files changed, 215 insertions, 0 deletions
diff --git a/TAO/performance-tests/Cubit/TAO/MT_Cubit/README b/TAO/performance-tests/Cubit/TAO/MT_Cubit/README
new file mode 100644
index 00000000000..6a9a0ff666c
--- /dev/null
+++ b/TAO/performance-tests/Cubit/TAO/MT_Cubit/README
@@ -0,0 +1,215 @@
+// $Id$
+
+THE MT_CUBIT EXAMPLE
+--------------------
+
+This directory contains the source code for the TAO "MT_Cubit"
+benchmark, which enables us to measure the real-time performance of
+TAO. MT_Cubit measures the latency, jitter, determinism, CPU
+utilization, and degree of priority inversion incurred by TAO twoway
+operations invoked under different workloads and priorities. For
+more information and empirical results, please see
+
+http://www.cs.wustl.edu/~schmidt/PDF/RT-perf.pdf
+http://www.cs.wustl.edu/~schmidt/PDF/RT-OS.pdf
+
+COMPILING
+---------
+
+Makefile is provided. Use make to compile.
+
+You can either run the server in the background in the same window as
+the client or open a separate window for the client and server.
+
+OPTIONS
+-------
+Options are case sensitive, e.g., "-U" has a different meaning than "-u".
+
+(1) server:
+
+./server [-e <endpoint>] // Endpoint to use (URL style endpoint)
+ [-t <number_of_servants>] // # of servant threads to create
+ [-f <ior_file> ] // specify a file to output all ior's
+ [-m ] // Use multiple priorities for threads
+ [-r ] // Run the thread-per-rate test
+
+[-e <endpoint>] indicates the endpoint the ORB should bind to.
+ This is useful when a machine has more than one network interface.
+
+ Default Value: Whatever the current active pluggable protocol
+ uses as its default endpoint.
+
+[-t <number_of_servants>] tells the server how many servants to create.
+
+ Default Value: 2
+
+[-f <ior_file> ] Use to specify a file to write all the iors from the
+ different servants out to disk.
+
+ Default Value: nil, which means not to write the iors to disk.
+
+[-m ] For the 1 to n low priority servants, this parameter indicates
+ the use of a range of priorities for the threads.
+
+ Default Value: Disabled. One priority will be used for the
+ low priority threads.
+
+[-r] turn on the thread-per-rate tests. (Priority inversion tests)
+
+ Default Value: Disabled.
+
+The server will print the IOR of the servants, but it is not required
+by the client.
+
+(2) client:
+
+./client [<ORB OPTIONS>] // ORB options, e.g., "-ORBObjRefStyle url"
+ [-d <datatype>] // what datatype to use for calls
+ [-n <num_calls>] // number of CORBA calls to make.
+ [-t <num_of_clients>] // number of client threads to create
+ [-f <ior_file>] // specify the file from which we read the object references (iors), if any.
+ [-r] // run thread-per-rate test.
+ [-o] // makes client use oneway calls. By default, twoway calls are used.
+ [-x] // makes a call to servant to shutdown
+ [-u <requests> ] // run the client utilization test for a number of <requests>.
+ [-1] // run the one-to-n test.
+ [-g <granularity>] // choose the granularity of the timing of CORBA calls
+ [-c] // run the number of context switches test.
+ [-m] // use multiple priorities for the low priority clients.
+
+[-d <datatype>] <datatype> is one of the following:
+
+ 0 Octet
+ 1 Short
+ 2 Long
+ 3 Struct of the above 3 types
+
+ Default Value: 0
+
+[-n <num_calls>] is the number of CORBA twoway calls to be made
+
+ Default Value: 1000
+
+[-t <num_of_clients>] is the total number of concurrent clients to be
+ created. The clients will have successively decreasing
+ priorities if "-m" is specified.
+
+ Default Value: 2
+
+[-f <ior_file> ] Use to specify a file to read the object references (iors) of the
+ different servants from disk.
+
+ Default Value: nil, which means not to read the iors from disk.
+
+[-r] run the thread-per-rate test. (Priority inversion tests)
+
+ Default Value: Disabled.
+
+[-o] enables oneway calls instead of two-way calls. The oneway call
+ is a noop call (for now).
+
+ Default Value: Disabled
+
+[-x] makes the client call the shutdown() method on the servant which in turn
+ invokes the shutdown() method on the ORB and causes it to exit gracefully.
+
+ Default Value: Disabled
+
+[-u <seconds>] runs the client/server utilization test for a number of <requests>.
+ The output is the number of seconds for the test to make such number of requests.
+ Now run the same test but with the -l option to make the same number of requests,
+ this time not using CORBA, instead directly making function calls. The difference
+ in time for each test to make the same number of requests is the utilization of
+ the OS/ORB combined.
+ (Note: This option overrides any specified "-t" option)
+
+ Default Value: Disabled
+
+[-1] runs one-to-n test. One servant services all low priority clients.
+
+ Default Value: Disabled
+
+[-g <granularity>] choose the granularity of timing the CORBA calls.
+ This option should disappear sometime in the future, together with
+ all the modifications done to support this.
+
+ What happens when this options is not used, is that (1) we start a
+ timer, (2) invoke the CORBA call, (3) stop the timer after call
+ returns. Some platforms have a very coarse grain timer (e.g. 10
+ msec) and timing individual calls does not report very accurate
+ latency results.
+
+ This option enables a way to (1) start the timer, (2) invoke
+ <granularity> calls, and (3) stop the timer. This way, we get a
+ better sense of the average latency of the CORBA calls.
+
+ The downside is that the mechanism to enforce the frequency of calls
+ (i.e., 20 Hz, 10Hz, etc) is in conflict with this option. Such
+ mechanism depends on the individual time for each call to enforce
+ the calling frequency.
+
+ Default Value: 1 (time each CORBA call)
+
+[-c] Obtain number of context switches.
+
+ Default Value: Disabled
+
+[-m] Use multiple priorities for the low priority client
+
+ Default Value: Disabled. Will use one priority for all low priority clients.
+
+Running on VxWorks
+------------------
+
+A typical run of the server and client on a single VxWorks target:
+
+ -> iam "<your login>"
+ -> ld < server
+ -> ld < client
+ -> spa server, "-f", "ior.txt", "-t", "2"
+ -> spa client, "-f", "ior.txt", "-t", "2", "-n", "1000"
+
+RESULTS
+-------
+
+The client prints the latency observed by the high priority client,
+and the average latency observed by the low priority clients. Jitter
+(standard deviation of the latency) is also printed by the client.
+
+
+Running MT_Cubit on CHORUS:
+--------------------------
+
+1.You should make sure that you set the HOST environment variable on the
+Chorus VME Board to the IP address of that Board before you run
+MT_Cubit test.
+
+e.g
+$rsh tambora1 setenv HOST 128.252.165.82
+
+2. You should make sure that the path to IOR file has write permission
+for ALL.
+
+server:
+------
+$rsh host_name arun path_to_server -e iiop://DOTTED_DECIMAL_ADDRESS:0
+ -f path_to_ior_file -ORBDottedDecimalAddresses 1 <server_options>
+
+Since Chorus doesn't support DNS, you should pass
+dotted_decimal_address of the server machine to -e option.
+
+You DONT have to use -ORBDottedDecimalAddresses 1 if you have
+TAO_USE_DOTTED_DECIMAL_ADDRESSES defined in your config.h file.
+
+e.g
+$rsh tambora1 arun /MT_Cubit/server -e iiop://128.252.165.82:0 -f /ior
+-ORBDottedDecimalAddresses 1 -t 10 -ORBObjRefStyle url
+
+client:
+-------
+
+$rsh host_name arun path_to_client -f path_to_ior_file <client_options>
+
+e.g
+
+$rsh tambora2 arun /MT_Cubit/client -f /ior -t 10 -n 300