Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Optimized Tracing and Restoring Replay Support #261

merged 16 commits into from Jul 23, 2018


2 participants
Copy link

commented Jul 23, 2018

This PR contains the second half of the changes to the tracing implementation.
The changes include a move away from ByteBuffer, instead byte arrays and unsafe are used.
Furthermore, Truffle Nodes are used for tracing to achieve lower overhead.

daumayr and others added some commits Jul 23, 2018

Prototype for TraceActorCreation node
Don’t write currentActor in every actorContext recording

This seems just in the wrong place, and just writes itself, even if not necessary.

Signed-off-by: Stefan Marr <>
Add second node for TraceActorContext
This one is needed for all buffer changes

Remove recordActorCreation, was replaced by node

Signed-off-by: Stefan Marr <>
Remove message tracing intro truffle method to enable specialization
Reduce code duplication in received message handling

Move more of the old tracing also intro the received call targets

Factor our redundant code

Signed-off-by: Stefan Marr <>
Add node suffix to node classes for consistency
Signed-off-by: Stefan Marr <>
Added separate nodes to record ids
This avoids many recurring specializations in the tracing nodes we need.

Signed-off-by: Stefan Marr <>
Refactor tracing nodes to use id nodes
[Fix] id tracing, remove unneeded code

Signed-off-by: Stefan Marr <>
Turn message tracing into node
Signed-off-by: Stefan Marr <>
Add support for statistics on tracing
Signed-off-by: Stefan Marr <>
Don’t trace actor context twice on buffer swap
Signed-off-by: Stefan Marr <>
Remove extra indirection of byte buffer
ByteBuffer didn’t do much useful things, and cost another indirection for tracing. Let’s see whether this makes any difference.

Signed-off-by: Stefan Marr <>
@@ -302,9 +302,6 @@ private void execute(final EventualMessage msg,
if (VmSettings.KOMPOS_TRACING) {
if (VmSettings.ACTOR_TRACING) {

This comment has been minimized.

Copy link

smarr Jul 23, 2018


Is this removal correct?

This comment has been minimized.

Copy link

daumayr Jul 23, 2018

Author Contributor

yes, messages are now traced in ReceivedRootNode.

@smarr smarr force-pushed the daumayr:Tracing-and-Replay-Infrastructure branch from 109d8d8 to a1479ab Jul 23, 2018

@smarr smarr added this to the v0.7.0 milestone Jul 23, 2018

@smarr smarr added this to To Do in Actor Record & Replay via automation Jul 23, 2018

@smarr smarr added the enhancement label Jul 23, 2018


smarr approved these changes Jul 23, 2018

Copy link

left a comment

Thank you.
Looks good to me.

Will merge once the benchmarks completed.

@smarr smarr changed the title Tracing and replay infrastructure Optimized Tracing and Restoring Replay Support Jul 23, 2018

@smarr smarr merged commit 4f4f693 into smarr:dev Jul 23, 2018

1 of 2 checks passed

continuous-integration/travis-ci/pr The Travis CI build failed
Codacy/PR Quality Review Up to standards. A positive pull request.

Actor Record & Replay automation moved this from To Do to Done Jul 23, 2018

@daumayr daumayr deleted the daumayr:Tracing-and-Replay-Infrastructure branch Jul 24, 2018

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.