Objective

To analyze the performance of the current state of the Objive Hive/Bee framework in order to determine where performance improvements may be made. This framework is used in systems that are required to handle large amounts of simultaneous connections and high-speed, frequent transmissions using TCP. The use of serialization in server to client communication is being studied as a potential bottleneck. Currently, clients communicate to servers by using the DataOutputStream JavaTM class to write individual pieces of data, and servers serialize Objects containing the data to be sent to clients using the ObjectOutputStream class.

The choice to use serialization has been criticized due to the opinion that the process of serialization is slow, and we seek to determine, statistically, whether this is the case.

Project Summary

As stated, the objective is to analyze the current performance of the Objive Hive/Bee framework and determine whether or not data transmission using Object serialization is a bottleneck. The experiment was set up with a common-usage scenario in mind, and fully non-serialized data transfer was implemented in a copy of the framework. Measurement statements were inserted into the two versions of the client, and a test harness was created to support clients sending multiple messages, and multiple clients doing so at the same time using Java threads. Client and server were connected via a router on a closed LAN, and initial measurements were obtained for the decided usage scenarios. This data was analyzed in order to determine how many measurements were actually needed in order to obtain a certain level of confidence in our data. Using this number, the measurements were redone and recorded. Analysis of Variation (ANOVA) was performed on the resulting data sets to determine whether there was significant variation due to actual differences, and a difference in means analysis was performed to determine what cases, if any, the actual differences applied to.

SUT/CUS

The system under test consists of two computer systems running Windows XP operating systems, connected to a household router via wired ethernet connections. One system runs the Objive Hive (server) and the other system runs the Objive Bee (client), which will communicate over the local network. The software system runs on the JavaTM runtime environment.

The component under study includes the communication portions of both the Objive Hive and the Objive Bee software packages. The specific section to be studied includes the use of serialization in communication when using TCP.

The image above depicts the current communication paths of the client/server architecture. All clients are specific instances of the Objive Bee package, and the server is a specific instance of the Objive Hive package. Clients and servers simply extend the existing functionality and handle messages and perform other functionality required by the individual application.