Abstract:
Without a doubt Java is one of the most popular programming languages and is widely used to develop software for many different platforms and devices and there is ongoing research as to how well all these applications that use Java will perform. Some research focuses on the effect the continuing use of Java has on various hardware architectures and other research concentrates on the effect on different operating systems. The research study for this thesis reports on the effect of different scheduling policies and thread numbers and how they could possibly affect the performance of multi-threaded Java applications on Linux as a new thread pool for ParaTask is implemented. In the first part of the thesis, the performance difference is examined between placing several Java applications into the same scheduling group versus distributing them separately on different scheduling groups. Then, a similar evaluation is performed using different thread numbers for each Java application. The semantics and implementations of dynamic thread pool for the ParaTask library are addressed in the second part. Finally, the performance is examined in several different ways in order to analyze the newly implemented ParaTask thread pool. Several key contributions are created during this process, including: (1) it is proved that separating Java applications into different scheduling groups benefits each and every one of the applications more than simply grouping them together; and using fewer threads in a heavily loaded system has some advantages. (2) A more powerful thread pool is implemented without introducing too much overhead into the library; and the performance for the new ParaTask is proven to be as good as other parallelization types.