Master Theses at Oracle in 2018
As part of an on-going collaboration with Oracle, they are offering master thesis work for CS master students and IT civil engineering students at Uppsala University. These are carried out at the Oracle offices in Stockholm, where the Java VM is built, and supervised by members of the JVM team. I am the academic partner and will serve as the reviewer for these theses. If you are a student at UU and interested in these theses subjects, you should contact me.
Thesis 1: NUMA support for G1
On multi-socket systems memory access time depends on the memory location relative to the processor (locality group): "closer" memory access latency is significantly smaller than memory that is located with a different processor. Currently G1 does not exploit this by improving or at least keeping access locality the same.
Tentative goals:
- implement the common heuristics used in literature that keeps objects in the same locality group as long as possible: a) let G1 keep data in the same locality group in the young generation and try to evenly spread data across locality groups in old generation; try to keep locality in both young and old generation
- measure the impact of these strategies across a set of industry benchmarks
- analyze other areas in
e garbage collector that might benefit from NUMA awareness and potentially suggest changes.
See also JEP 157 for more information.
Thesis 2: Throughput barrier
G1 is an incremental, generational garbage collector. It stores the remembered sets that allow incremental evacuation as plain sets of cards for all regions. This is different to other (non-incremental) generational collectors (like Parallel GC) that use a card table. The latter has shown to have clear advantages in throughput at the cost of latency.
A hybrid approach for storing remembered sets in G1, using a card table for the young generation like Parallel GC and the existing set-of-card approach for the old generation areas may exhibit a very good trade-off between throughput and latency.
Tentative goals:
- Implement and explore a throughput-optimized mode for the G1 garbage collector to improve throughput on certain workloads that are not very latency sensitive.
- Measure the impact in throughput and latency on several industry benchmarks.
- Evaluate this trade-off to find out under which circumstances the one or other approach seems favorable.
- implement pinning of any kind of region in the G1 collector. Consider implementing techniques to mitigate wasting complete regions for a few pinned objects by allowing simple allocation into them.
- evaluate the change and compare it to the existing mechanism of providing non-moving memory
Thesis 3: Region pinning
G1 is a region-based incremental garbage collector that can evacuate (move) around objects at will. While this allows you to fight fragmentation, moving around objects does not help with interfacing with non-garbage collected code like C.
For this reason, while some C code accesses Java memory, the VM prevents the garbage collector to perform its task. This does not work well in situations where memory is already tight. One alternative approach usable with G1 would be to, instead of preventing any garbage collection work, only prevent garbage collection work for heap areas which contain Java objects that are currently in use with native code.
Tentative goals: