-
Notifications
You must be signed in to change notification settings - Fork 2.7k
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
jpa-postgresql native image size increase (on Mandrel-23.1.2.0-Final) #39674
Comments
Using the data gathered by the Mandrel CI weekly jobs (Testing Q main with Mandrel 23.1) I see that there was a change during the first week of the year that increased the total size by ~.5% and then there were two changes in early March that added another ~.2%, other than that the image gradually got bigger without any big jumps. Table with raw data
|
Now if we go even further back in time things become more concerning/interesting. Table with raw data
The most important dates, i.e. the ones resulting in > 1% increase that don't seem to be fixed/reverted yet (accounting for major Mandrel changes like a new release) appear to be:
The unstable period between mid June and late July in 2023 is also interesting. Unfortunately for the period between 2023-07-28 and 2023-11-10 we don't have enough data from the nightly builds, but based on the weekly builds the main increase appears to have happened between 2023-07-28 and 2023-09-08:
Unfortunately, by just looking at these data it's not possible to tell in which case the increase comes from a Mandrel change or a Quarkus change, but at least they narrow down the search area. Edit: Filtered the data to only keep nightly runs without overlapping Mandrel versions (for periods during which we were testing with two Mandrel versions). |
The 2023-11-23 increase seems to be caused by #35113 |
The 2023-02-24 increase seems to be caused by #31235 (which includes 83 commits and makes it hard to see if it's caused by the bump, or some specific change) |
The 2023-11-29 increase seems to be caused by:
|
We now see an increase again for this tested app. We are now at an image size of
See: https://github.com/graalvm/mandrel/actions/runs/8856285533/job/24322835033#step:12:658 |
Describe the bug
#39615 triggered a bit of an analysis since the
ImageMetricsITCase.verifyImageMetrics
test was failing. As it turns out that PR wasn't the culprit, but just so happens to push the reflective types value over the edge. This isn't very satisfying as it would be better to have actual failures when regressions happen.Anyway, since commit 612d816 which introduced per GraalVM version metric thresholds (done on Nov 28, 2023) to commit e7f2a1e (done on Mar 25, 2024) we see an image size increase from
80.31MB
to81.05MB
even though the same Mandrel version -Mandrel-23.1.2.0-Final
- is being used for the same applicationintegration-tests/jpa-postrgesql
. It doesn't seem a lot, but this is a death by a thousand cuts problem.Looking at some properties we see a couple of changes in reachability data and resulting code area and image heap sizes:
Before
Commit: 612d816
Build output json:
After
Commit: e7f2a1e
Build output json:
So in this case we went from
6156
to6228
reflectively reachable types and from63380
to63944
compilation units. More analysis needed to find the worst offenders.How to Reproduce?
Build mentioned quarkus revisions and then the
integration-tests/jpa-postrgesql
app natively on Linux withMandrel-23.1.2.0-Final
.Output of
uname -a
orver
Linux x86_64
The text was updated successfully, but these errors were encountered: