-
Notifications
You must be signed in to change notification settings - Fork 1
LICM getting started
The LICM ( lightweight identification of captured memory ) is a new lightweight
runtime technique to identify captured memory (memory allocated inside a transaction
that cannot escape (i.e., is captured by) its allocating transaction), for which
no STM barriers are needed.
This technique requires two new features that were not available in the Deuce
STM: 1) enhance the object model with transactional metadata; 2) additional
filtering to the standard behavior of the STM barriers.
These two features are included without any change or extension to the Deuce API and guarantying retro-compatibility with existing STMs implementations for Deuce. Moreover, it is possible to enhance any existing STM with the LICM without requiring either its recompilation or any modification to its source-code.
To run an application with an existing STM and performing the capture analysis,
you just need to include the extra system property specifying the corresponding
delegator : -Dorg.deuce.delegator=org.deuce.transaction.capmem.ContextDelegatorCapturedState
.
Furthermore, to include also arrays objects in the capture analysis you should
provide the additional parameter: -Dorg.deuce.capmem=full
. In the following we present
an example of executing Vacation instrumented by Deuce and running the LSA STM
with capture analysis.
java -javaagent:bin/deuceAgent.jar
-Dorg.deuce.delegator=org.deuce.transaction.capmem.ContextDelegatorCapturedState
-Dorg.deuce.capmem=full
jstamp.vacation.Vacation -c 8 -n 256 -q 90 -u 98 -r 262144 -t 65536
For further details you can see LICM implementation details. The poster presented in PPoPP13 gives an overview about the general concepts and architecture.