CORBA Comparison Project Windows Visual C++ Platform

Size: px
Start display at page:

Download "CORBA Comparison Project Windows Visual C++ Platform"

Transcription

1 CORBA Comparison Project Windows Visual C++ Platform Orbix 5.1 TAO VisiBroker 5.1 Version: Final release Date: January 30, 2003 Distributed Systems Research Group Department of Software Engineering Faculty of Mathematics and Physics Charles University, Prague, Czech Republic

2 CORBA Comparison Project, Windows Visual C++ Platform Disclaimer This report is provided "as is", without warranty of any kind, either expressed or implied. This includes, but is not limited to, the implied warranties of merchantability and fitness for a particular purpose. In no event shall any author or copyright holder be liable for damages arising out of the use or the inability to use the report. Both the results of the measurements in this report and their interpretation depend on a number of technical and circumstantial factors. It is the sole responsibility of the user of this report to assess the applicability of the results and their interpretation. Authors The Distributed Systems Research Group is a part of the Department of Software Engineering, Faculty of Mathematics and Physics, Charles University, Prague, Czech Republic. The activities of the group include performance evaluation of CORBA broker platforms under the heading of the CORBA Comparison Project. The CORBA Comparison Project commenced in 1998 and has delivered output for partners such as MLC Systeme GmbH (now Deutsche Post Com GmbH), Iona Technologies, Borland International. The group also contributed to the OMG White Paper on Benchmarking. Confidential Page 2 Copyright 2003 Distributed Systems Research Group, Charles University

3 CORBA Comparison Project, Windows Visual C++ Platform Contents Contents... 3 Introduction... 4 Platform Configuration... 4 Measurement Technology... 4 Measurement Framework... 4 Acquiring Time Information... 4 Acquiring Resource Usage Information... 4 Measurement Results... 5 Time Distribution Graphs... 5 Time Pattern Graphs... 6 Box And Whiskers Graphs... 6 Resource Usage Graphs... 7 Initial... 8 Void... 8 Orbix TAO VisiBroker Summary Ping Orbix TAO VisiBroker Summary Invocation Static Invocation Orbix TAO VisiBroker Summary Dynamic Invocation Orbix TAO VisiBroker Summary Marshaling Marshaling Basic Types Orbix TAO VisiBroker Summary Marshaling Arrays Of Basic Types Orbix TAO VisiBroker Summary Marshaling Sequences Of Octets Orbix TAO VisiBroker Summary Dispatching Dispatching To Servant Instances Orbix TAO VisiBroker Summary Lifecycle Of Servant Instances Orbix TAO VisiBroker Summary Confidential Page 3 Copyright 2003 Distributed Systems Research Group, Charles University

4 CORBA Comparison Project, Windows Visual C++ Platform Introduction The purpose of this report is to present results of measurements that evaluate CORBA broker platforms along the three axes of response time, throughput and resource requirements. Platform Configuration The Windows Visual C++ platform was configured as follows: Dell Precision 340 Intel Pentium 4 2.2GHz 512MB RAM 100Mbit/s Full Duplex Ethernet Microsoft Windows 2000 Professional SP3 Microsoft Visual C SP5 The brokers tested were: Orbix 5.1 TAO VisiBroker 5.1 All suites except the Lifecycle Of Servant Instances suite were run remotely. The Lifecycle Of Servant Instances suite was run locally. This was necessary for correlating the timing information from the client with the timing information from the server. Measurement Technology Dedicated suites of tests measure individual aspects of broker performance. All suites employ the same measurement framework. To form a specific test, the framework is augmented by an action to be measured on the client side and servants to be instantiated on the server side. The concept of measurement framework is employed in both the C++ and Java environments. The implementations in both languages are functionally equivalent, except for short explicit garbage collection loop in Java client, which is aimed at ensuring similar starting conditions for each measurement. Measurement Framework The measurement framework carries out a measurement in five stages. Warm-up In the warm-up stage, the framework instantiates threads that carry out the action to be measured. When the threads start, the framework waits for a random time from 5 to 20 seconds to make sure the system is under a stable load before the measurement progresses. Client Resource Usage In the client resource usage stage, the framework collects information about client resource usage in 60 samples taken over the period of 60 seconds. For each resource, the minimum, maximum and average values are kept. Server Resource Usage In the server resource usage stage, the framework collects information about server resource usage, same as in the client resource usage stage. Solo Measurement In the solo measurement stage, the framework records 5000 individual measurements observed by a randomly selected thread. Information such as statistical distribution and quartiles is calculated from the individual measurements. Shared Measurement In the shared measurement stage, the framework records minimum, maximum and average values of measurements observed by all threads over the period of 60 seconds. Information such as overall minima, maxima and averages is calculated from the shared measurements. Each measurement is repeated 5 times. Acquiring Time Information Solaris On Solaris, the gethrtime() system call is used to obtain the time information. The resolution of thus obtained time is 1ns. Windows On Windows, the QueryPerformanceCounter() system call is used to obtain the time information. The resolution of thus obtained time is the same as the frequency of the processor clock. Acquiring Resource Usage Information Solaris The memory usage information on Solaris is collected from the /proc/self/psinfo file, where the resident and swapped application memory sizes are stored, from the kstat structures, where the kernel memory size is stored, from the sysconf() system call, which reports the total physical memory size, and from the swapctl() system call, which reports the total swapped memory size. The network usage information on Solaris is collected from the kstat structures, where the network traffic information is stored. The network usage information does not include the traffic over the loopback interface in bytes, which is not reported by the operating system. The processor usage information on Solaris is collected by hooking the thr_create() and pthread_create() system calls, where the application thread count is kept, and from the kstat structures, where the total processor usage is stored. Confidential Page 4 Copyright 2003 Distributed Systems Research Group, Charles University

5 CORBA Comparison Project, Windows Visual C++ Platform Windows On Windows, most information is collected from performance data accessible under HKEY_PERFORMANCE_DATA key in the registry. The data is not actually stored in the registry; the registry functions cause the system to collect the data from its source. The data come in form of performance objects, which represent various resources found in a system. Each object has a name and a set of named counters associated with it. The counters associated with an object can come in several instances for entities where it makes sense, e.g. processes, network interfaces, etc. The memory usage information is collected from Working Set and Page File Bytes counters of the corresponding instance of Process object, where the resident and swapped application memory sizes are stored, from Pool Paged Bytes and Pool Nonpaged Bytes counters of the Memory object, where the kernel memory sizes are stored and from the GlobalMemoryStatus() system call, which reports the total physical and total swapped memory sizes. The network usage information is collected from Bytes Sent/sec, Bytes Received/sec, Packets Sent/sec and Packets Received/sec counters of all instances of Network Interface object. The processor usage information is collected from Thread Count counter of the corresponding instance of Process object, where the application thread count is kept, and from % User Time, % Processor Time and % Privileged Time counters of all instances of Processor object, where the total processor usage is stored. Java In Java, the information is collected using native code methods contained in platform dependent dynamic shared libraries, which utilize the above-mentioned methods. The only exception is the application thread count, which is determined using pure Java methods and represents the number of active threads in the root thread group. Measurement Results Individual suites of tests are described in dedicated chapters. All chapters begin with a description of the suite accompanied by code fragments that characterize the suite. Except where not applicable, the interface definitions in IDL are present together with the code of the action to be measured on the client side and the code of the servants to be instantiated on the server side. The results of the tests follow the description in chapters dedicated to individual brokers and platforms. When more than one broker has been tested on a platform, a platform summary is also provided. The results are plotted in graphs accompanied by a description of what the graph shows. Time Distribution Graphs The time distribution graphs are calculated from data collected in the solo measurement stage. On the X axis are intervals of the time being measured, on the Y axis is the percentage of the measured times that fell within the given interval. The bars marked as other denote measured times that were either smaller or bigger than any of the intervals considered. Confidential Page 5 Copyright 2003 Distributed Systems Research Group, Charles University

6 CORBA Comparison Project, Windows Visual C++ Platform Time Pattern Graphs The time pattern graphs are calculated from data collected in the solo measurement stage. On the X axis is the sequential number of the measurement, on the Y axis is the measured time. Box And Whiskers Graphs The box and whiskers graphs are calculated from data collected in the solo measurement stage. The box spans from low to high quartile of the collected data and thus indicates the range within which half of the measured values fall. The whiskers span from minimum to maximum of the collected data and thus indicate the range within which all of the measured values fall. The median of the collected data is marked within the box. Confidential Page 6 Copyright 2003 Distributed Systems Research Group, Charles University

7 CORBA Comparison Project, Windows Visual C++ Platform Resource Usage Graphs The resource usage graphs are calculated from data collected in the client and server resource usage measurement stages. The solid line marks the average of the collected data. When present, a pair of dotted lines marks the minimum and maximum of the collected data. Confidential Page 7 Copyright 2003 Distributed Systems Research Group, Charles University

8 CORBA Comparison Project, Windows Visual C++ Platform Void Initial Void Description The suite measures an empty cycle of a constant length with a halfway timestamp. The purpose of the suite is to assess the impact of the measurement environment and measurement framework on the observed results. C++ Code ulonglong ActionVoid (void *pargs) { ulonglong itime; volatile int i; } // This is really just a cycle over a volatile variable to // waste some time and prevent too aggressive an optimization. for (i = 0 ; i < BEN_Cycles ; i ++) { }; itime = TIMGetTimestamp (); for (i = 0 ; i < BEN_Cycles ; i ++) { }; return (itime); Java Code public final void execute (long [] times) { for (int cntr = 0; cntr < BEN_Cycles; cntr++) { }; times [0] = SysInformer.timGetTimestamp (); for (int cntr = 0; cntr < BEN_Cycles; cntr++) { }; } Results The time distribution graphs should display a maximum for both the half cycle and the full cycle times. The maxima should be almost exclusive when a single thread is used and gradually less dominant when multiple threads are used. The most frequently observed time for the full cycle should be twice the most frequently observed time for the half cycle. The time pattern graphs should display a monotonous sequence for both the half cycle and the full cycle times, with a small number of regular fluctuations. The sequence should be gradually less uniform when multiple threads are used. The dependency of both the half cycle and the full cycle times on the number of threads should display constant minimum and median values and linearly increasing average and maximum values. The client thruput should be constant, except on multiprocessor systems, where the thruput should increase initially until the number of threads reaches the number of processors. The memory usage should be constant. The network usage should be zero. The thread usage should increase linearly on the client and be constant on the server. The processor usage should be monotonous and exclusively in user space. Confidential Page 8 Copyright 2003 Distributed Systems Research Group, Charles University

9 CORBA Comparison Project, Windows Visual C++ Platform Void/Orbix 5.1 Orbix 5.1 Time Distribution (1 Thread) The graph depicts the statistical distribution of the time it takes to complete the empty cycle. On the X axis are the time intervals, on the Y axis is the percentage of empty cycles completed within the given time interval. Time Distribution (10 Threads) The graph depicts the statistical distribution of the time it takes to complete the empty cycle. On the X axis are the time intervals, on the Y axis is the percentage of empty cycles completed within the given time interval. Time Distribution (100 Threads) The graph depicts the statistical distribution of the time it takes to complete the empty cycle. On the X axis are the time intervals, on the Y axis is the percentage of empty cycles completed within the given time interval. Time Pattern (1 Thread) The graph depicts the pattern of changes of the time it takes to complete the empty cycle. On the X axis is the sequential number of the measurement, on the Y axis is the time it took to complete the cycle. Confidential Page 9 Copyright 2003 Distributed Systems Research Group, Charles University

10 CORBA Comparison Project, Windows Visual C++ Platform Void/Orbix 5.1 Time Pattern (1 Thread, Zoom) The graph is a zoom in of the previous graph. Time Pattern (10 Threads) The graph depicts the pattern of changes of the time it takes to complete the empty cycle. On the X axis is the sequential number of the measurement, on the Y axis is the time it took to complete the cycle. Confidential Page 10 Copyright 2003 Distributed Systems Research Group, Charles University

11 CORBA Comparison Project, Windows Visual C++ Platform Void/Orbix 5.1 Time Pattern (10 Threads, Zoom) The graph is a zoom in of the previous graph. Time Pattern (100 Threads) The graph depicts the pattern of changes of the time it takes to complete the empty cycle. On the X axis is the sequential number of the measurement, on the Y axis is the time it took to complete the cycle. Time Pattern (100 Threads, Zoom) The graph is a zoom in of the previous graph. Dependency On Number Of Threads The graph depicts the dependency of the time it takes to complete the empty cycle on the number of threads running the cycle concurrently. On the X axis is the number of threads, on the Y axis is the time it took to complete the cycle. Confidential Page 11 Copyright 2003 Distributed Systems Research Group, Charles University

12 CORBA Comparison Project, Windows Visual C++ Platform Void/Orbix 5.1 Confidential Page 12 Copyright 2003 Distributed Systems Research Group, Charles University

13 CORBA Comparison Project, Windows Visual C++ Platform Void/Orbix 5.1 Confidential Page 13 Copyright 2003 Distributed Systems Research Group, Charles University

14 CORBA Comparison Project, Windows Visual C++ Platform Void/TAO TAO Time Distribution (1 Thread) The graph depicts the statistical distribution of the time it takes to complete the empty cycle. On the X axis are the time intervals, on the Y axis is the percentage of empty cycles completed within the given time interval. Time Distribution (10 Threads) The graph depicts the statistical distribution of the time it takes to complete the empty cycle. On the X axis are the time intervals, on the Y axis is the percentage of empty cycles completed within the given time interval. Time Distribution (100 Threads) The graph depicts the statistical distribution of the time it takes to complete the empty cycle. On the X axis are the time intervals, on the Y axis is the percentage of empty cycles completed within the given time interval. Time Pattern (1 Thread) The graph depicts the pattern of changes of the time it takes to complete the empty cycle. On the X axis is the sequential number of the measurement, on the Y axis is the time it took to complete the cycle. Confidential Page 14 Copyright 2003 Distributed Systems Research Group, Charles University

15 CORBA Comparison Project, Windows Visual C++ Platform Void/TAO Time Pattern (1 Thread, Zoom) The graph is a zoom in of the previous graph. Time Pattern (10 Threads) The graph depicts the pattern of changes of the time it takes to complete the empty cycle. On the X axis is the sequential number of the measurement, on the Y axis is the time it took to complete the cycle. Confidential Page 15 Copyright 2003 Distributed Systems Research Group, Charles University

16 CORBA Comparison Project, Windows Visual C++ Platform Void/TAO Time Pattern (10 Threads, Zoom) The graph is a zoom in of the previous graph. Time Pattern (100 Threads) The graph depicts the pattern of changes of the time it takes to complete the empty cycle. On the X axis is the sequential number of the measurement, on the Y axis is the time it took to complete the cycle. Time Pattern (100 Threads, Zoom) The graph is a zoom in of the previous graph. Dependency On Number Of Threads The graph depicts the dependency of the time it takes to complete the empty cycle on the number of threads running the cycle concurrently. On the X axis is the number of threads, on the Y axis is the time it took to complete the cycle. Confidential Page 16 Copyright 2003 Distributed Systems Research Group, Charles University

17 CORBA Comparison Project, Windows Visual C++ Platform Void/TAO Confidential Page 17 Copyright 2003 Distributed Systems Research Group, Charles University

18 CORBA Comparison Project, Windows Visual C++ Platform Void/TAO Confidential Page 18 Copyright 2003 Distributed Systems Research Group, Charles University

19 CORBA Comparison Project, Windows Visual C++ Platform Void/VisiBroker 5.1 VisiBroker 5.1 Time Distribution (1 Thread) The graph depicts the statistical distribution of the time it takes to complete the empty cycle. On the X axis are the time intervals, on the Y axis is the percentage of empty cycles completed within the given time interval. Time Distribution (10 Threads) The graph depicts the statistical distribution of the time it takes to complete the empty cycle. On the X axis are the time intervals, on the Y axis is the percentage of empty cycles completed within the given time interval. Time Distribution (100 Threads) The graph depicts the statistical distribution of the time it takes to complete the empty cycle. On the X axis are the time intervals, on the Y axis is the percentage of empty cycles completed within the given time interval. Time Pattern (1 Thread) The graph depicts the pattern of changes of the time it takes to complete the empty cycle. On the X axis is the sequential number of the measurement, on the Y axis is the time it took to complete the cycle. Time Pattern (1 Thread, Zoom) The graph is a zoom in of the previous graph. Confidential Page 19 Copyright 2003 Distributed Systems Research Group, Charles University

20 CORBA Comparison Project, Windows Visual C++ Platform Void/VisiBroker 5.1 Time Pattern (10 Threads) The graph depicts the pattern of changes of the time it takes to complete the empty cycle. On the X axis is the sequential number of the measurement, on the Y axis is the time it took to complete the cycle. Time Pattern (10 Threads, Zoom) The graph is a zoom in of the previous graph. Time Pattern (100 Threads) The graph depicts the pattern of changes of the time it takes to complete the empty cycle. On the X axis is the sequential number of the measurement, on the Y axis is the time it took to complete the cycle. Time Pattern (100 Threads, Zoom) The graph is a zoom in of the previous graph. Dependency On Number Of Threads The graph depicts the dependency of the time it takes to complete the empty cycle on the number of threads running the cycle concurrently. On the X axis is the number of threads, on the Y axis is the time it took to complete the cycle. Confidential Page 20 Copyright 2003 Distributed Systems Research Group, Charles University

