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

Possible Startup Performance Regression introduced with PR#271 #273

Open
daumayr opened this issue Oct 15, 2018 · 4 comments
Open

Possible Startup Performance Regression introduced with PR#271 #273

daumayr opened this issue Oct 15, 2018 · 4 comments
Labels
help wanted Would be great if you could help out here. remember
Milestone

Comments

@daumayr
Copy link
Contributor

daumayr commented Oct 15, 2018

#271 prepares for actor snapshots by introducing serialisation, the new features are hidden behind VM flags and should not affect performance when unused.
Benchmarks for #271 reliably showed 8-9% increased average startup time for SOMns-graal with the List benchmark. Startup times for this benchmark have a high variation even on dev (317ms - 440ms), which is worse after #271 (325ms - 560ms).
The exact cause for this increase in startup performance is currently unknown and might be related to the introduction of new fields. The new fields can alter the memory layout and therefore allocations, GC behavior, etc.

@smarr smarr changed the title Possible Performance Regression in PR#271 Possible Startup Performance Regression introduced with PR#271 Oct 15, 2018
@smarr smarr added help wanted Would be great if you could help out here. remember labels Oct 15, 2018
@smarr smarr added this to the later milestone Oct 15, 2018
@smarr
Copy link
Owner

smarr commented Oct 16, 2018

Still looks like some serious regressions on startup across the board.

http://somns-speed.stefan-marr.de/changes/?tre=10&rev=64b49619a46547e421ab8c14576e4be2cf34d2bc&exe=14&env=1

@daumayr
Copy link
Contributor Author

daumayr commented Oct 16, 2018

Hm, on my machine things looked better. By increasing the number of invocations we would get a more reliable picture, currently it's the average of three starts.

@daumayr
Copy link
Contributor Author

daumayr commented Oct 17, 2018

If additionals fields are the cause for performance regressions, we might want to consider using bytecode transformations to insert the fields only when we need them (i.e. tracing).

@smarr
Copy link
Owner

smarr commented Oct 17, 2018

I would like to avoid the extra complexity of bytecode transformation. It would mean we need to start maintaining extra tooling, something that smells like a language extension. Not sure that would be worth the effort.

Also, we still haven't confirmed what the actual cause is.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Would be great if you could help out here. remember
Projects
None yet
Development

No branches or pull requests

2 participants