Proposal for Thread Benchmark [TBM] Package

Rationale

Java is being used a great deal in servlet containers such as Tomcat which make heavy use of threads. Synchronization bottlenecks in a threaded java application can adversely impact scaling and performance.

For example. The existing Java classes in java.util, java.text, and java.sql which are used to represent and manipulate Date and Time have a large number of synchronization bottlenecks. This can have an adverse affect on performance for applications which run in a Servlet Container such as Tomcat. Many Jakarta projects are used within an application server and may cause synchronization bottlenecks if they use these Date and Time classes.

The impact of these synchronization bottlenecks is very system dependent. Hardware, number of CPU's, operating system, and the version of the JVM being used can all affect the magnitude of the problem.

A package which makes it easy to perform benchmark tests for synchronization bottlenecks will make it easier for software developers to identify threading bottlenecks and test alternative solutions.

Scope of the Package

The package will provide a simple test framework for testing java code for synchronization bottlenecks. Ant tasks will be provided to make performing test easier.

Documentation and test cases will be developed for java classes which have been identified as having thread synchronization bottlenecks. Test cases for example work arounds or alternatives will also be provided and documented.

Java classes which make implementing solutions and work arounds to thread bottlenecks may end up becoming a part of this project.

Interaction With Other Packages

TBM relies on:

More packages will be used as they are incorporated into test cases.

Initial Source of the Package

The initial codebase was contributed by Glenn Nielsen under the Apache Software Foundation License.

The proposed package name for the new component is org.apache.commons.tbm.

Required Jakarta-Commons Resources

Initial Committers