21 CORBA Comparison Project, Windows Visual C++ Platform Void/VisiBroker 5.1 Confidential Page 21 Copyright 2003 Distributed Systems Research Group, Charles University

22 CORBA Comparison Project, Windows Visual C++ Platform Void/VisiBroker 5.1 Confidential Page 22 Copyright 2003 Distributed Systems Research Group, Charles University

23 CORBA Comparison Project, Windows Visual C++ Platform Void/Summary Summary Time Distribution (1 Thread) The graph depicts the statistical distribution of the time it takes to complete the empty cycle. On the X axis are the time intervals, on the Y axis is the percentage of empty cycles completed within the given time interval. Time Distribution (10 Threads) The graph depicts the statistical distribution of the time it takes to complete the empty cycle. On the X axis are the time intervals, on the Y axis is the percentage of empty cycles completed within the given time interval. Time Distribution (100 Threads) The graph depicts the statistical distribution of the time it takes to complete the empty cycle. On the X axis are the time intervals, on the Y axis is the percentage of empty cycles completed within the given time interval. Time Pattern (1 Thread) The graph depicts the pattern of changes of the time it takes to complete the empty cycle. On the X axis is the sequential number of the measurement, on the Y axis is the time it took to complete the cycle. Time Pattern (10 Threads) The graph depicts the pattern of changes of the time it takes to complete the empty cycle. On the X axis is the sequential number of the measurement, on the Y axis is the time it took to complete the cycle. Confidential Page 23 Copyright 2003 Distributed Systems Research Group, Charles University

24 CORBA Comparison Project, Windows Visual C++ Platform Void/Summary Time Pattern (100 Threads) The graph depicts the pattern of changes of the time it takes to complete the empty cycle. On the X axis is the sequential number of the measurement, on the Y axis is the time it took to complete the cycle. Dependency On Number Of Threads The graph depicts the dependency of the time it takes to complete the empty cycle on the number of threads running the cycle concurrently. On the X axis is the number of threads, on the Y axis is the time it took to complete the cycle. Confidential Page 24 Copyright 2003 Distributed Systems Research Group, Charles University

25 CORBA Comparison Project, Windows Visual C++ Platform Void/Summary Confidential Page 25 Copyright 2003 Distributed Systems Research Group, Charles University

26 CORBA Comparison Project, Windows Visual C++ Platform Ping Ping Description The suite measures the time it takes to complete a trivial method invocation. The purpose of the suite is to assess the behavior of the broker on as simple an example as possible to minimize the chance of a systematic error. IDL Code interface Ping { void Pong (); } C++ Code ulonglong ActionPing (void *pargs) { pping->pong (); return (0); } void PingServant::Pong () { } Java Code public final void execute (long [] times) { pingserver.pong (); } public final void Pong () { } Results The time distribution graphs should display a cluster with small variance. The observed times should correspond with the observed times of other suites. The time pattern graphs should display a sequence with small variance. Confidential Page 26 Copyright 2003 Distributed Systems Research Group, Charles University

27 CORBA Comparison Project, Windows Visual C++ Platform Ping/Orbix 5.1 Orbix 5.1 Time Distribution (1 Thread) The graph depicts the statistical distribution of the time it takes to complete the method invocation. On the X axis are the time intervals, on the Y axis is the percentage of invocations completed within the given time interval. Time Pattern (1 Thread) The graph depicts the pattern of changes of the time it takes to complete the method invocation. On the X axis is the sequential number of the measurement, on the Y axis is the time it took to complete the invocation. Time Pattern (1 Thread, Zoom) The graph is a zoom in of the previous graph. Confidential Page 27 Copyright 2003 Distributed Systems Research Group, Charles University

28 CORBA Comparison Project, Windows Visual C++ Platform Ping/Orbix 5.1 Evaluation The results exhibit no anomalies. Confidential Page 28 Copyright 2003 Distributed Systems Research Group, Charles University

29 CORBA Comparison Project, Windows Visual C++ Platform Ping/TAO TAO Time Distribution (1 Thread) The graph depicts the statistical distribution of the time it takes to complete the method invocation. On the X axis are the time intervals, on the Y axis is the percentage of invocations completed within the given time interval. Time Pattern (1 Thread) The graph depicts the pattern of changes of the time it takes to complete the method invocation. On the X axis is the sequential number of the measurement, on the Y axis is the time it took to complete the invocation. Time Pattern (1 Thread, Zoom) The graph is a zoom in of the previous graph. Confidential Page 29 Copyright 2003 Distributed Systems Research Group, Charles University

30 CORBA Comparison Project, Windows Visual C++ Platform Ping/TAO Evaluation The results exhibit no anomalies. Confidential Page 30 Copyright 2003 Distributed Systems Research Group, Charles University

31 CORBA Comparison Project, Windows Visual C++ Platform Ping/VisiBroker 5.1 VisiBroker 5.1 Time Distribution (1 Thread) The graph depicts the statistical distribution of the time it takes to complete the method invocation. On the X axis are the time intervals, on the Y axis is the percentage of invocations completed within the given time interval. Time Pattern (1 Thread) The graph depicts the pattern of changes of the time it takes to complete the method invocation. On the X axis is the sequential number of the measurement, on the Y axis is the time it took to complete the invocation. Time Pattern (1 Thread, Zoom) The graph is a zoom in of the previous graph. Confidential Page 31 Copyright 2003 Distributed Systems Research Group, Charles University

32 CORBA Comparison Project, Windows Visual C++ Platform Ping/VisiBroker 5.1 Evaluation The results exhibit no anomalies. Confidential Page 32 Copyright 2003 Distributed Systems Research Group, Charles University

33 CORBA Comparison Project, Windows Visual C++ Platform Ping/Summary Summary Time Distribution (1 Thread) The graph depicts the statistical distribution of the time it takes to complete the method invocation. On the X axis are the time intervals, on the Y axis is the percentage of invocations completed within the given time interval. Time Pattern (1 Thread) The graph depicts the pattern of changes of the time it takes to complete the method invocation. On the X axis is the sequential number of the measurement, on the Y axis is the time it took to complete the invocation. Evaluation The results rate VisiBroker as the fastest broker in the scope measured by the suite, Orbix occupies the second and TAO the third place. Confidential Page 33 Copyright 2003 Distributed Systems Research Group, Charles University

34 CORBA Comparison Project, Windows Visual C++ Platform Static Invocation Invocation Static Invocation Description The suite measures the time it takes to complete a static method invocation. The purpose of the suite is to assess the behavior of the static invocation mechanism. IDL Code interface Ping { ulonglong Pong (); } C++ Code ulonglong ActionPing (void *pargs) { return (pping->pong ()); } CORBA::ULongLong PingServant::Pong () { return (TIMGetTimestamp ()); } Java Code public final void execute (long [] times) { times [0] = pingserver.pong (); } public final long Pong () { return SysInformer.timGetTimestamp (); } Results The time distribution graphs should display clusters with small variance for both the halfway and the roundtrip times. The clusters should be gradually wider when multiple threads are used. The time pattern graphs should display a sequence with small variance for both the halfway and the roundtrip times. The sequence should be gradually less uniform when multiple threads are used. The dependency of both the halfway and the roundtrip times on the number of threads should display constant minimum values and at least linearly increasing median, average and maximum values. The increase over the linear dependency represents the overhead introduced by the concurrent execution. The client thruput should be constant or decreasing, except on multiprocessor systems, where the thruput should increase initially until the number of threads reaches the number of processors. The decrease under the constant level represents the overhead introduced by the concurrent execution. The memory usage should be constant or very slightly increasing. The network usage should be constant or very slightly decreasing. The thread usage should grow linearly on the client and reflect the threading model on the server. The processor usage should follow the thruput. Confidential Page 34 Copyright 2003 Distributed Systems Research Group, Charles University

35 CORBA Comparison Project, Windows Visual C++ Platform Static Invocation/Orbix 5.1 Orbix 5.1 Time Distribution (1 Thread) The graph depicts the statistical distribution of the time it takes to complete the method invocation. On the X axis are the time intervals, on the Y axis is the percentage of invocations completed within the given time interval. Time Distribution (10 Threads) The graph depicts the statistical distribution of the time it takes to complete the method invocation. On the X axis are the time intervals, on the Y axis is the percentage of invocations completed within the given time interval. Time Distribution (100 Threads) The graph depicts the statistical distribution of the time it takes to complete the method invocation. On the X axis are the time intervals, on the Y axis is the percentage of invocations completed within the given time interval. Confidential Page 35 Copyright 2003 Distributed Systems Research Group, Charles University

36 CORBA Comparison Project, Windows Visual C++ Platform Static Invocation/Orbix 5.1 Time Pattern (1 Thread) The graph depicts the pattern of changes of the time it takes to complete the method invocation. On the X axis is the sequential number of the measurement, on the Y axis is the time it took to complete the invocation. Time Pattern (1 Thread, Zoom) The graph is a zoom in of the previous graph. Confidential Page 36 Copyright 2003 Distributed Systems Research Group, Charles University

37 CORBA Comparison Project, Windows Visual C++ Platform Static Invocation/Orbix 5.1 Time Pattern (10 Threads) The graph depicts the pattern of changes of the time it takes to complete the method invocation. On the X axis is the sequential number of the measurement, on the Y axis is the time it took to complete the invocation. Time Pattern (10 Threads, Zoom) The graph is a zoom in of the previous graph. Confidential Page 37 Copyright 2003 Distributed Systems Research Group, Charles University

38 CORBA Comparison Project, Windows Visual C++ Platform Static Invocation/Orbix 5.1 Time Pattern (100 Threads) The graph depicts the pattern of changes of the time it takes to complete the method invocation. On the X axis is the sequential number of the measurement, on the Y axis is the time it took to complete the invocation. Time Pattern (100 Threads, Zoom) The graph is a zoom in of the previous graph. Confidential Page 38 Copyright 2003 Distributed Systems Research Group, Charles University

39 CORBA Comparison Project, Windows Visual C++ Platform Static Invocation/Orbix 5.1 Dependency On Number Of Threads The graph depicts the dependency of the time it takes to complete the invocation on the number of threads issuing the invocations concurrently. On the X axis is the number of threads, on the Y axis is the time it took to complete the invocation. Confidential Page 39 Copyright 2003 Distributed Systems Research Group, Charles University

40 CORBA Comparison Project, Windows Visual C++ Platform Static Invocation/Orbix 5.1 Evaluation The roundtrip time for 1 thread corresponds with that of the Ping suite. The results indicate a slight decrease in thruput for a large number of threads. Confidential Page 40 Copyright 2003 Distributed Systems Research Group, Charles University

41 CORBA Comparison Project, Windows Visual C++ Platform Static Invocation/TAO TAO Time Distribution (1 Thread) The graph depicts the statistical distribution of the time it takes to complete the method invocation. On the X axis are the time intervals, on the Y axis is the percentage of invocations completed within the given time interval. Time Distribution (10 Threads) The graph depicts the statistical distribution of the time it takes to complete the method invocation. On the X axis are the time intervals, on the Y axis is the percentage of invocations completed within the given time interval. Time Distribution (100 Threads) The graph depicts the statistical distribution of the time it takes to complete the method invocation. On the X axis are the time intervals, on the Y axis is the percentage of invocations completed within the given time interval. Confidential Page 41 Copyright 2003 Distributed Systems Research Group, Charles University

42 CORBA Comparison Project, Windows Visual C++ Platform Static Invocation/TAO Time Pattern (1 Thread) The graph depicts the pattern of changes of the time it takes to complete the method invocation. On the X axis is the sequential number of the measurement, on the Y axis is the time it took to complete the invocation. Time Pattern (1 Thread, Zoom) The graph is a zoom in of the previous graph. Confidential Page 42 Copyright 2003 Distributed Systems Research Group, Charles University

43 CORBA Comparison Project, Windows Visual C++ Platform Static Invocation/TAO Time Pattern (10 Threads) The graph depicts the pattern of changes of the time it takes to complete the method invocation. On the X axis is the sequential number of the measurement, on the Y axis is the time it took to complete the invocation. Time Pattern (10 Threads, Zoom) The graph is a zoom in of the previous graph. Confidential Page 43 Copyright 2003 Distributed Systems Research Group, Charles University

44 CORBA Comparison Project, Windows Visual C++ Platform Static Invocation/TAO Time Pattern (100 Threads) The graph depicts the pattern of changes of the time it takes to complete the method invocation. On the X axis is the sequential number of the measurement, on the Y axis is the time it took to complete the invocation. Time Pattern (100 Threads, Zoom) The graph is a zoom in of the previous graph. Confidential Page 44 Copyright 2003 Distributed Systems Research Group, Charles University

45 CORBA Comparison Project, Windows Visual C++ Platform Static Invocation/TAO Dependency On Number Of Threads The graph depicts the dependency of the time it takes to complete the invocation on the number of threads issuing the invocations concurrently. On the X axis is the number of threads, on the Y axis is the time it took to complete the invocation. Confidential Page 45 Copyright 2003 Distributed Systems Research Group, Charles University

46 CORBA Comparison Project, Windows Visual C++ Platform Static Invocation/TAO Evaluation The roundtrip time for 1 thread corresponds with that of the Ping suite. The results indicate a significant decrease in thruput for a large number of threads. Confidential Page 46 Copyright 2003 Distributed Systems Research Group, Charles University

47 CORBA Comparison Project, Windows Visual C++ Platform Static Invocation/VisiBroker 5.1 VisiBroker 5.1 Time Distribution (1 Thread) The graph depicts the statistical distribution of the time it takes to complete the method invocation. On the X axis are the time intervals, on the Y axis is the percentage of invocations completed within the given time interval. Time Distribution (10 Threads) The graph depicts the statistical distribution of the time it takes to complete the method invocation. On the X axis are the time intervals, on the Y axis is the percentage of invocations completed within the given time interval. Time Distribution (100 Threads) The graph depicts the statistical distribution of the time it takes to complete the method invocation. On the X axis are the time intervals, on the Y axis is the percentage of invocations completed within the given time interval. Confidential Page 47 Copyright 2003 Distributed Systems Research Group, Charles University

48 CORBA Comparison Project, Windows Visual C++ Platform Static Invocation/VisiBroker 5.1 Time Pattern (1 Thread) The graph depicts the pattern of changes of the time it takes to complete the method invocation. On the X axis is the sequential number of the measurement, on the Y axis is the time it took to complete the invocation. Time Pattern (1 Thread, Zoom) The graph is a zoom in of the previous graph. Confidential Page 48 Copyright 2003 Distributed Systems Research Group, Charles University

49 CORBA Comparison Project, Windows Visual C++ Platform Static Invocation/VisiBroker 5.1 Time Pattern (10 Threads) The graph depicts the pattern of changes of the time it takes to complete the method invocation. On the X axis is the sequential number of the measurement, on the Y axis is the time it took to complete the invocation. Time Pattern (10 Threads, Zoom) The graph is a zoom in of the previous graph. Confidential Page 49 Copyright 2003 Distributed Systems Research Group, Charles University

50 CORBA Comparison Project, Windows Visual C++ Platform Static Invocation/VisiBroker 5.1 Time Pattern (100 Threads) The graph depicts the pattern of changes of the time it takes to complete the method invocation. On the X axis is the sequential number of the measurement, on the Y axis is the time it took to complete the invocation. Time Pattern (100 Threads, Zoom) The graph is a zoom in of the previous graph. Confidential Page 50 Copyright 2003 Distributed Systems Research Group, Charles University

51 CORBA Comparison Project, Windows Visual C++ Platform Static Invocation/VisiBroker 5.1 Dependency On Number Of Threads The graph depicts the dependency of the time it takes to complete the invocation on the number of threads issuing the invocations concurrently. On the X axis is the number of threads, on the Y axis is the time it took to complete the invocation. Confidential Page 51 Copyright 2003 Distributed Systems Research Group, Charles University

52 CORBA Comparison Project, Windows Visual C++ Platform Static Invocation/VisiBroker 5.1 Evaluation The roundtrip time for 1 thread corresponds with that of the Ping suite. The results indicate a significant increase in client memory usage for a large number of threads. Confidential Page 52 Copyright 2003 Distributed Systems Research Group, Charles University

53 CORBA Comparison Project, Windows Visual C++ Platform Static Invocation/Summary Summary Time Distribution (1 Thread) The graph depicts the statistical distribution of the time it takes to complete the method invocation. On the X axis are the time intervals, on the Y axis is the percentage of invocations completed within the given time interval. Time Distribution (10 Threads) The graph depicts the statistical distribution of the time it takes to complete the method invocation. On the X axis are the time intervals, on the Y axis is the percentage of invocations completed within the given time interval. Time Distribution (100 Threads) The graph depicts the statistical distribution of the time it takes to complete the method invocation. On the X axis are the time intervals, on the Y axis is the percentage of invocations completed within the given time interval. Confidential Page 53 Copyright 2003 Distributed Systems Research Group, Charles University

