This repository contains the configuration files and raw running script result files from my 2022 summer project on 'Evaluating Barrier Behaviour in a Modern JVM' (supervised by Professor Steve Blackburn).
These are the instructions for the refined measurement framework that I used for this project. It requires a full and correct implementation of the barrier that is being measured in MMTk. Here, we will use the object barrier, which is already implemented in the MMTk:
- Set up running-ng using the instructions on https://anupli.github.io/running-ng/.
- Set up the OpenJDK binding of MMTk using the tutorial: https://www.mmtk.io/mmtk-core/tutorial/preliminaries/set_up.html. Make sure to set the path to the mmtk-core repo.
- Navigate to mmtk-core/src/plan/generational/mod.rs.
- Set
FULL_NURSERY_GC
totrue
(L40) andACTIVE_BARRIER
toBarrierSelector::NoBarrier
(L38). Produce an MMTk build using the tutorial instructions in step 2 and rename the build tono-bar
. - Keep
FULL_NURSERY_GC
astrue
(L40) and changeACTIVE_BARRIER
toBarrierSelector::ObjectBarrier
(L38). Produce an MMTk build using the tutorial instructions in step 2 and rename the build toob-bar
. - Use the running scripts to take the barrier measurements. A configuration file template is provided at https://github.com/clairexhuang/barrier-behaviour/blob/master/measurement-template.yml.
Note: If the running scripts fail, it may be necessary to change this line https://github.com/mmtk/mmtk-core/blob/master/src/plan/generational/mod.rs#L60 to be 'if true' due to an issue with the side-metadata layout in the master branch.