Using Machine Learning to Optimise Managed Workload Execution on Multicore Hardware




Modern multicore processors offer a large number of processing cores. These large numbers of cores need an ample amount of main memory to perform useful work. Traditional memory consisting of DRAM is facing scaling limitations. Emerging phase-change memory (PCM) is more scalable than traditional DRAM, and also offers energy efficiency and non-volatility. Unfortunately, unlike DRAM, PCM wears out over time. Memory wear-out impacts its lifetime relative to the rest of the system.
Managed workloads such as those written in Java, require extensive tuning for optimal execution on traditional hardware. An increasing number of cores and new memory technologies complicates the optimization challenge even further. For example, for a given processor, how many mutator and garbage collection threads result in optimal performance for a single Java program? What is the (optimal) maximum heap size? How should the different heap regions be sized? Modern processors rarely execute a single program. Multi-programmed workloads are a reality that adds yet another layer of complication. How many co-running programs can the processor optimally support? What are the implications of setting the various Java-sepecific heuristics on memory wear-out? 
To answer the above questions, in this project, we investigate how best to execute a managed workload consisting of several Java applications on multicore processors with hybrid memory consisting of DRAM and PCM. We care about two critical metrics: total system throughput and main memory lifetime. Due to the enormous space of possible executions on a large multicore with different types of memory, we would like to explore a machine learning approach.


Our goal is to obtain the best throughput for a Java workload while maximizing the use of hybrid memory. We expect the student to perform the following tasks:

(1) To understand the various tunable parameters for running Java programs on a multicore processor with hybrid memory;
(2) To understand how Java workloads interact with hardware consisting of multicore processors and hybrid memory;
(3) To perform a range of experimental sensitivity studies to report the runtime parameters and heuristics that impacts performance and memory efficiency the most;
(4) To build a machine learning model to predict the performance and memory efficiency of Java workloads for a given architecture.


We expect the student to demonstrate with a working prototype that the machine learning model can guide the execution of Java workloads and optimize both the performance and memory efficiency.


The student will gain an understanding of applying machine learning to optimize emerging computer systems. The student will also learn about experimental design, performance measurement and evaluation, and modern runtime environements.


Machine learning

Performance evaluation


Java programming language

Memory system

Updated:  1 June 2019/Responsible Officer:  Dean, CECS/Page Contact:  CECS Marketing