54 CORBA Comparison Project, Windows Visual C++ Platform Static Invocation/Summary Time Pattern (1 Thread) The graph depicts the pattern of changes of the time it takes to complete the method invocation. On the X axis is the sequential number of the measurement, on the Y axis is the time it took to complete the invocation. Time Pattern (10 Threads) The graph depicts the pattern of changes of the time it takes to complete the method invocation. On the X axis is the sequential number of the measurement, on the Y axis is the time it took to complete the invocation. Confidential Page 54 Copyright 2003 Distributed Systems Research Group, Charles University

55 CORBA Comparison Project, Windows Visual C++ Platform Static Invocation/Summary Time Pattern (100 Threads) The graph depicts the pattern of changes of the time it takes to complete the method invocation. On the X axis is the sequential number of the measurement, on the Y axis is the time it took to complete the invocation. Dependency On Number Of Threads The graph depicts the dependency of the time it takes to complete the invocation on the number of threads issuing the invocations concurrently. On the X axis is the number of threads, on the Y axis is the time it took to complete the invocation. Confidential Page 55 Copyright 2003 Distributed Systems Research Group, Charles University

56 CORBA Comparison Project, Windows Visual C++ Platform Static Invocation/Summary Confidential Page 56 Copyright 2003 Distributed Systems Research Group, Charles University

57 CORBA Comparison Project, Windows Visual C++ Platform Static Invocation/Summary Evaluation The results rate VisiBroker as the fastest broker in the scope measured by the suite, Orbix occupies the second and TAO the third place. Orbix exhibits a slight decrease in thruput for a large number of threads. TAO exhibits a significant decrease in thruput for a large number of threads. VisiBroker exhibits a significant increase in client memory usage for a large number of threads. Confidential Page 57 Copyright 2003 Distributed Systems Research Group, Charles University

58 CORBA Comparison Project, Windows Visual C++ Platform Dynamic Invocation Dynamic Invocation Description The suite measures the time it takes to complete a dynamic method invocation. The purpose of the suite is to assess the behavior of the dynamic invocation mechanism. C++ Code ulonglong ActionPing (void *pargs) { CORBA::Request_var vrequest; CORBA::ULongLong iresult; vrequest = pping->_request ("Pong"); vrequest->set_return_type (CORBA::_tc_ulonglong); vrequest->invoke (ORBArgOnly); *(vrequest->result ()->value ()) >>= iresult; } return (iresult); void PingServant::invoke (CORBA::ServerRequest_ptr prequest) { if (!strcmp (prequest->operation (), "Pong")) { // Note that calling arguments is mandated by the // standard even when the function has none. } CORBA::NVList_ptr parguments; CORBA::Any oresult; porb->create_list (0, parguments); prequest->arguments (parguments); oresult <<= (CORBA::ULongLong) TIMGetTimestamp (); prequest->set_result (oresult); } else { assert (FALSE); } Java Code public final void execute (long [] times) { Request request = pingserver._request ("Pong"); request.set_return_type ( BenchBroker.theORB.get_primitive_tc (TCKind.tk_ulonglong)); request.invoke (); } times [0] = request.result ().value ().extract_ulonglong (); public final void invoke (ServerRequest request) { if (! request.operation ().equals ("Pong")) { throw new org.omg.corba.bad_operation (); } /* * Note that calling arguments is mandated by the * standard even when the function has none. */ org.omg.corba.nvlist args = BenchBroker.theORB.create_list (0); request.arguments (args); } org.omg.corba.any result = BenchBroker.theORB.create_any (); result.type ( BenchBroker.theORB.get_primitive_tc (TCKind.tk_ulonglong)); result.insert_ulonglong (SysInformer.timGetTimestamp ()); request.set_result (result); Confidential Page 58 Copyright 2003 Distributed Systems Research Group, Charles University

59 CORBA Comparison Project, Windows Visual C++ Platform Dynamic Invocation Results The time distribution graphs should display clusters with small variance for both the halfway and the roundtrip times. The clusters should be gradually wider when multiple threads are used. The time pattern graphs should display a sequence with small variance for both the halfway and the roundtrip times. The sequence should be gradually less uniform when multiple threads are used. The dependency of both the halfway and the roundtrip times on the number of threads should display constant minimum values and at least linearly increasing median, average and maximum values. The increase over the linear dependency represents the overhead introduced by the concurrent execution. The client thruput should be constant or decreasing, except on multiprocessor systems, where the thruput should increase initially until the number of threads reaches the number of processors. The decrease under the constant level represents the overhead introduced by the concurrent execution. The memory usage should be constant or very slightly increasing. The network usage should be constant or very slightly decreasing. The thread usage should grow linearly on the client and reflect the threading model on the server. The processor usage should follow the thruput. Confidential Page 59 Copyright 2003 Distributed Systems Research Group, Charles University

60 CORBA Comparison Project, Windows Visual C++ Platform Dynamic Invocation/Orbix 5.1 Orbix 5.1 Time Distribution (1 Thread) The graph depicts the statistical distribution of the time it takes to complete the method invocation. On the X axis are the time intervals, on the Y axis is the percentage of invocations completed within the given time interval. Time Distribution (10 Threads) The graph depicts the statistical distribution of the time it takes to complete the method invocation. On the X axis are the time intervals, on the Y axis is the percentage of invocations completed within the given time interval. Time Distribution (100 Threads) The graph depicts the statistical distribution of the time it takes to complete the method invocation. On the X axis are the time intervals, on the Y axis is the percentage of invocations completed within the given time interval. Confidential Page 60 Copyright 2003 Distributed Systems Research Group, Charles University

61 CORBA Comparison Project, Windows Visual C++ Platform Dynamic Invocation/Orbix 5.1 Time Pattern (1 Thread) The graph depicts the pattern of changes of the time it takes to complete the method invocation. On the X axis is the sequential number of the measurement, on the Y axis is the time it took to complete the invocation. Time Pattern (1 Thread, Zoom) The graph is a zoom in of the previous graph. Confidential Page 61 Copyright 2003 Distributed Systems Research Group, Charles University

62 CORBA Comparison Project, Windows Visual C++ Platform Dynamic Invocation/Orbix 5.1 Time Pattern (10 Threads) The graph depicts the pattern of changes of the time it takes to complete the method invocation. On the X axis is the sequential number of the measurement, on the Y axis is the time it took to complete the invocation. Time Pattern (10 Threads, Zoom) The graph is a zoom in of the previous graph. Confidential Page 62 Copyright 2003 Distributed Systems Research Group, Charles University

63 CORBA Comparison Project, Windows Visual C++ Platform Dynamic Invocation/Orbix 5.1 Time Pattern (100 Threads) The graph depicts the pattern of changes of the time it takes to complete the method invocation. On the X axis is the sequential number of the measurement, on the Y axis is the time it took to complete the invocation. Time Pattern (100 Threads, Zoom) The graph is a zoom in of the previous graph. Confidential Page 63 Copyright 2003 Distributed Systems Research Group, Charles University

64 CORBA Comparison Project, Windows Visual C++ Platform Dynamic Invocation/Orbix 5.1 Dependency On Number Of Threads The graph depicts the dependency of the time it takes to complete the invocation on the number of threads issuing the invocations concurrently. On the X axis is the number of threads, on the Y axis is the time it took to complete the invocation. Confidential Page 64 Copyright 2003 Distributed Systems Research Group, Charles University

65 CORBA Comparison Project, Windows Visual C++ Platform Dynamic Invocation/Orbix 5.1 Evaluation The roundtrip time for 1 thread is slightly higher than that of the Ping suite. The results indicate a significant decrease in thruput for a large number of threads. Confidential Page 65 Copyright 2003 Distributed Systems Research Group, Charles University

66 CORBA Comparison Project, Windows Visual C++ Platform Dynamic Invocation/TAO TAO Time Distribution (1 Thread) The graph depicts the statistical distribution of the time it takes to complete the method invocation. On the X axis are the time intervals, on the Y axis is the percentage of invocations completed within the given time interval. Time Distribution (10 Threads) The graph depicts the statistical distribution of the time it takes to complete the method invocation. On the X axis are the time intervals, on the Y axis is the percentage of invocations completed within the given time interval. Time Distribution (100 Threads) The graph depicts the statistical distribution of the time it takes to complete the method invocation. On the X axis are the time intervals, on the Y axis is the percentage of invocations completed within the given time interval. Confidential Page 66 Copyright 2003 Distributed Systems Research Group, Charles University

67 CORBA Comparison Project, Windows Visual C++ Platform Dynamic Invocation/TAO Time Pattern (1 Thread) The graph depicts the pattern of changes of the time it takes to complete the method invocation. On the X axis is the sequential number of the measurement, on the Y axis is the time it took to complete the invocation. Time Pattern (1 Thread, Zoom) The graph is a zoom in of the previous graph. Confidential Page 67 Copyright 2003 Distributed Systems Research Group, Charles University

68 CORBA Comparison Project, Windows Visual C++ Platform Dynamic Invocation/TAO Time Pattern (10 Threads) The graph depicts the pattern of changes of the time it takes to complete the method invocation. On the X axis is the sequential number of the measurement, on the Y axis is the time it took to complete the invocation. Time Pattern (10 Threads, Zoom) The graph is a zoom in of the previous graph. Confidential Page 68 Copyright 2003 Distributed Systems Research Group, Charles University

69 CORBA Comparison Project, Windows Visual C++ Platform Dynamic Invocation/TAO Time Pattern (100 Threads) The graph depicts the pattern of changes of the time it takes to complete the method invocation. On the X axis is the sequential number of the measurement, on the Y axis is the time it took to complete the invocation. Time Pattern (100 Threads, Zoom) The graph is a zoom in of the previous graph. Confidential Page 69 Copyright 2003 Distributed Systems Research Group, Charles University

70 CORBA Comparison Project, Windows Visual C++ Platform Dynamic Invocation/TAO Dependency On Number Of Threads The graph depicts the dependency of the time it takes to complete the invocation on the number of threads issuing the invocations concurrently. On the X axis is the number of threads, on the Y axis is the time it took to complete the invocation. Confidential Page 70 Copyright 2003 Distributed Systems Research Group, Charles University

71 CORBA Comparison Project, Windows Visual C++ Platform Dynamic Invocation/TAO Evaluation The roundtrip time for 1 thread is slightly higher than that of the Ping suite. The results indicate a slight decrease in thruput for a large number of threads. Confidential Page 71 Copyright 2003 Distributed Systems Research Group, Charles University

72 CORBA Comparison Project, Windows Visual C++ Platform Dynamic Invocation/VisiBroker 5.1 VisiBroker 5.1 Time Distribution (1 Thread) The graph depicts the statistical distribution of the time it takes to complete the method invocation. On the X axis are the time intervals, on the Y axis is the percentage of invocations completed within the given time interval. Time Distribution (10 Threads) The graph depicts the statistical distribution of the time it takes to complete the method invocation. On the X axis are the time intervals, on the Y axis is the percentage of invocations completed within the given time interval. Time Distribution (100 Threads) The graph depicts the statistical distribution of the time it takes to complete the method invocation. On the X axis are the time intervals, on the Y axis is the percentage of invocations completed within the given time interval. Confidential Page 72 Copyright 2003 Distributed Systems Research Group, Charles University

73 CORBA Comparison Project, Windows Visual C++ Platform Dynamic Invocation/VisiBroker 5.1 Time Pattern (1 Thread) The graph depicts the pattern of changes of the time it takes to complete the method invocation. On the X axis is the sequential number of the measurement, on the Y axis is the time it took to complete the invocation. Time Pattern (1 Thread, Zoom) The graph is a zoom in of the previous graph. Confidential Page 73 Copyright 2003 Distributed Systems Research Group, Charles University

74 CORBA Comparison Project, Windows Visual C++ Platform Dynamic Invocation/VisiBroker 5.1 Time Pattern (10 Threads) The graph depicts the pattern of changes of the time it takes to complete the method invocation. On the X axis is the sequential number of the measurement, on the Y axis is the time it took to complete the invocation. Time Pattern (10 Threads, Zoom) The graph is a zoom in of the previous graph. Confidential Page 74 Copyright 2003 Distributed Systems Research Group, Charles University

75 CORBA Comparison Project, Windows Visual C++ Platform Dynamic Invocation/VisiBroker 5.1 Time Pattern (100 Threads) The graph depicts the pattern of changes of the time it takes to complete the method invocation. On the X axis is the sequential number of the measurement, on the Y axis is the time it took to complete the invocation. Time Pattern (100 Threads, Zoom) The graph is a zoom in of the previous graph. Confidential Page 75 Copyright 2003 Distributed Systems Research Group, Charles University

76 CORBA Comparison Project, Windows Visual C++ Platform Dynamic Invocation/VisiBroker 5.1 Dependency On Number Of Threads The graph depicts the dependency of the time it takes to complete the invocation on the number of threads issuing the invocations concurrently. On the X axis is the number of threads, on the Y axis is the time it took to complete the invocation. Confidential Page 76 Copyright 2003 Distributed Systems Research Group, Charles University

77 CORBA Comparison Project, Windows Visual C++ Platform Dynamic Invocation/VisiBroker 5.1 Evaluation The roundtrip time for 1 thread is slightly higher than that of the Ping suite. The results indicate a slight decrease in thruput for a large number of threads and a significant increase in client memory usage for a large number of threads. Confidential Page 77 Copyright 2003 Distributed Systems Research Group, Charles University

78 CORBA Comparison Project, Windows Visual C++ Platform Dynamic Invocation/Summary Summary Time Distribution (1 Thread) The graph depicts the statistical distribution of the time it takes to complete the method invocation. On the X axis are the time intervals, on the Y axis is the percentage of invocations completed within the given time interval. Time Distribution (10 Threads) The graph depicts the statistical distribution of the time it takes to complete the method invocation. On the X axis are the time intervals, on the Y axis is the percentage of invocations completed within the given time interval. Time Distribution (100 Threads) The graph depicts the statistical distribution of the time it takes to complete the method invocation. On the X axis are the time intervals, on the Y axis is the percentage of invocations completed within the given time interval. Confidential Page 78 Copyright 2003 Distributed Systems Research Group, Charles University

79 CORBA Comparison Project, Windows Visual C++ Platform Dynamic Invocation/Summary Time Pattern (1 Thread) The graph depicts the pattern of changes of the time it takes to complete the method invocation. On the X axis is the sequential number of the measurement, on the Y axis is the time it took to complete the invocation. Time Pattern (10 Threads) The graph depicts the pattern of changes of the time it takes to complete the method invocation. On the X axis is the sequential number of the measurement, on the Y axis is the time it took to complete the invocation. Confidential Page 79 Copyright 2003 Distributed Systems Research Group, Charles University

80 CORBA Comparison Project, Windows Visual C++ Platform Dynamic Invocation/Summary Time Pattern (100 Threads) The graph depicts the pattern of changes of the time it takes to complete the method invocation. On the X axis is the sequential number of the measurement, on the Y axis is the time it took to complete the invocation. Dependency On Number Of Threads The graph depicts the dependency of the time it takes to complete the invocation on the number of threads issuing the invocations concurrently. On the X axis is the number of threads, on the Y axis is the time it took to complete the invocation. Confidential Page 80 Copyright 2003 Distributed Systems Research Group, Charles University

81 CORBA Comparison Project, Windows Visual C++ Platform Dynamic Invocation/Summary Confidential Page 81 Copyright 2003 Distributed Systems Research Group, Charles University

82 CORBA Comparison Project, Windows Visual C++ Platform Dynamic Invocation/Summary Evaluation The results rate VisiBroker as the fastest broker in the scope measured by the suite, Orbix occupies the second and TAO the third place. Orbix exhibits a significant decrease in thruput for a large number of threads. TAO exhibits a slight decrease in thruput for a large number of threads. VisiBroker exhibits a slight decrease in thruput and a significant increase in client memory usage for a large number of threads. Confidential Page 82 Copyright 2003 Distributed Systems Research Group, Charles University

83 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Basic Types Marshaling Marshaling Basic Types Description The suite measures the time it takes to complete a method invocation depending on the type and direction of the argument. The purpose of the suite is to assess the behavior of the marshaling mechanism. Direction IN IDL Code typedef <type> tpingarg; interface Ping { void Pong (in tpingarg xarg); } C++ Code tpingarg xpingarg; ulonglong ActionPing (void *pargs) { pping->pong (xpingarg); return (0); } void PingServant::Pong (tpingarg xarg) { } Java Code private <type> pingarg; public final void execute (long [] times) { pingserver.pong (pingarg); } public final void Pong (<type> xarg) { } Direction OUT IDL Code typedef <type> tpingarg; interface Ping { void Pong (out tpingarg xarg); } C++ Code tpingarg xpingarg; ulonglong ActionPing (void *pargs) { pping->pong (xpingarg); return (0); } void PingServant::Pong (tpingarg_out xarg) { } Java Code private <type> pingarg; public final void execute (long [] times) { pingserver.pong (pingarg); } public final void Pong (<type> xarg) { } Direction INOUT IDL Code typedef <type> tpingarg; interface Ping { void Pong (inout tpingarg xarg); } C++ Code Confidential Page 83 Copyright 2003 Distributed Systems Research Group, Charles University

84 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Basic Types tpingarg xpingarg; ulonglong ActionPing (void *pargs) { pping->pong (xpingarg); return (0); } void PingServant::Pong (tpingarg &xarg) { } Java Code private <type> pingarg; public final void execute (long [] times) { pingserver.pong (pingarg); } public final void Pong (<type> xarg) { } Direction RETURN IDL Code typedef <type> tpingarg; interface Ping { tpingarg Pong (); } C++ Code ulonglong ActionPing (void *pargs) { pping->pong (); return (0); } tpingarg xpingarg; tpingarg PingServant::Pong () { return (xpingarg); } Java Code public final void execute (long [] times) { pingserver.pong (); } private <type> pingarg; public final <type> Pong () { return (pingarg); } Results The roundtrip time should be constant for all the types and directions of the argument, except for the char and wchar types, where the roundtrip time may be affected by the character set conversion, and the long long, unsigned long long and long double types, where the roundtrip time may be affected by the handling of non native types. The quartile range of the values should be small. The memory usage, network usage and processor usage should be constant, except for the char and wchar types, where the usage may be affected by the character set conversion, and the long long, unsigned long long and long double types, where the usage may be affected by the handling of non native types. Confidential Page 84 Copyright 2003 Distributed Systems Research Group, Charles University

85 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Basic Types/Orbix 5.1 Orbix 5.1 Dependency On Type (Direction IN, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the type and direction of the argument. On the X axis is the type of the argument, on the Y axis is the time it took to complete the invocation. Confidential Page 85 Copyright 2003 Distributed Systems Research Group, Charles University

86 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Basic Types/Orbix 5.1 Dependency On Type (Direction OUT, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the type and direction of the argument. On the X axis is the type of the argument, on the Y axis is the time it took to complete the invocation. Confidential Page 86 Copyright 2003 Distributed Systems Research Group, Charles University

87 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Basic Types/Orbix 5.1 Dependency On Type (Direction INOUT, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the type and direction of the argument. On the X axis is the type of the argument, on the Y axis is the time it took to complete the invocation. Confidential Page 87 Copyright 2003 Distributed Systems Research Group, Charles University

88 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Basic Types/Orbix 5.1 Dependency On Type (Direction RETURN, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the type and direction of the argument. On the X axis is the type of the argument, on the Y axis is the time it took to complete the invocation. Confidential Page 88 Copyright 2003 Distributed Systems Research Group, Charles University

89 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Basic Types/Orbix 5.1 Notes The broker does not support the long double type. Evaluation The roundtrip times correspond with that of the Ping suite. The results exhibit no anomalies. Confidential Page 89 Copyright 2003 Distributed Systems Research Group, Charles University

90 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Basic Types/TAO TAO Dependency On Type (Direction IN, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the type and direction of the argument. On the X axis is the type of the argument, on the Y axis is the time it took to complete the invocation. Confidential Page 90 Copyright 2003 Distributed Systems Research Group, Charles University

91 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Basic Types/TAO Dependency On Type (Direction OUT, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the type and direction of the argument. On the X axis is the type of the argument, on the Y axis is the time it took to complete the invocation. Confidential Page 91 Copyright 2003 Distributed Systems Research Group, Charles University

92 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Basic Types/TAO Confidential Page 92 Copyright 2003 Distributed Systems Research Group, Charles University

93 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Basic Types/TAO Dependency On Type (Direction INOUT, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the type and direction of the argument. On the X axis is the type of the argument, on the Y axis is the time it took to complete the invocation. Confidential Page 93 Copyright 2003 Distributed Systems Research Group, Charles University

94 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Basic Types/TAO Dependency On Type (Direction RETURN, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the type and direction of the argument. On the X axis is the type of the argument, on the Y axis is the time it took to complete the invocation. Confidential Page 94 Copyright 2003 Distributed Systems Research Group, Charles University

95 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Basic Types/TAO Evaluation The roundtrip times correspond with that of the Ping suite. The results exhibit no anomalies. Confidential Page 95 Copyright 2003 Distributed Systems Research Group, Charles University

96 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Basic Types/VisiBroker 5.1 VisiBroker 5.1 Dependency On Type (Direction IN, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the type and direction of the argument. On the X axis is the type of the argument, on the Y axis is the time it took to complete the invocation. Confidential Page 96 Copyright 2003 Distributed Systems Research Group, Charles University

97 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Basic Types/VisiBroker 5.1 Dependency On Type (Direction OUT, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the type and direction of the argument. On the X axis is the type of the argument, on the Y axis is the time it took to complete the invocation. Confidential Page 97 Copyright 2003 Distributed Systems Research Group, Charles University

98 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Basic Types/VisiBroker 5.1 Dependency On Type (Direction INOUT, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the type and direction of the argument. On the X axis is the type of the argument, on the Y axis is the time it took to complete the invocation. Confidential Page 98 Copyright 2003 Distributed Systems Research Group, Charles University

99 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Basic Types/VisiBroker 5.1 Dependency On Type (Direction RETURN, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the type and direction of the argument. On the X axis is the type of the argument, on the Y axis is the time it took to complete the invocation. Confidential Page 99 Copyright 2003 Distributed Systems Research Group, Charles University

100 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Basic Types/VisiBroker 5.1 Notes The broker does not support the long double type. Evaluation The roundtrip times correspond with that of the Ping suite. The results exhibit no anomalies. Confidential Page 100 Copyright 2003 Distributed Systems Research Group, Charles University

101 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Basic Types/Summary Summary Dependency On Type (Direction IN, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the type and direction of the argument. On the X axis is the type of the argument, on the Y axis is the time it took to complete the invocation. Confidential Page 101 Copyright 2003 Distributed Systems Research Group, Charles University

102 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Basic Types/Summary Confidential Page 102 Copyright 2003 Distributed Systems Research Group, Charles University

103 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Basic Types/Summary Dependency On Type (Direction OUT, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the type and direction of the argument. On the X axis is the type of the argument, on the Y axis is the time it took to complete the invocation. Confidential Page 103 Copyright 2003 Distributed Systems Research Group, Charles University

104 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Basic Types/Summary Confidential Page 104 Copyright 2003 Distributed Systems Research Group, Charles University

105 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Basic Types/Summary Dependency On Type (Direction INOUT, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the type and direction of the argument. On the X axis is the type of the argument, on the Y axis is the time it took to complete the invocation. Confidential Page 105 Copyright 2003 Distributed Systems Research Group, Charles University

106 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Basic Types/Summary Confidential Page 106 Copyright 2003 Distributed Systems Research Group, Charles University

107 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Basic Types/Summary Dependency On Type (Direction RETURN, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the type and direction of the argument. On the X axis is the type of the argument, on the Y axis is the time it took to complete the invocation. Confidential Page 107 Copyright 2003 Distributed Systems Research Group, Charles University

108 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Basic Types/Summary Confidential Page 108 Copyright 2003 Distributed Systems Research Group, Charles University

109 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Basic Types/Summary Notes Orbix and VisiBroker do not support the long double type. Evaluation The results rate VisiBroker as the fastest broker in the scope measured by the suite, Orbix occupies the second and TAO the third place. Confidential Page 109 Copyright 2003 Distributed Systems Research Group, Charles University

110 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Arrays Of Basic Types Marshaling Arrays Of Basic Types Description The suite measures the time it takes to complete a method invocation depending on the type and direction of the argument. The purpose of the suite is to assess the behavior of the marshaling mechanism. Direction IN IDL Code typedef <type> tpingarg [<size>]; interface Ping { void Pong (in tpingarg xarg); } C++ Code tpingarg xpingarg; ulonglong ActionPing (void *pargs) { pping->pong (xpingarg); return (0); } void PingServant::Pong (const tpingarg xarg) { } Java Code private tpingargholder pingarg; public final void execute (long [] times) { pingserver.pong (pingarg.value); } public final void Pong (<type> [] xarg) { } Direction OUT IDL Code typedef <type> tpingarg [<size>]; interface Ping { void Pong (out tpingarg xarg); } C++ Code tpingarg xpingarg; ulonglong ActionPing (void *pargs) { pping->pong (xpingarg); return (0); } void PingServant::Pong (tpingarg_out xarg) { } Java Code private tpingargholder pingarg; public final void execute (long [] times) { pingserver.pong (pingarg); pingarg.value = null; } private <type> [] pingarg = new <type> [<size>]; public final void Pong (tpingargholder xarg) { xarg.value = pingarg; } Direction INOUT IDL Code typedef <type> tpingarg [<size>]; interface Ping { void Pong (inout tpingarg xarg); } C++ Code Confidential Page 110 Copyright 2003 Distributed Systems Research Group, Charles University

111 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Arrays Of Basic Types tpingarg xpingarg; ulonglong ActionPing (void *pargs) { pping->pong (xpingarg); return (0); } void PingServant::Pong (tpingarg &xarg) { } Java Code private tpingargholder pingarg; public final void execute (long [] times) { pingserver.pong (pingarg); } public final void Pong (tpingargholder xarg) { } Direction RETURN IDL Code typedef <type> tpingarg [<size>]; interface Ping { tpingarg Pong (); } C++ Code ulonglong ActionPing (void *pargs) { tpingarg_free (pping->pong ()); return (0); } tpingarg_slice *PingServant::Pong () { return (tpingarg_alloc ()); } Java Code public final void execute (long [] times) { pingserver.pong (); } private <type> [] pingarg = new <type> [<size>]; public final <type> [] Pong () { return pingarg; } Results The roundtrip time should depend predominantly on the total size of the argument for all the types and directions of the argument, except for the char and wchar types, where the roundtrip time may be affected by the character set conversion, and the long long, unsigned long long and long double types, where the roundtrip time may be affected by the handling of non native types. The quartile range of the values should be small. The memory usage, network usage and processor usage should depend predominantly on the total size of the argument, except for the char and wchar types, where the usage may be affected by the character set conversion, and the long long, unsigned long long and long double types, where the usage may be affected by the handling of non native types. Confidential Page 111 Copyright 2003 Distributed Systems Research Group, Charles University

112 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Arrays Of Basic Types/Orbix 5.1 Orbix 5.1 Dependency On Type (Direction IN, 1024 Octets, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the type and direction of the argument. On the X axis is the type of the argument, on the Y axis is the time it took to complete the invocation. Confidential Page 112 Copyright 2003 Distributed Systems Research Group, Charles University

113 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Arrays Of Basic Types/Orbix 5.1 Dependency On Type (Direction OUT, 1024 Octets, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the type and direction of the argument. On the X axis is the type of the argument, on the Y axis is the time it took to complete the invocation. Confidential Page 113 Copyright 2003 Distributed Systems Research Group, Charles University

114 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Arrays Of Basic Types/Orbix 5.1 Dependency On Type (Direction INOUT, 1024 Octets, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the type and direction of the argument. On the X axis is the type of the argument, on the Y axis is the time it took to complete the invocation. Confidential Page 114 Copyright 2003 Distributed Systems Research Group, Charles University

115 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Arrays Of Basic Types/Orbix 5.1 Dependency On Type (Direction RETURN, 1024 Octets, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the type and direction of the argument. On the X axis is the type of the argument, on the Y axis is the time it took to complete the invocation. Confidential Page 115 Copyright 2003 Distributed Systems Research Group, Charles University

116 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Arrays Of Basic Types/Orbix 5.1 Dependency On Type (Direction IN, 1024 Items, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the type and direction of the argument. On the X axis is the type of the argument, on the Y axis is the time it took to complete the invocation. Confidential Page 116 Copyright 2003 Distributed Systems Research Group, Charles University

117 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Arrays Of Basic Types/Orbix 5.1 Dependency On Type (Direction OUT, 1024 Items, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the type and direction of the argument. On the X axis is the type of the argument, on the Y axis is the time it took to complete the invocation. Confidential Page 117 Copyright 2003 Distributed Systems Research Group, Charles University

118 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Arrays Of Basic Types/Orbix 5.1 Dependency On Type (Direction INOUT, 1024 Items, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the type and direction of the argument. On the X axis is the type of the argument, on the Y axis is the time it took to complete the invocation. Confidential Page 118 Copyright 2003 Distributed Systems Research Group, Charles University

119 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Arrays Of Basic Types/Orbix 5.1 Dependency On Type (Direction RETURN, 1024 Items, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the type and direction of the argument. On the X axis is the type of the argument, on the Y axis is the time it took to complete the invocation. Confidential Page 119 Copyright 2003 Distributed Systems Research Group, Charles University

120 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Arrays Of Basic Types/Orbix 5.1 Notes The broker does not support the long double type. Evaluation The results indicate a significant overhead of the character set conversion for the wchar type. Confidential Page 120 Copyright 2003 Distributed Systems Research Group, Charles University

121 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Arrays Of Basic Types/TAO TAO Dependency On Type (Direction IN, 1024 Octets, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the type and direction of the argument. On the X axis is the type of the argument, on the Y axis is the time it took to complete the invocation. Confidential Page 121 Copyright 2003 Distributed Systems Research Group, Charles University

122 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Arrays Of Basic Types/TAO Dependency On Type (Direction OUT, 1024 Octets, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the type and direction of the argument. On the X axis is the type of the argument, on the Y axis is the time it took to complete the invocation. Confidential Page 122 Copyright 2003 Distributed Systems Research Group, Charles University

123 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Arrays Of Basic Types/TAO Confidential Page 123 Copyright 2003 Distributed Systems Research Group, Charles University

124 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Arrays Of Basic Types/TAO Dependency On Type (Direction INOUT, 1024 Octets, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the type and direction of the argument. On the X axis is the type of the argument, on the Y axis is the time it took to complete the invocation. Confidential Page 124 Copyright 2003 Distributed Systems Research Group, Charles University

125 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Arrays Of Basic Types/TAO Dependency On Type (Direction RETURN, 1024 Octets, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the type and direction of the argument. On the X axis is the type of the argument, on the Y axis is the time it took to complete the invocation. Confidential Page 125 Copyright 2003 Distributed Systems Research Group, Charles University

126 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Arrays Of Basic Types/TAO Dependency On Type (Direction IN, 1024 Items, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the type and direction of the argument. On the X axis is the type of the argument, on the Y axis is the time it took to complete the invocation. Confidential Page 126 Copyright 2003 Distributed Systems Research Group, Charles University

127 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Arrays Of Basic Types/TAO Dependency On Type (Direction OUT, 1024 Items, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the type and direction of the argument. On the X axis is the type of the argument, on the Y axis is the time it took to complete the invocation. Confidential Page 127 Copyright 2003 Distributed Systems Research Group, Charles University

128 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Arrays Of Basic Types/TAO Dependency On Type (Direction INOUT, 1024 Items, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the type and direction of the argument. On the X axis is the type of the argument, on the Y axis is the time it took to complete the invocation. Confidential Page 128 Copyright 2003 Distributed Systems Research Group, Charles University

129 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Arrays Of Basic Types/TAO Dependency On Type (Direction RETURN, 1024 Items, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the type and direction of the argument. On the X axis is the type of the argument, on the Y axis is the time it took to complete the invocation. Confidential Page 129 Copyright 2003 Distributed Systems Research Group, Charles University

130 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Arrays Of Basic Types/TAO Evaluation The results exhibit no anomalies. Confidential Page 130 Copyright 2003 Distributed Systems Research Group, Charles University

131 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Arrays Of Basic Types/VisiBroker 5.1 VisiBroker 5.1 Dependency On Type (Direction IN, 1024 Octets, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the type and direction of the argument. On the X axis is the type of the argument, on the Y axis is the time it took to complete the invocation. Confidential Page 131 Copyright 2003 Distributed Systems Research Group, Charles University

132 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Arrays Of Basic Types/VisiBroker 5.1 Dependency On Type (Direction OUT, 1024 Octets, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the type and direction of the argument. On the X axis is the type of the argument, on the Y axis is the time it took to complete the invocation. Confidential Page 132 Copyright 2003 Distributed Systems Research Group, Charles University

133 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Arrays Of Basic Types/VisiBroker 5.1 Dependency On Type (Direction INOUT, 1024 Octets, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the type and direction of the argument. On the X axis is the type of the argument, on the Y axis is the time it took to complete the invocation. Confidential Page 133 Copyright 2003 Distributed Systems Research Group, Charles University

134 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Arrays Of Basic Types/VisiBroker 5.1 Dependency On Type (Direction RETURN, 1024 Octets, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the type and direction of the argument. On the X axis is the type of the argument, on the Y axis is the time it took to complete the invocation. Confidential Page 134 Copyright 2003 Distributed Systems Research Group, Charles University

135 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Arrays Of Basic Types/VisiBroker 5.1 Dependency On Type (Direction IN, 1024 Items, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the type and direction of the argument. On the X axis is the type of the argument, on the Y axis is the time it took to complete the invocation. Confidential Page 135 Copyright 2003 Distributed Systems Research Group, Charles University

136 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Arrays Of Basic Types/VisiBroker 5.1 Dependency On Type (Direction OUT, 1024 Items, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the type and direction of the argument. On the X axis is the type of the argument, on the Y axis is the time it took to complete the invocation. Confidential Page 136 Copyright 2003 Distributed Systems Research Group, Charles University

137 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Arrays Of Basic Types/VisiBroker 5.1 Dependency On Type (Direction INOUT, 1024 Items, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the type and direction of the argument. On the X axis is the type of the argument, on the Y axis is the time it took to complete the invocation. Confidential Page 137 Copyright 2003 Distributed Systems Research Group, Charles University

138 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Arrays Of Basic Types/VisiBroker 5.1 Dependency On Type (Direction RETURN, 1024 Items, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the type and direction of the argument. On the X axis is the type of the argument, on the Y axis is the time it took to complete the invocation. Confidential Page 138 Copyright 2003 Distributed Systems Research Group, Charles University

139 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Arrays Of Basic Types/VisiBroker 5.1 Notes The broker does not support the long double type. Evaluation The results indicate a significant overhead of the character set conversion for the wchar type. Confidential Page 139 Copyright 2003 Distributed Systems Research Group, Charles University

140 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Arrays Of Basic Types/Summary Summary Dependency On Type (Direction IN, 1024 Octets, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the type and direction of the argument. On the X axis is the type of the argument, on the Y axis is the time it took to complete the invocation. Confidential Page 140 Copyright 2003 Distributed Systems Research Group, Charles University

141 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Arrays Of Basic Types/Summary Confidential Page 141 Copyright 2003 Distributed Systems Research Group, Charles University

142 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Arrays Of Basic Types/Summary Dependency On Type (Direction OUT, 1024 Octets, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the type and direction of the argument. On the X axis is the type of the argument, on the Y axis is the time it took to complete the invocation. Confidential Page 142 Copyright 2003 Distributed Systems Research Group, Charles University

143 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Arrays Of Basic Types/Summary Confidential Page 143 Copyright 2003 Distributed Systems Research Group, Charles University

144 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Arrays Of Basic Types/Summary Dependency On Type (Direction INOUT, 1024 Octets, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the type and direction of the argument. On the X axis is the type of the argument, on the Y axis is the time it took to complete the invocation. Confidential Page 144 Copyright 2003 Distributed Systems Research Group, Charles University

145 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Arrays Of Basic Types/Summary Confidential Page 145 Copyright 2003 Distributed Systems Research Group, Charles University

146 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Arrays Of Basic Types/Summary Dependency On Type (Direction RETURN, 1024 Octets, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the type and direction of the argument. On the X axis is the type of the argument, on the Y axis is the time it took to complete the invocation. Confidential Page 146 Copyright 2003 Distributed Systems Research Group, Charles University

147 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Arrays Of Basic Types/Summary Confidential Page 147 Copyright 2003 Distributed Systems Research Group, Charles University

148 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Arrays Of Basic Types/Summary Dependency On Type (Direction IN, 1024 Items, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the type and direction of the argument. On the X axis is the type of the argument, on the Y axis is the time it took to complete the invocation. Confidential Page 148 Copyright 2003 Distributed Systems Research Group, Charles University

149 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Arrays Of Basic Types/Summary Confidential Page 149 Copyright 2003 Distributed Systems Research Group, Charles University

150 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Arrays Of Basic Types/Summary Dependency On Type (Direction OUT, 1024 Items, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the type and direction of the argument. On the X axis is the type of the argument, on the Y axis is the time it took to complete the invocation. Confidential Page 150 Copyright 2003 Distributed Systems Research Group, Charles University

151 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Arrays Of Basic Types/Summary Confidential Page 151 Copyright 2003 Distributed Systems Research Group, Charles University

152 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Arrays Of Basic Types/Summary Dependency On Type (Direction INOUT, 1024 Items, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the type and direction of the argument. On the X axis is the type of the argument, on the Y axis is the time it took to complete the invocation. Confidential Page 152 Copyright 2003 Distributed Systems Research Group, Charles University

153 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Arrays Of Basic Types/Summary Confidential Page 153 Copyright 2003 Distributed Systems Research Group, Charles University

154 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Arrays Of Basic Types/Summary Dependency On Type (Direction RETURN, 1024 Items, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the type and direction of the argument. On the X axis is the type of the argument, on the Y axis is the time it took to complete the invocation. Confidential Page 154 Copyright 2003 Distributed Systems Research Group, Charles University

155 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Arrays Of Basic Types/Summary Confidential Page 155 Copyright 2003 Distributed Systems Research Group, Charles University

156 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Arrays Of Basic Types/Summary Notes Orbix and VisiBroker do not support the long double type. Evaluation The results rate VisiBroker as the fastest broker in the scope measured by the suite, Orbix occupies the second and TAO the third place. Orbix exhibits a significant overhead of the character set conversion for the wchar type. VisiBroker exhibits a significant overhead of the character set conversion for the wchar type. Confidential Page 156 Copyright 2003 Distributed Systems Research Group, Charles University

157 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Sequences Of Octets Marshaling Sequences Of Octets Description The suite measures the time it takes to complete a method invocation depending on the size of the octet sequence passed as argument. The purpose of the suite is to assess the behavior of the marshaling mechanism. Direction IN IDL Code typedef sequence<octet> toctetsequence; interface Ping { void Pong (in toctetsequence ssequence); } C++ Code toctetsequence *ppingoctetsequence; ulonglong ActionPing (void *pargs) { pping->pong (*ppingoctetsequence); } void PingServant::Pong (const toctetsequence &ssequence) { } Java Code private toctetsequenceholder sequenceholder; public final void execute (long [] times) { pingserver.pong (sequenceholder.value); } public final void Pong (byte [] ssequence) { } Direction OUT IDL Code typedef sequence<octet> toctetsequence; interface Ping { void Pong (in unsigned long ilength, out toctetsequence ssequence); } C++ Code toctetsequence *ppingoctetsequence; CORBA::ULong ipingoctetsequencelength; ulonglong ActionPing (void *pargs) { pping->pong (ipingoctetsequencelength, ppingoctetsequence); delete (ppingoctetsequence); } void PingServant::Pong (CORBA::ULong ilength, toctetsequence_out psequence) { psequence = new toctetsequence (ilength); psequence->length (ilength); } Java Code public static int sequencelength; private toctetsequenceholder sequenceholder; public final void execute (long [] times) { pingserver.pong (sequencelength, sequenceholder); sequenceholder.value = null; } public final void Pong (int ilength, toctetsequenceholder ssequence) { ssequence.value = new byte [ilength]; } Confidential Page 157 Copyright 2003 Distributed Systems Research Group, Charles University

158 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Sequences Of Octets Direction INOUT IDL Code typedef sequence<octet> toctetsequence; interface Ping { void Pong (inout toctetsequence ssequence); } C++ Code toctetsequence *ppingoctetsequence; ulonglong ActionPing (void *pargs) { pping->pong (*ppingoctetsequence); } void PingServant::Pong (toctetsequence &ssequence) { } Java Code private toctetsequenceholder sequenceholder; public final void execute (long [] times) { pingserver.pong (sequenceholder); } public final void Pong (toctetsequenceholder ssequence) { } Direction RETURN IDL Code typedef sequence<octet> toctetsequence; interface Ping { toctetsequence Pong (in unsigned long ilength); } C++ Code CORBA::ULong ipingoctetsequencelength; ulonglong ActionPing (void *pargs) { delete (pping->pong (ipingoctetsequencelength); } toctetsequence *PingServant::Pong (CORBA::ULong ilength) { toctetsequence *psequence; psequence = new toctetsequence (ilength); psequence->length (ilength); return (psequence); } Java Code public static int sequencelength; public final void execute (long [] times) { pingserver.pong (sequencelength); } public final byte [] Pong (int ilength) { return new byte [ilength]; } Results The dependency of the roundtrip time on the size of the sequence should display linearly increasing minimum, median and average values and reasonably small maximum values. The memory usage should be constant or very slightly increasing. The network usage should be asymptotically increasing towards the maximum capacity. The processor usage should follow the network usage. Confidential Page 158 Copyright 2003 Distributed Systems Research Group, Charles University

159 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Sequences Of Octets/Orbix 5.1 Orbix 5.1 Dependency On Size Of Sequence (Direction IN, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the size of the octet sequence passed as argument. On the X axis is the size of the sequence, on the Y axis is the time it took to complete the invocation. Confidential Page 159 Copyright 2003 Distributed Systems Research Group, Charles University

160 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Sequences Of Octets/Orbix 5.1 Dependency On Size Of Sequence (Direction OUT, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the size of the octet sequence passed as argument. On the X axis is the size of the sequence, on the Y axis is the time it took to complete the invocation. Confidential Page 160 Copyright 2003 Distributed Systems Research Group, Charles University

161 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Sequences Of Octets/Orbix 5.1 Dependency On Size Of Sequence (Direction INOUT, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the size of the octet sequence passed as argument. On the X axis is the size of the sequence, on the Y axis is the time it took to complete the invocation. Confidential Page 161 Copyright 2003 Distributed Systems Research Group, Charles University

162 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Sequences Of Octets/Orbix 5.1 Confidential Page 162 Copyright 2003 Distributed Systems Research Group, Charles University

163 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Sequences Of Octets/Orbix 5.1 Dependency On Size Of Sequence (Direction RETURN, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the size of the octet sequence passed as argument. On the X axis is the size of the sequence, on the Y axis is the time it took to complete the invocation. Confidential Page 163 Copyright 2003 Distributed Systems Research Group, Charles University

164 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Sequences Of Octets/Orbix 5.1 Evaluation The roundtrip time for 1 octet sequence corresponds with that of the Ping suite. The results exhibit no anomalies. Confidential Page 164 Copyright 2003 Distributed Systems Research Group, Charles University

165 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Sequences Of Octets/TAO TAO Dependency On Size Of Sequence (Direction IN, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the size of the octet sequence passed as argument. On the X axis is the size of the sequence, on the Y axis is the time it took to complete the invocation. Confidential Page 165 Copyright 2003 Distributed Systems Research Group, Charles University

166 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Sequences Of Octets/TAO Dependency On Size Of Sequence (Direction OUT, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the size of the octet sequence passed as argument. On the X axis is the size of the sequence, on the Y axis is the time it took to complete the invocation. Confidential Page 166 Copyright 2003 Distributed Systems Research Group, Charles University

167 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Sequences Of Octets/TAO Dependency On Size Of Sequence (Direction INOUT, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the size of the octet sequence passed as argument. On the X axis is the size of the sequence, on the Y axis is the time it took to complete the invocation. Confidential Page 167 Copyright 2003 Distributed Systems Research Group, Charles University

168 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Sequences Of Octets/TAO Confidential Page 168 Copyright 2003 Distributed Systems Research Group, Charles University

169 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Sequences Of Octets/TAO Dependency On Size Of Sequence (Direction RETURN, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the size of the octet sequence passed as argument. On the X axis is the size of the sequence, on the Y axis is the time it took to complete the invocation. Confidential Page 169 Copyright 2003 Distributed Systems Research Group, Charles University

170 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Sequences Of Octets/TAO Evaluation The roundtrip time for 1 octet sequence corresponds with that of the Ping suite. The results exhibit no anomalies. Confidential Page 170 Copyright 2003 Distributed Systems Research Group, Charles University

171 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Sequences Of Octets/VisiBroker 5.1 VisiBroker 5.1 Dependency On Size Of Sequence (Direction IN, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the size of the octet sequence passed as argument. On the X axis is the size of the sequence, on the Y axis is the time it took to complete the invocation. Confidential Page 171 Copyright 2003 Distributed Systems Research Group, Charles University

172 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Sequences Of Octets/VisiBroker 5.1 Dependency On Size Of Sequence (Direction OUT, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the size of the octet sequence passed as argument. On the X axis is the size of the sequence, on the Y axis is the time it took to complete the invocation. Confidential Page 172 Copyright 2003 Distributed Systems Research Group, Charles University

173 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Sequences Of Octets/VisiBroker 5.1 Dependency On Size Of Sequence (Direction INOUT, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the size of the octet sequence passed as argument. On the X axis is the size of the sequence, on the Y axis is the time it took to complete the invocation. Confidential Page 173 Copyright 2003 Distributed Systems Research Group, Charles University

174 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Sequences Of Octets/VisiBroker 5.1 Confidential Page 174 Copyright 2003 Distributed Systems Research Group, Charles University

175 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Sequences Of Octets/VisiBroker 5.1 Dependency On Size Of Sequence (Direction RETURN, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the size of the octet sequence passed as argument. On the X axis is the size of the sequence, on the Y axis is the time it took to complete the invocation. Confidential Page 175 Copyright 2003 Distributed Systems Research Group, Charles University

176 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Sequences Of Octets/VisiBroker 5.1 Evaluation The roundtrip time for 1 octet sequence corresponds with that of the Ping suite. The results exhibit no anomalies. Confidential Page 176 Copyright 2003 Distributed Systems Research Group, Charles University

177 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Sequences Of Octets/Summary Summary Dependency On Size Of Sequence (Direction IN, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the size of the octet sequence passed as argument. On the X axis is the size of the sequence, on the Y axis is the time it took to complete the invocation. Confidential Page 177 Copyright 2003 Distributed Systems Research Group, Charles University

178 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Sequences Of Octets/Summary Dependency On Size Of Sequence (Direction OUT, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the size of the octet sequence passed as argument. On the X axis is the size of the sequence, on the Y axis is the time it took to complete the invocation. Confidential Page 178 Copyright 2003 Distributed Systems Research Group, Charles University

179 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Sequences Of Octets/Summary Confidential Page 179 Copyright 2003 Distributed Systems Research Group, Charles University

180 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Sequences Of Octets/Summary Dependency On Size Of Sequence (Direction INOUT, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the size of the octet sequence passed as argument. On the X axis is the size of the sequence, on the Y axis is the time it took to complete the invocation. Confidential Page 180 Copyright 2003 Distributed Systems Research Group, Charles University

181 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Sequences Of Octets/Summary Confidential Page 181 Copyright 2003 Distributed Systems Research Group, Charles University

182 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Sequences Of Octets/Summary Dependency On Size Of Sequence (Direction RETURN, 1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the size of the octet sequence passed as argument. On the X axis is the size of the sequence, on the Y axis is the time it took to complete the invocation. Confidential Page 182 Copyright 2003 Distributed Systems Research Group, Charles University

183 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Sequences Of Octets/Summary Confidential Page 183 Copyright 2003 Distributed Systems Research Group, Charles University

184 CORBA Comparison Project, Windows Visual C++ Platform Marshaling Sequences Of Octets/Summary Evaluation The results rate Orbix, TAO and VisiBroker as of the same speed in the scope measured by the suite. Orbix, TAO and VisiBroker exhibit the same shape of dependency on the size of sequence. Confidential Page 184 Copyright 2003 Distributed Systems Research Group, Charles University

185 CORBA Comparison Project, Windows Visual C++ Platform Dispatching To Servant Instances Dispatching Dispatching To Servant Instances Description The suite measures the time it takes to complete a method invocation depending on the number of active servants hosted by the server. The purpose of the suite is to assess the behavior of the dispatching mechanism. IDL Code interface Ping { void Pong (); } typedef sequence<ping> tpingsequence; C++ Code tpingsequence *ppingsequence; CORBA::ULong ipingsequencelength; ulonglong ActionPing (void *pargs) { (*ppingsequence) [RNDGetRandom (ipingsequencelength)]->pong (); return (0); } void PingServant::Pong () { } Java Code public static int pingsequencelength; public static Ping [] pingsequence; public final void execute (long [] times) { pingsequence [(int) BenchGlobal.rand (pingsequencelength)].pong (); } public final void Pong () { } Results The dependency of the roundtrip time on the number of servants should display constant or less than linearly increasing minimum, median and average values and reasonably small maximum values. The memory usage should be linearly increasing and reflect the size of the servants on the server and the proxies on the client. The network usage should be constant or very slightly decreasing. The processor usage should be monotonous. Confidential Page 185 Copyright 2003 Distributed Systems Research Group, Charles University

186 CORBA Comparison Project, Windows Visual C++ Platform Dispatching To Servant Instances/Orbix 5.1 Orbix 5.1 Dependency On Number Of Servants (1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the number of active servants hosted by the server. On the X axis is the number of servants, on the Y axis is the time it took to complete the invocation. Confidential Page 186 Copyright 2003 Distributed Systems Research Group, Charles University

187 CORBA Comparison Project, Windows Visual C++ Platform Dispatching To Servant Instances/Orbix 5.1 Dependency On Number Of Servants (1 Thread, Zoom) The graph is a zoom in of the previous graph. Confidential Page 187 Copyright 2003 Distributed Systems Research Group, Charles University

188 CORBA Comparison Project, Windows Visual C++ Platform Dispatching To Servant Instances/Orbix 5.1 Evaluation The roundtrip time for 1 servant instance corresponds with that of the Ping suite. The results indicate a slight increase in the invocation time for a large number of servants. The memory usage observed during the test is roughly 330 bytes per servant instance on the server and roughly 450 bytes per proxy instance on the client. Confidential Page 188 Copyright 2003 Distributed Systems Research Group, Charles University

189 CORBA Comparison Project, Windows Visual C++ Platform Dispatching To Servant Instances/TAO TAO Dependency On Number Of Servants (1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the number of active servants hosted by the server. On the X axis is the number of servants, on the Y axis is the time it took to complete the invocation. Confidential Page 189 Copyright 2003 Distributed Systems Research Group, Charles University

190 CORBA Comparison Project, Windows Visual C++ Platform Dispatching To Servant Instances/TAO Dependency On Number Of Servants (1 Thread, Zoom) The graph is a zoom in of the previous graph. Confidential Page 190 Copyright 2003 Distributed Systems Research Group, Charles University

191 CORBA Comparison Project, Windows Visual C++ Platform Dispatching To Servant Instances/TAO Evaluation The roundtrip time for 1 servant instance corresponds with that of the Ping suite. The results exhibit no anomalies. The memory usage observed during the test is roughly 1300 bytes per servant instance on the server and roughly 1400 bytes per proxy instance on the client. Confidential Page 191 Copyright 2003 Distributed Systems Research Group, Charles University

192 CORBA Comparison Project, Windows Visual C++ Platform Dispatching To Servant Instances/VisiBroker 5.1 VisiBroker 5.1 Dependency On Number Of Servants (1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the number of active servants hosted by the server. On the X axis is the number of servants, on the Y axis is the time it took to complete the invocation. Confidential Page 192 Copyright 2003 Distributed Systems Research Group, Charles University

193 CORBA Comparison Project, Windows Visual C++ Platform Dispatching To Servant Instances/VisiBroker 5.1 Dependency On Number Of Servants (1 Thread, Zoom) The graph is a zoom in of the previous graph. Confidential Page 193 Copyright 2003 Distributed Systems Research Group, Charles University

194 CORBA Comparison Project, Windows Visual C++ Platform Dispatching To Servant Instances/VisiBroker 5.1 Evaluation The roundtrip time for 1 servant instance corresponds with that of the Ping suite. The results indicate a significant increase in the invocation time for a large number of servants. The memory usage observed during the test is roughly 2400 bytes per servant instance on the server and roughly 5000 bytes per proxy instance on the client. Confidential Page 194 Copyright 2003 Distributed Systems Research Group, Charles University

195 CORBA Comparison Project, Windows Visual C++ Platform Dispatching To Servant Instances/Summary Summary Dependency On Number Of Servants (1 Thread) The graph depicts the dependency of the time it takes to complete the invocation on the number of active servants hosted by the server. On the X axis is the number of servants, on the Y axis is the time it took to complete the invocation. Confidential Page 195 Copyright 2003 Distributed Systems Research Group, Charles University

196 CORBA Comparison Project, Windows Visual C++ Platform Dispatching To Servant Instances/Summary Dependency On Number Of Servants (1 Thread, Zoom) The graph is a zoom in of the previous graph. Confidential Page 196 Copyright 2003 Distributed Systems Research Group, Charles University

197 CORBA Comparison Project, Windows Visual C++ Platform Dispatching To Servant Instances/Summary Confidential Page 197 Copyright 2003 Distributed Systems Research Group, Charles University

198 CORBA Comparison Project, Windows Visual C++ Platform Dispatching To Servant Instances/Summary Evaluation The results rate Orbix as the fastest broker in the scope measured by the suite, TAO occupies the second and VisiBroker the third place. For a small number of objects, VisiBroker rates as the fastest broker, Orbix occupies the second and TAO the third place. Orbix and TAO exhibit the best shape of dependency on the number of servants, VisiBroker occupies the second place. Orbix exhibits the smallest memory usage, TAO occupies the second and VisiBroker the third place. Confidential Page 198 Copyright 2003 Distributed Systems Research Group, Charles University

199 CORBA Comparison Project, Windows Visual C++ Platform Lifecycle Of Servant Instances Lifecycle Of Servant Instances Description The suite measures the time it takes to create and delete a servant and to create and delete a proxy depending on the number of active servants hosted by the server and active proxies hosted by the client. The purpose of the suite is to assess the behavior of the servant lifecycle mechanism. IDL Code interface Empty { }; typedef sequence<empty> temptysequence; interface EmptyFactory { void CreateIndividual (out Empty oempty, out unsigned long long itimeinvoke, out unsigned long long itimereturn); void DeleteIndividual (in Empty oempty, out unsigned long long itimeinvoke, out unsigned long long itimereturn); temptysequence CreateSequence (in unsigned long ilength); }; C++ Code temptyfactory *pemptyfactory; void ActionCreateDelete (tmeaargs *pargs) { Empty_ptr pempty; pemptyfactory->createindividual (pempty, pargs->aitimes [BEN_StampCreateInvoke], pargs->aitimes [BEN_StampCreateReturn]); pargs->aitimes [BEN_StampCreateFinish] = TIMGetTimestamp (); pemptyfactory->deleteindividual (pempty, pargs->aitimes [BEN_StampDeleteInvoke], pargs->aitimes [BEN_StampDeleteReturn]); CORBA::release (pempty); pargs->aitimes [BEN_StampDeleteFinish] = TIMGetTimestamp (); } void EmptyFactoryServant::CreateIndividual ( Empty_out pempty, CORBA::ULongLong_out itimeinvoke, CORBA::ULongLong_out itimereturn) { itimeinvoke = TIMGetTimestamp (); EmptyServant *pemptyservant = new EmptyServant (); pempty = pemptyservant->_this (); itimereturn = TIMGetTimestamp (); } void EmptyFactoryServant::DeleteIndividual ( Empty_ptr pempty, CORBA::ULongLong_out itimeinvoke, CORBA::ULongLong_out itimereturn) { itimeinvoke = TIMGetTimestamp (); PortableServer::ObjectId_var vemptyoid = prootpoa->reference_to_id (pempty); PortableServer::ServantBase *pemptyservant = prootpoa->reference_to_servant (pempty); prootpoa->deactivate_object (vemptyoid); delete (pemptyservant); itimereturn = TIMGetTimestamp (); } Java Code public static int emptysequencelength; public static Empty [] emptysequence; public static EmptyFactory emptyfactory; private LongHolder invokestamp = new LongHolder (); private LongHolder returnstamp = new LongHolder (); private EmptyHolder emptyholder = new EmptyHolder (); public final void execute (long [] times) { Confidential Page 199 Copyright 2003 Distributed Systems Research Group, Charles University

200 CORBA Comparison Project, Windows Visual C++ Platform Lifecycle Of Servant Instances emptyfactory.createindividual (emptyholder, invokestamp, returnstamp); times [BEN_StampCreateFinish] = SysInformer.timGetTimestamp (); times [BEN_StampCreateInvoke] = invokestamp.value; times [BEN_StampCreateReturn] = returnstamp.value; emptyfactory.deleteindividual (emptyholder.value, invokestamp, returnstamp); times [BEN_StampDeleteFinish] = SysInformer.timGetTimestamp (); times [BEN_StampDeleteInvoke] = invokestamp.value; times [BEN_StampDeleteReturn] = returnstamp.value; } emptyholder.value = null; public final void CreateIndividual ( EmptyHolder oempty, LongHolder itimeinvoke, LongHolder itimereturn) { } itimeinvoke.value = SysInformer.timGetTimestamp (); EmptyServant emptyservant = new EmptyServant (); oempty.value = EmptyHelper.narrow ( BenchBroker.rootPOA.servant_to_reference (emptyservant)); itimereturn.value = SysInformer.timGetTimestamp (); public final void DeleteIndividual ( Empty oempty, LongHolder itimeinvoke, LongHolder itimereturn) { } itimeinvoke.value = SysInformer.timGetTimestamp (); byte [] emptyoid = BenchBroker.rootPOA.reference_to_id (oempty); BenchBroker.rootPOA.deactivate_object (emptyoid); itimereturn.value = SysInformer.timGetTimestamp (); Results The dependency of the create and the delete times on the number of servants should display constant or less than linearly increasing minimum, median and average values and reasonably small maximum values. The memory usage should be linearly increasing and reflect the size of the servants on the server and the proxies on the client. The network usage should be constant or very slightly decreasing. The processor usage should be monotonous. Confidential Page 200 Copyright 2003 Distributed Systems Research Group, Charles University

201 CORBA Comparison Project, Windows Visual C++ Platform Lifecycle Of Servant Instances/Orbix 5.1 Orbix 5.1 Dependency Of Create On Number Of Servants (1 Thread) The graph depicts the dependency of the time it takes to create a servant on the number of active servants hosted by the server and the number of active proxies hosted by the client. On the X axis is the number of servants and proxies, on the Y axis is the time it took to create the servant. Confidential Page 201 Copyright 2003 Distributed Systems Research Group, Charles University

202 CORBA Comparison Project, Windows Visual C++ Platform Lifecycle Of Servant Instances/Orbix 5.1 Dependency Of Create On Number Of Servants (1 Thread, Zoom) The graph depicts the dependency of the time it takes to create a servant on the number of active servants hosted by the server and the number of active proxies hosted by the client. On the X axis is the number of servants and proxies, on the Y axis is the time it took to create the servant. Confidential Page 202 Copyright 2003 Distributed Systems Research Group, Charles University

203 CORBA Comparison Project, Windows Visual C++ Platform Lifecycle Of Servant Instances/Orbix 5.1 Dependency Of Delete On Number Of Servants (1 Thread) The graph depicts the dependency of the time it takes to delete a servant on the number of active servants hosted by the server and the number of active proxies hosted by the client. On the X axis is the number of servants and proxies, on the Y axis is the time it took to delete the servant. Confidential Page 203 Copyright 2003 Distributed Systems Research Group, Charles University

204 CORBA Comparison Project, Windows Visual C++ Platform Lifecycle Of Servant Instances/Orbix 5.1 Dependency Of Delete On Number Of Servants (1 Thread, Zoom) The graph depicts the dependency of the time it takes to delete a servant on the number of active servants hosted by the server and the number of active proxies hosted by the client. On the X axis is the number of servants and proxies, on the Y axis is the time it took to delete the servant. Confidential Page 204 Copyright 2003 Distributed Systems Research Group, Charles University

205 CORBA Comparison Project, Windows Visual C++ Platform Lifecycle Of Servant Instances/Orbix 5.1 Evaluation The results indicate a significant increase in the create and delete times for a large number of servants. The memory usage observed during the test is roughly 330 bytes per servant instance on the server and roughly 430 bytes per proxy instance on the client. Confidential Page 205 Copyright 2003 Distributed Systems Research Group, Charles University

206 CORBA Comparison Project, Windows Visual C++ Platform Lifecycle Of Servant Instances/TAO TAO Dependency Of Create On Number Of Servants (1 Thread) The graph depicts the dependency of the time it takes to create a servant on the number of active servants hosted by the server and the number of active proxies hosted by the client. On the X axis is the number of servants and proxies, on the Y axis is the time it took to create the servant. Confidential Page 206 Copyright 2003 Distributed Systems Research Group, Charles University

207 CORBA Comparison Project, Windows Visual C++ Platform Lifecycle Of Servant Instances/TAO Dependency Of Create On Number Of Servants (1 Thread, Zoom) The graph depicts the dependency of the time it takes to create a servant on the number of active servants hosted by the server and the number of active proxies hosted by the client. On the X axis is the number of servants and proxies, on the Y axis is the time it took to create the servant. Confidential Page 207 Copyright 2003 Distributed Systems Research Group, Charles University

208 CORBA Comparison Project, Windows Visual C++ Platform Lifecycle Of Servant Instances/TAO Dependency Of Delete On Number Of Servants (1 Thread) The graph depicts the dependency of the time it takes to delete a servant on the number of active servants hosted by the server and the number of active proxies hosted by the client. On the X axis is the number of servants and proxies, on the Y axis is the time it took to delete the servant. Confidential Page 208 Copyright 2003 Distributed Systems Research Group, Charles University

209 CORBA Comparison Project, Windows Visual C++ Platform Lifecycle Of Servant Instances/TAO Dependency Of Delete On Number Of Servants (1 Thread, Zoom) The graph depicts the dependency of the time it takes to delete a servant on the number of active servants hosted by the server and the number of active proxies hosted by the client. On the X axis is the number of servants and proxies, on the Y axis is the time it took to delete the servant. Confidential Page 209 Copyright 2003 Distributed Systems Research Group, Charles University

210 CORBA Comparison Project, Windows Visual C++ Platform Lifecycle Of Servant Instances/TAO Evaluation The results indicate a significant increase in the create time and slight increase in the delete time for a large number of servants. The memory usage observed during the test is roughly 1200 bytes per servant instance on the server and roughly 1400 bytes per proxy instance on the client. Confidential Page 210 Copyright 2003 Distributed Systems Research Group, Charles University

211 CORBA Comparison Project, Windows Visual C++ Platform Lifecycle Of Servant Instances/VisiBroker 5.1 VisiBroker 5.1 Dependency Of Create On Number Of Servants (1 Thread) The graph depicts the dependency of the time it takes to create a servant on the number of active servants hosted by the server and the number of active proxies hosted by the client. On the X axis is the number of servants and proxies, on the Y axis is the time it took to create the servant. Confidential Page 211 Copyright 2003 Distributed Systems Research Group, Charles University

212 CORBA Comparison Project, Windows Visual C++ Platform Lifecycle Of Servant Instances/VisiBroker 5.1 Dependency Of Create On Number Of Servants (1 Thread, Zoom) The graph depicts the dependency of the time it takes to create a servant on the number of active servants hosted by the server and the number of active proxies hosted by the client. On the X axis is the number of servants and proxies, on the Y axis is the time it took to create the servant. Confidential Page 212 Copyright 2003 Distributed Systems Research Group, Charles University

213 CORBA Comparison Project, Windows Visual C++ Platform Lifecycle Of Servant Instances/VisiBroker 5.1 Dependency Of Delete On Number Of Servants (1 Thread) The graph depicts the dependency of the time it takes to delete a servant on the number of active servants hosted by the server and the number of active proxies hosted by the client. On the X axis is the number of servants and proxies, on the Y axis is the time it took to delete the servant. Confidential Page 213 Copyright 2003 Distributed Systems Research Group, Charles University

214 CORBA Comparison Project, Windows Visual C++ Platform Lifecycle Of Servant Instances/VisiBroker 5.1 Dependency Of Delete On Number Of Servants (1 Thread, Zoom) The graph depicts the dependency of the time it takes to delete a servant on the number of active servants hosted by the server and the number of active proxies hosted by the client. On the X axis is the number of servants and proxies, on the Y axis is the time it took to delete the servant. Confidential Page 214 Copyright 2003 Distributed Systems Research Group, Charles University

215 CORBA Comparison Project, Windows Visual C++ Platform Lifecycle Of Servant Instances/VisiBroker 5.1 Evaluation The results indicate a significant increase in the create and delete times for a large number of servants. The memory usage observed during the test is roughly 2400 bytes per servant instance on the server and roughly 2200 bytes per proxy instance on the client. Confidential Page 215 Copyright 2003 Distributed Systems Research Group, Charles University

216 CORBA Comparison Project, Windows Visual C++ Platform Lifecycle Of Servant Instances/Summary Summary Dependency Of Create On Number Of Servants (1 Thread) The graph depicts the dependency of the time it takes to create a servant on the number of active servants hosted by the server and the number of active proxies hosted by the client. On the X axis is the number of servants and proxies, on the Y axis is the time it took to create the servant. Confidential Page 216 Copyright 2003 Distributed Systems Research Group, Charles University

217 CORBA Comparison Project, Windows Visual C++ Platform Lifecycle Of Servant Instances/Summary Dependency Of Create On Number Of Servants (1 Thread, Zoom) The graph depicts the dependency of the time it takes to create a servant on the number of active servants hosted by the server and the number of active proxies hosted by the client. On the X axis is the number of servants and proxies, on the Y axis is the time it took to create the servant. Confidential Page 217 Copyright 2003 Distributed Systems Research Group, Charles University

218 CORBA Comparison Project, Windows Visual C++ Platform Lifecycle Of Servant Instances/Summary Confidential Page 218 Copyright 2003 Distributed Systems Research Group, Charles University

219 CORBA Comparison Project, Windows Visual C++ Platform Lifecycle Of Servant Instances/Summary Dependency Of Delete On Number Of Servants (1 Thread) The graph depicts the dependency of the time it takes to delete a servant on the number of active servants hosted by the server and the number of active proxies hosted by the client. On the X axis is the number of servants and proxies, on the Y axis is the time it took to delete the servant. Confidential Page 219 Copyright 2003 Distributed Systems Research Group, Charles University

220 CORBA Comparison Project, Windows Visual C++ Platform Lifecycle Of Servant Instances/Summary Confidential Page 220 Copyright 2003 Distributed Systems Research Group, Charles University

221 CORBA Comparison Project, Windows Visual C++ Platform Lifecycle Of Servant Instances/Summary Dependency Of Delete On Number Of Servants (1 Thread, Zoom) The graph depicts the dependency of the time it takes to delete a servant on the number of active servants hosted by the server and the number of active proxies hosted by the client. On the X axis is the number of servants and proxies, on the Y axis is the time it took to delete the servant. Confidential Page 221 Copyright 2003 Distributed Systems Research Group, Charles University

222 CORBA Comparison Project, Windows Visual C++ Platform Lifecycle Of Servant Instances/Summary Confidential Page 222 Copyright 2003 Distributed Systems Research Group, Charles University

223 CORBA Comparison Project, Windows Visual C++ Platform Lifecycle Of Servant Instances/Summary Evaluation The results rate Orbix as the fastest broker in the scope measured by the suite for both creation and deletion of objects, TAO occupies the second and VisiBroker the third place. Orbix exhibits the best shape of dependency on the number of servants, TAO occupies the second and VisiBroker the third place. Orbix exhibits the smallest memory usage, TAO occupies the second and VisiBroker the third place. Confidential Page 223 Copyright 2003 Distributed Systems Research Group, Charles University

Overview of the CORBA Performance

Overview of the CORBA Performance Overview of the CORBA Performance Petr Tůma, Adam Buble Charles University, Faculty of Mathematics and Physics Department of Software Engineering Malostranské nám. 25, Prague, Czech Republic phone: +42

More information

Enterprise JavaBeans Benchmarking 1

Enterprise JavaBeans Benchmarking 1 Enterprise JavaBeans Benchmarking 1 Marek Procházka, Petr T ma, Radek Pospíšil Charles University Faculty of Mathematics and Physics Department of Software Engineering Czech Republic {prochazka, tuma,

More information

Chapter 8: Virtual Memory. Operating System Concepts

Chapter 8: Virtual Memory. Operating System Concepts Chapter 8: Virtual Memory Silberschatz, Galvin and Gagne 2009 Chapter 8: Virtual Memory Background Demand Paging Copy-on-Write Page Replacement Allocation of Frames Thrashing Memory-Mapped Files Allocating

More information

Performance and Optimization Issues in Multicore Computing

Performance and Optimization Issues in Multicore Computing Performance and Optimization Issues in Multicore Computing Minsoo Ryu Department of Computer Science and Engineering 2 Multicore Computing Challenges It is not easy to develop an efficient multicore program

More information

Implementing Probes for J2EE Cluster Monitoring

Implementing Probes for J2EE Cluster Monitoring Implementing s for J2EE Cluster Monitoring Emmanuel Cecchet, Hazem Elmeleegy, Oussama Layaida, Vivien Quéma LSR-IMAG Laboratory (CNRS, INPG, UJF) - INRIA INRIA Rhône-Alpes, 655 av. de l Europe, 38334 Saint-Ismier

More information

5 Distributed Objects: The Java Approach

5 Distributed Objects: The Java Approach 5 Distributed Objects: The Java Approach Main Points Why distributed objects Distributed Object design points Java RMI Dynamic Code Loading 5.1 What s an Object? An Object is an autonomous entity having

More information

PowerVault MD3 SSD Cache Overview

PowerVault MD3 SSD Cache Overview PowerVault MD3 SSD Cache Overview A Dell Technical White Paper Dell Storage Engineering October 2015 A Dell Technical White Paper TECHNICAL INACCURACIES. THE CONTENT IS PROVIDED AS IS, WITHOUT EXPRESS

More information

Great Reality #2: You ve Got to Know Assembly Does not generate random values Arithmetic operations have important mathematical properties

Great Reality #2: You ve Got to Know Assembly Does not generate random values Arithmetic operations have important mathematical properties Overview Course Overview Course theme Five realities Computer Systems 1 2 Course Theme: Abstraction Is Good But Don t Forget Reality Most CS courses emphasize abstraction Abstract data types Asymptotic

More information

Chapter 8 Virtual Memory

Chapter 8 Virtual Memory Chapter 8 Virtual Memory Contents Hardware and control structures Operating system software Unix and Solaris memory management Linux memory management Windows 2000 memory management Characteristics of

More information

File System Interface and Implementation

File System Interface and Implementation Unit 8 Structure 8.1 Introduction Objectives 8.2 Concept of a File Attributes of a File Operations on Files Types of Files Structure of File 8.3 File Access Methods Sequential Access Direct Access Indexed

More information

IBM Daeja ViewONE Virtual Performance and Scalability

IBM Daeja ViewONE Virtual Performance and Scalability Summary White Paper January 2016 IBM Daeja ViewONE Virtual 4.1.5 Performance and Scalability Copyright IBM Corporation 2016 Enterprise Content Management www.ibm.com No part of this document may be reproduced

More information

Engine Support System. asyrani.com

Engine Support System. asyrani.com Engine Support System asyrani.com A game engine is a complex piece of software consisting of many interacting subsystems. When the engine first starts up, each subsystem must be configured and initialized

More information

ECE 7650 Scalable and Secure Internet Services and Architecture ---- A Systems Perspective. Part I: Operating system overview: Memory Management

ECE 7650 Scalable and Secure Internet Services and Architecture ---- A Systems Perspective. Part I: Operating system overview: Memory Management ECE 7650 Scalable and Secure Internet Services and Architecture ---- A Systems Perspective Part I: Operating system overview: Memory Management 1 Hardware background The role of primary memory Program

More information

PROFESSOR: DR.JALILI BY: MAHDI ESHAGHI

PROFESSOR: DR.JALILI BY: MAHDI ESHAGHI PROFESSOR: DR.JALILI BY: MAHDI ESHAGHI 1 2 Overview Distributed OZ Java RMI CORBA IDL IDL VS C++ CORBA VS RMI 3 Distributed OZ Oz Language Multi paradigm language, strong support for compositionality and

More information

On Performance of Enterprise JavaBeans

On Performance of Enterprise JavaBeans On Performance of Enterprise JavaBeans Radek Pospíšil, Marek Procházka, Vladimír Mencl 1 Abstract Enterprise JavaBeans (EJB) is a new-sprung technology for Java-based distributed software components. During

More information

a process may be swapped in and out of main memory such that it occupies different regions

a process may be swapped in and out of main memory such that it occupies different regions Virtual Memory Characteristics of Paging and Segmentation A process may be broken up into pieces (pages or segments) that do not need to be located contiguously in main memory Memory references are dynamically

More information

Chapter 9: Virtual Memory

Chapter 9: Virtual Memory Chapter 9: Virtual Memory Chapter 9: Virtual Memory 9.1 Background 9.2 Demand Paging 9.3 Copy-on-Write 9.4 Page Replacement 9.5 Allocation of Frames 9.6 Thrashing 9.7 Memory-Mapped Files 9.8 Allocating

More information

COMP 346 WINTER Tutorial 2 SHARED DATA MANIPULATION AND SYNCHRONIZATION

COMP 346 WINTER Tutorial 2 SHARED DATA MANIPULATION AND SYNCHRONIZATION COMP 346 WINTER 2018 1 Tutorial 2 SHARED DATA MANIPULATION AND SYNCHRONIZATION REVIEW - MULTITHREADING MODELS 2 Some operating system provide a combined user level thread and Kernel level thread facility.

More information

CS370 Operating Systems

CS370 Operating Systems CS370 Operating Systems Colorado State University Yashwant K Malaiya Fall 2017 Lecture 23 Virtual memory Slides based on Text by Silberschatz, Galvin, Gagne Various sources 1 1 FAQ Is a page replaces when

More information

Performance comparison of DCOM, CORBA and Web service

Performance comparison of DCOM, CORBA and Web service Performance comparison of DCOM, CORBA and Web service SeongKi Kim School of Computer Science and Engineering Seoul National University, 56-1 Sinlim, Kwanak Seoul, Korea 151-742 Abstract - The distributed

More information

SFS: Random Write Considered Harmful in Solid State Drives

SFS: Random Write Considered Harmful in Solid State Drives SFS: Random Write Considered Harmful in Solid State Drives Changwoo Min 1, 2, Kangnyeon Kim 1, Hyunjin Cho 2, Sang-Won Lee 1, Young Ik Eom 1 1 Sungkyunkwan University, Korea 2 Samsung Electronics, Korea

More information

Introduction. Architecture Overview

Introduction. Architecture Overview Performance and Sizing Guide Version 17 November 2017 Contents Introduction... 5 Architecture Overview... 5 Performance and Scalability Considerations... 6 Vertical Scaling... 7 JVM Heap Sizes... 7 Hardware

More information

For use by students enrolled in #71251 CSE430 Fall 2012 at Arizona State University. Do not use if not enrolled.

For use by students enrolled in #71251 CSE430 Fall 2012 at Arizona State University. Do not use if not enrolled. Operating Systems: Internals and Design Principles Chapter 4 Threads Seventh Edition By William Stallings Operating Systems: Internals and Design Principles The basic idea is that the several components

More information

Chapter 9: Virtual Memory

Chapter 9: Virtual Memory Chapter 9: Virtual Memory Chapter 9: Virtual Memory Background Demand Paging Process Creation Page Replacement Allocation of Frames Thrashing Demand Segmentation Operating System Examples 9.2 Background

More information

CS 351 Design of Large Programs Programming Abstractions

CS 351 Design of Large Programs Programming Abstractions CS 351 Design of Large Programs Programming Abstractions Brooke Chenoweth University of New Mexico Spring 2019 Searching for the Right Abstraction The language we speak relates to the way we think. The

More information

Distributed Programming with RMI. Overview CORBA DCOM. Prepared By: Shiba R. Tamrakar

Distributed Programming with RMI. Overview CORBA DCOM. Prepared By: Shiba R. Tamrakar Distributed Programming with RMI Overview Distributed object computing extends an object-oriented programming system by allowing objects to be distributed across a heterogeneous network, so that each of

More information

OMG Real Time Workshop

OMG Real Time Workshop OMG Real Time Workshop ORB Inter-Operability Testing Traci McDonald NSWCDD Charlie Fudge NSWCDD 1 Purpose Purpose of the Presentation Present motivation for the task and a sample of the results of inter-operability

More information

Hierarchical PLABs, CLABs, TLABs in Hotspot

Hierarchical PLABs, CLABs, TLABs in Hotspot Hierarchical s, CLABs, s in Hotspot Christoph M. Kirsch ck@cs.uni-salzburg.at Hannes Payer hpayer@cs.uni-salzburg.at Harald Röck hroeck@cs.uni-salzburg.at Abstract Thread-local allocation buffers (s) are

More information

Chapter 9: Virtual Memory

Chapter 9: Virtual Memory Chapter 9: Virtual Memory Background Demand Paging Chapter 9: Virtual Memory Copy-on-Write Page Replacement Allocation of Frames Thrashing Memory-Mapped Files Allocating Kernel Memory Other Considerations

More information

Where are we in the course?

Where are we in the course? Previous Lectures Memory Management Approaches Allocate contiguous memory for the whole process Use paging (map fixed size logical pages to physical frames) Use segmentation (user s view of address space

More information

Fall COMP3511 Review

Fall COMP3511 Review Outline Fall 2015 - COMP3511 Review Monitor Deadlock and Banker Algorithm Paging and Segmentation Page Replacement Algorithms and Working-set Model File Allocation Disk Scheduling Review.2 Monitors Condition

More information

Process size is independent of the main memory present in the system.

Process size is independent of the main memory present in the system. Hardware control structure Two characteristics are key to paging and segmentation: 1. All memory references are logical addresses within a process which are dynamically converted into physical at run time.

More information

Implementation of Process Networks in Java

Implementation of Process Networks in Java Implementation of Process Networks in Java Richard S, Stevens 1, Marlene Wan, Peggy Laramie, Thomas M. Parks, Edward A. Lee DRAFT: 10 July 1997 Abstract A process network, as described by G. Kahn, is a

More information

AN EMPIRICAL STUDY OF EFFICIENCY IN DISTRIBUTED PARALLEL PROCESSING

AN EMPIRICAL STUDY OF EFFICIENCY IN DISTRIBUTED PARALLEL PROCESSING AN EMPIRICAL STUDY OF EFFICIENCY IN DISTRIBUTED PARALLEL PROCESSING DR. ROGER EGGEN Department of Computer and Information Sciences University of North Florida Jacksonville, Florida 32224 USA ree@unf.edu

More information

TIBCO BusinessEvents Extreme. System Sizing Guide. Software Release Published May 27, 2012

TIBCO BusinessEvents Extreme. System Sizing Guide. Software Release Published May 27, 2012 TIBCO BusinessEvents Extreme System Sizing Guide Software Release 1.0.0 Published May 27, 2012 Important Information SOME TIBCO SOFTWARE EMBEDS OR BUNDLES OTHER TIBCO SOFTWARE. USE OF SUCH EMBEDDED OR

More information

Current Trends in Middleware Benchmarking

Current Trends in Middleware Benchmarking Current Trends in Middleware Benchmarking L. Bulej, P. T ma Charles University Prague, Faculty of Mathematics and Physics, Prague, Czech Republic. Abstract. The paper provides a brief overview of the state

More information

Lesson 1: Using Task Manager

Lesson 1: Using Task Manager 19-2 Chapter 19 Monitoring and Optimizing System Performance Lesson 1: Using Task Manager Task Manager provides information about the programs and processes running on your computer and the performance

More information

Virtual Memory Management

Virtual Memory Management Virtual Memory Management CS-3013 Operating Systems Hugh C. Lauer (Slides include materials from Slides include materials from Modern Operating Systems, 3 rd ed., by Andrew Tanenbaum and from Operating

More information

Performance Evaluation of Computer Systems Course Overview

Performance Evaluation of Computer Systems Course Overview Performance Evaluation of Computer Systems Course Overview Vlastimil Babka, Lubomír Bulej Tomáš Kalibera, Peter Libič Petr Tůma FACULTY OF MATHEMATICS AND PHYSICS CHARLES UNIVERSITY IN PRAGUE Performance

More information

First-In-First-Out (FIFO) Algorithm

First-In-First-Out (FIFO) Algorithm First-In-First-Out (FIFO) Algorithm Reference string: 7,0,1,2,0,3,0,4,2,3,0,3,0,3,2,1,2,0,1,7,0,1 3 frames (3 pages can be in memory at a time per process) 15 page faults Can vary by reference string:

More information

Transaction Commit Options

Transaction Commit Options Transaction Commit Options Entity beans in the EJB container of Borland Enterprise Server by Jonathan Weedon, Architect: Borland VisiBroker and Borland AppServer, and Krishnan Subramanian, Enterprise Consultant

More information

Univariate Statistics Summary

Univariate Statistics Summary Further Maths Univariate Statistics Summary Types of Data Data can be classified as categorical or numerical. Categorical data are observations or records that are arranged according to category. For example:

More information

OPERATING SYSTEM. Chapter 9: Virtual Memory

OPERATING SYSTEM. Chapter 9: Virtual Memory OPERATING SYSTEM Chapter 9: Virtual Memory Chapter 9: Virtual Memory Background Demand Paging Copy-on-Write Page Replacement Allocation of Frames Thrashing Memory-Mapped Files Allocating Kernel Memory

More information

Chapter 9: Virtual Memory. Chapter 9: Virtual Memory. Objectives. Background. Virtual-address address Space

Chapter 9: Virtual Memory. Chapter 9: Virtual Memory. Objectives. Background. Virtual-address address Space Chapter 9: Virtual Memory Chapter 9: Virtual Memory Background Demand Paging Copy-on-Write Page Replacement Allocation of Frames Thrashing Memory-Mapped Files Allocating Kernel Memory Other Considerations

More information

CS533 Concepts of Operating Systems. Jonathan Walpole

CS533 Concepts of Operating Systems. Jonathan Walpole CS533 Concepts of Operating Systems Jonathan Walpole Lightweight Remote Procedure Call (LRPC) Overview Observations Performance analysis of RPC Lightweight RPC for local communication Performance Remote

More information

Outlook. Background Swapping Contiguous Memory Allocation Paging Structure of the Page Table Segmentation Example: The Intel Pentium

Outlook. Background Swapping Contiguous Memory Allocation Paging Structure of the Page Table Segmentation Example: The Intel Pentium Main Memory Outlook Background Swapping Contiguous Memory Allocation Paging Structure of the Page Table Segmentation Example: The Intel Pentium 2 Backgound Background So far we considered how to share

More information

Chapter 9: Virtual Memory

Chapter 9: Virtual Memory Chapter 9: Virtual Memory Chapter 9: Virtual Memory Background Demand Paging Copy-on-Write Page Replacement Allocation of Frames Thrashing Memory-Mapped Files Allocating Kernel Memory Other Considerations

More information

Today s class. Scheduling. Informationsteknologi. Tuesday, October 9, 2007 Computer Systems/Operating Systems - Class 14 1

Today s class. Scheduling. Informationsteknologi. Tuesday, October 9, 2007 Computer Systems/Operating Systems - Class 14 1 Today s class Scheduling Tuesday, October 9, 2007 Computer Systems/Operating Systems - Class 14 1 Aim of Scheduling Assign processes to be executed by the processor(s) Need to meet system objectives regarding:

More information

Measuring the Processing Performance of NetSniff

Measuring the Processing Performance of NetSniff Measuring the Processing Performance of NetSniff Julie-Anne Bussiere *, Jason But Centre for Advanced Internet Architectures. Technical Report 050823A Swinburne University of Technology Melbourne, Australia

More information

CS307: Operating Systems

CS307: Operating Systems CS307: Operating Systems Chentao Wu 吴晨涛 Associate Professor Dept. of Computer Science and Engineering Shanghai Jiao Tong University SEIEE Building 3-513 wuct@cs.sjtu.edu.cn Download Lectures ftp://public.sjtu.edu.cn

More information

Distributed Computing

Distributed Computing Distributed Computing 1 Why distributed systems: Benefits & Challenges The Sydney Olympic game system: see text page 29-30 Divide-and-conquer Interacting autonomous systems Concurrencies Transactions 2

More information

Virtual Memory Outline

Virtual Memory Outline Virtual Memory Outline Background Demand Paging Copy-on-Write Page Replacement Allocation of Frames Thrashing Memory-Mapped Files Allocating Kernel Memory Other Considerations Operating-System Examples

More information

Performance Analysis of a Call Center Telecommunications Interface. CS672 Spring 2004 Mohamed Benalayat Raymond Jordan

Performance Analysis of a Call Center Telecommunications Interface. CS672 Spring 2004 Mohamed Benalayat Raymond Jordan Performance Analysis of a Call Center Telecommunications Interface CS672 Spring 2004 Mohamed Benalayat Raymond Jordan Overview Call center monitoring and recording systems allow corporations to monitor

More information

TIBCO ActiveSpaces Transactions. System Sizing Guide. Software Release Published February 15, 2017

TIBCO ActiveSpaces Transactions. System Sizing Guide. Software Release Published February 15, 2017 TIBCO ActiveSpaces Transactions System Sizing Guide Software Release 2.5.6 Published February 15, 2017 Important Information SOME TIBCO SOFTWARE EMBEDS OR BUNDLES OTHER TIBCO SOFTWARE. USE OF SUCH EMBEDDED

More information

Supra-linear Packet Processing Performance with Intel Multi-core Processors

Supra-linear Packet Processing Performance with Intel Multi-core Processors White Paper Dual-Core Intel Xeon Processor LV 2.0 GHz Communications and Networking Applications Supra-linear Packet Processing Performance with Intel Multi-core Processors 1 Executive Summary Advances

More information

CS370 Operating Systems

CS370 Operating Systems CS370 Operating Systems Colorado State University Yashwant K Malaiya Spring 2018 L20 Virtual Memory Slides based on Text by Silberschatz, Galvin, Gagne Various sources 1 1 Questions from last time Page

More information

TIBCO BusinessEvents Extreme. System Sizing Guide. Software Release Published February 17, 2015

TIBCO BusinessEvents Extreme. System Sizing Guide. Software Release Published February 17, 2015 TIBCO BusinessEvents Extreme System Sizing Guide Software Release 1.2.1 Published February 17, 2015 Important Information SOME TIBCO SOFTWARE EMBEDS OR BUNDLES OTHER TIBCO SOFTWARE. USE OF SUCH EMBEDDED

More information

CSE 410 Final Exam 6/09/09. Suppose we have a memory and a direct-mapped cache with the following characteristics.

CSE 410 Final Exam 6/09/09. Suppose we have a memory and a direct-mapped cache with the following characteristics. Question 1. (10 points) (Caches) Suppose we have a memory and a direct-mapped cache with the following characteristics. Memory is byte addressable Memory addresses are 16 bits (i.e., the total memory size

More information

Design and Performance of an Asynchronous Method handling Mechanism for CORBA

Design and Performance of an Asynchronous Method handling Mechanism for CORBA Design and Performance of an Asynchronous Method handling Mechanism for CORBA Mayur Deshpande, Douglas C. Schmidt & Carlos O Ryan {deshpanm,schmidt,coryan}@uci.edu Department of Electrical & Computer Engineering

More information

CS24: INTRODUCTION TO COMPUTING SYSTEMS. Spring 2015 Lecture 23

CS24: INTRODUCTION TO COMPUTING SYSTEMS. Spring 2015 Lecture 23 CS24: INTRODUCTION TO COMPUTING SYSTEMS Spring 205 Lecture 23 LAST TIME: VIRTUAL MEMORY! Began to focus on how to virtualize memory! Instead of directly addressing physical memory, introduce a level of

More information

Chapter 9: Virtual-Memory

Chapter 9: Virtual-Memory Chapter 9: Virtual-Memory Management Chapter 9: Virtual-Memory Management Background Demand Paging Page Replacement Allocation of Frames Thrashing Other Considerations Silberschatz, Galvin and Gagne 2013

More information

short long double char octet struct Throughput in Mbps Sender Buffer size in KBytes short long double char octet struct

short long double char octet struct Throughput in Mbps Sender Buffer size in KBytes short long double char octet struct Motivation Optimizations for High Performance ORBs Douglas C. Schmidt (www.cs.wustl.edu/schmidt) Aniruddha S. Gokhale (www.cs.wustl.edu/gokhale) Washington University, St. Louis, USA. Typical state of

More information

Process- Concept &Process Scheduling OPERATING SYSTEMS

Process- Concept &Process Scheduling OPERATING SYSTEMS OPERATING SYSTEMS Prescribed Text Book Operating System Principles, Seventh Edition By Abraham Silberschatz, Peter Baer Galvin and Greg Gagne PROCESS MANAGEMENT Current day computer systems allow multiple

More information

Best Practices for Setting BIOS Parameters for Performance

Best Practices for Setting BIOS Parameters for Performance White Paper Best Practices for Setting BIOS Parameters for Performance Cisco UCS E5-based M3 Servers May 2013 2014 Cisco and/or its affiliates. All rights reserved. This document is Cisco Public. Page

More information

Threads and Too Much Milk! CS439: Principles of Computer Systems January 31, 2018

Threads and Too Much Milk! CS439: Principles of Computer Systems January 31, 2018 Threads and Too Much Milk! CS439: Principles of Computer Systems January 31, 2018 Last Time CPU Scheduling discussed the possible policies the scheduler may use to choose the next process (or thread!)

More information

Arachne. Core Aware Thread Management Henry Qin Jacqueline Speiser John Ousterhout

Arachne. Core Aware Thread Management Henry Qin Jacqueline Speiser John Ousterhout Arachne Core Aware Thread Management Henry Qin Jacqueline Speiser John Ousterhout Granular Computing Platform Zaharia Winstein Levis Applications Kozyrakis Cluster Scheduling Ousterhout Low-Latency RPC

More information

CORBA (Common Object Request Broker Architecture)

CORBA (Common Object Request Broker Architecture) CORBA (Common Object Request Broker Architecture) René de Vries (rgv@cs.ru.nl) Based on slides by M.L. Liu 1 Overview Introduction / context Genealogical of CORBA CORBA architecture Implementations Corba

More information

Technical Specification MEF 27. Abstract Test Suite For. May 20 th, 2010

Technical Specification MEF 27. Abstract Test Suite For. May 20 th, 2010 Technical Specification Abstract Test Suite For UNI Type 2 Part 5: Enhanced UNI Attributes & Part 6: L2CP Handling May 20 th, 2010 of the information contained herein. Page 1 Disclaimer The information

More information

Enemy Territory Traffic Analysis

Enemy Territory Traffic Analysis Enemy Territory Traffic Analysis Julie-Anne Bussiere *, Sebastian Zander Centre for Advanced Internet Architectures. Technical Report 00203A Swinburne University of Technology Melbourne, Australia julie-anne.bussiere@laposte.net,

More information

CS 333 Introduction to Operating Systems. Class 14 Page Replacement. Jonathan Walpole Computer Science Portland State University

CS 333 Introduction to Operating Systems. Class 14 Page Replacement. Jonathan Walpole Computer Science Portland State University CS 333 Introduction to Operating Systems Class 14 Page Replacement Jonathan Walpole Computer Science Portland State University Page replacement Assume a normal page table (e.g., BLITZ) User-program is

More information

CS 333 Introduction to Operating Systems. Class 14 Page Replacement. Jonathan Walpole Computer Science Portland State University

CS 333 Introduction to Operating Systems. Class 14 Page Replacement. Jonathan Walpole Computer Science Portland State University CS 333 Introduction to Operating Systems Class 14 Page Replacement Jonathan Walpole Computer Science Portland State University Page replacement Assume a normal page table (e.g., BLITZ) User-program is

More information

Parallel Programming Languages COMP360

Parallel Programming Languages COMP360 Parallel Programming Languages COMP360 The way the processor industry is going, is to add more and more cores, but nobody knows how to program those things. I mean, two, yeah; four, not really; eight,

More information

Four Components of a Computer System

Four Components of a Computer System Four Components of a Computer System Operating System Concepts Essentials 2nd Edition 1.1 Silberschatz, Galvin and Gagne 2013 Operating System Definition OS is a resource allocator Manages all resources

More information

Software Paradigms (Lesson 10) Selected Topics in Software Architecture

Software Paradigms (Lesson 10) Selected Topics in Software Architecture Software Paradigms (Lesson 10) Selected Topics in Software Architecture Table of Contents 1 World-Wide-Web... 2 1.1 Basic Architectural Solution... 2 1.2 Designing WWW Applications... 7 2 CORBA... 11 2.1

More information

CS6401- Operating System UNIT-III STORAGE MANAGEMENT

CS6401- Operating System UNIT-III STORAGE MANAGEMENT UNIT-III STORAGE MANAGEMENT Memory Management: Background In general, to rum a program, it must be brought into memory. Input queue collection of processes on the disk that are waiting to be brought into

More information

2017 Paul Krzyzanowski 1

2017 Paul Krzyzanowski 1 Question 1 What problem can arise with a system that exhibits fail-restart behavior? Distributed Systems 06. Exam 1 Review Stale state: the system has an outdated view of the world when it starts up. Not:

More information

File Systems: Interface and Implementation

File Systems: Interface and Implementation File Systems: Interface and Implementation CSCI 315 Operating Systems Design Department of Computer Science File System Topics File Concept Access Methods Directory Structure File System Mounting File

More information

File Systems: Interface and Implementation

File Systems: Interface and Implementation File Systems: Interface and Implementation CSCI 315 Operating Systems Design Department of Computer Science Notice: The slides for this lecture have been largely based on those from an earlier edition

More information

The Operating System. Chapter 6

The Operating System. Chapter 6 The Operating System Machine Level Chapter 6 1 Contemporary Multilevel Machines A six-level l computer. The support method for each level is indicated below it.2 Operating System Machine a) Operating System

More information

Threads and Too Much Milk! CS439: Principles of Computer Systems February 6, 2019

Threads and Too Much Milk! CS439: Principles of Computer Systems February 6, 2019 Threads and Too Much Milk! CS439: Principles of Computer Systems February 6, 2019 Bringing It Together OS has three hats: What are they? Processes help with one? two? three? of those hats OS protects itself

More information

CHAPTER 6 Memory. CMPS375 Class Notes (Chap06) Page 1 / 20 Dr. Kuo-pao Yang

CHAPTER 6 Memory. CMPS375 Class Notes (Chap06) Page 1 / 20 Dr. Kuo-pao Yang CHAPTER 6 Memory 6.1 Memory 341 6.2 Types of Memory 341 6.3 The Memory Hierarchy 343 6.3.1 Locality of Reference 346 6.4 Cache Memory 347 6.4.1 Cache Mapping Schemes 349 6.4.2 Replacement Policies 365

More information

Concurrent Objects and Linearizability

Concurrent Objects and Linearizability Chapter 3 Concurrent Objects and Linearizability 3.1 Specifying Objects An object in languages such as Java and C++ is a container for data. Each object provides a set of methods that are the only way

More information

Real-time CORBA Trade Study Volume 2 Basic IDL Scenario 1a

Real-time CORBA Trade Study Volume 2 Basic IDL Scenario 1a CAGE Code 81205 Real-time CORBA Trade Study Volume 2 Basic IDL Scenario 1a DOCUMENT NUMBER: RELEASE/REVISION: RELEASE/REVISION DATE: D204-31159-2 ORIG CONTENT OWNER: Phantom Works Advanced Information

More information

Operating System. Operating System Overview. Structure of a Computer System. Structure of a Computer System. Structure of a Computer System

Operating System. Operating System Overview. Structure of a Computer System. Structure of a Computer System. Structure of a Computer System Overview Chapter 1.5 1.9 A program that controls execution of applications The resource manager An interface between applications and hardware The extended machine 1 2 Structure of a Computer System Structure

More information

Virtual Memory. Reading: Silberschatz chapter 10 Reading: Stallings. chapter 8 EEL 358

Virtual Memory. Reading: Silberschatz chapter 10 Reading: Stallings. chapter 8 EEL 358 Virtual Memory Reading: Silberschatz chapter 10 Reading: Stallings chapter 8 1 Outline Introduction Advantages Thrashing Principal of Locality VM based on Paging/Segmentation Combined Paging and Segmentation

More information

Chapter 8. Operating System Support. Yonsei University

Chapter 8. Operating System Support. Yonsei University Chapter 8 Operating System Support Contents Operating System Overview Scheduling Memory Management Pentium II and PowerPC Memory Management 8-2 OS Objectives & Functions OS is a program that Manages the

More information

Technical Documentation Version 7.4. Performance

Technical Documentation Version 7.4. Performance Technical Documentation Version 7.4 These documents are copyrighted by the Regents of the University of Colorado. No part of this document may be reproduced, stored in a retrieval system, or transmitted

More information

INSTITUTE OF AERONAUTICAL ENGINEERING (Autonomous) Dundigal, Hyderabad

INSTITUTE OF AERONAUTICAL ENGINEERING (Autonomous) Dundigal, Hyderabad Course Name Course Code Class Branch INSTITUTE OF AERONAUTICAL ENGINEERING (Autonomous) Dundigal, Hyderabad -500 043 COMPUTER SCIENCE AND ENGINEERING TUTORIAL QUESTION BANK 2015-2016 : DISTRIBUTED SYSTEMS

More information

Recommendations for a CORBA Language Mapping for RTSJ

Recommendations for a CORBA Language Mapping for RTSJ CORBA Language Mapping Victor Giddings Objective Interface Systems victor.giddings@ois.com Outline Real-time Specification for Java Background Memory Management Thread Types Thread Priorities IDL to RTSJ

More information

FlukeView Forms. Documenting Software. Getting Started

FlukeView Forms. Documenting Software. Getting Started FlukeView Forms Documenting Software Getting Started PN 1574021 September 2000 2000 Fluke Corporation. All rights reserved. Printed in USA All product names are trademarks of their respective companies.

More information

Chapter 13: I/O Systems

Chapter 13: I/O Systems Chapter 13: I/O Systems DM510-14 Chapter 13: I/O Systems I/O Hardware Application I/O Interface Kernel I/O Subsystem Transforming I/O Requests to Hardware Operations STREAMS Performance 13.2 Objectives

More information

Chapter 10: Virtual Memory. Background

Chapter 10: Virtual Memory. Background Chapter 10: Virtual Memory Background Demand Paging Process Creation Page Replacement Allocation of Frames Thrashing Operating System Examples 10.1 Background Virtual memory separation of user logical

More information

Migrating IONA Orbix 3 Applications

Migrating IONA Orbix 3 Applications Migrating IONA Orbix 3 Applications Contrasting the migration path of Orbix 3 applications to Orbix 2000 and to Borland Enterprise Server, VisiBroker Edition by Will Edwards, Senior Consultant, The New

More information

CS370 Operating Systems

CS370 Operating Systems CS370 Operating Systems Colorado State University Yashwant K Malaiya Fall 2016 Lecture 2 Slides based on Text by Silberschatz, Galvin, Gagne Various sources 1 1 2 System I/O System I/O (Chap 13) Central

More information

Chapter 05. Authors: John Hennessy & David Patterson. Copyright 2011, Elsevier Inc. All rights Reserved. 1

Chapter 05. Authors: John Hennessy & David Patterson. Copyright 2011, Elsevier Inc. All rights Reserved. 1 Chapter 05 Authors: John Hennessy & David Patterson Copyright 2011, Elsevier Inc. All rights Reserved. 1 Figure 5.1 Basic structure of a centralized shared-memory multiprocessor based on a multicore chip.

More information

JPDM, A Structured approach To Performance Tuning. Copyright 2017 Kirk Pepperdine. All rights reserved

JPDM, A Structured approach To Performance Tuning. Copyright 2017 Kirk Pepperdine. All rights reserved JPDM, A Structured approach To Performance Tuning About Us Performance Consulting Java Performance Tuning Workshops Co-Founded jclarity Disclaimer Our Typical Customer Application isn t performing to project

More information

Impact of Dell FlexMem Bridge on Microsoft SQL Server Database Performance

Impact of Dell FlexMem Bridge on Microsoft SQL Server Database Performance Impact of Dell FlexMem Bridge on Microsoft SQL Server Database Performance A Dell Technical White Paper Dell Database Solutions Engineering Jisha J Leena Basanthi October 2010 THIS WHITE PAPER IS FOR INFORMATIONAL

More information

WebSphere Application Server Base Performance

WebSphere Application Server Base Performance WebSphere Application Server Base Performance ii WebSphere Application Server Base Performance Contents WebSphere Application Server Base Performance............. 1 Introduction to the WebSphere Application

More information

Chapter 8: Memory-Management Strategies

Chapter 8: Memory-Management Strategies Chapter 8: Memory-Management Strategies Chapter 8: Memory Management Strategies Background Swapping Contiguous Memory Allocation Segmentation Paging Structure of the Page Table Example: The Intel 32 and

More information

Converged Network Analyzer Command Reference Guide Addendum

Converged Network Analyzer Command Reference Guide Addendum Converged Network Analyzer Command Reference Guide Addendum for the Converged Network Analyzer (CNA), Adaptive Path Controller-Enterprise (APC-E), Adaptive Path Controller-Internet (APC-I), and the CNA

More information