Julia: system image build time regression (after new optimizer and iteration protocol)

Created on 28 Jul 2017  路  11Comments  路  Source: JuliaLang/julia

For me this takes about 3m10s on v0.6, and 5m30s on master. One theory is that this is due to more inlining and thus generating longer functions (perhaps in just a few pathological cases), but we don't really know yet.

codegen inference latency performance regression

Most helpful comment

I'm currently measuring release sysimg build times on an old but idle system of mine, and it just got past df63db683237fdb90fc1f93136400cfa34d6bd33 (the large increase on the chart below):

alt text

Should take ~10 days until it reaches release-0.5.

EDIT: here is a better chart, with commit msg on hover (clicking redirects to the GitHub commit page).

All 11 comments

This took long enough that I thought it was hung, so yeah, this has definitely regressed. On the other hand, now that #265 is fixed, sysimg build time only really matters to people who build Julia themselves often, so I'm not sure how critical this is.

Inlining is a good theory, but:

  • d6a0bbdb2dd9694f032bf04eb008756625d33e5c (just before merging #22210): 3m17.835s
  • After the merger: 3m41.295s

Explains some but not a very large fraction of the change.

I'm currently measuring release sysimg build times on an old but idle system of mine, and it just got past df63db683237fdb90fc1f93136400cfa34d6bd33 (the large increase on the chart below):

alt text

Should take ~10 days until it reaches release-0.5.

EDIT: here is a better chart, with commit msg on hover (clicking redirects to the GitHub commit page).

We should be tracking and charting this and other performance metrics automatically all the time.

The script reached v0.5.0, with some clear regressions and improvements visible.

Is this a useful thing to have? If so, I can deploy this in a more persistent manner (ie. keeping track of master). Or will @KristofferC's codespeed cover this?

Also, I should have measured real+user+sys & rss+vsz instead of just wall seconds; would that be useful to regenerate the dataset for?

Is there a public-facing dashboard for this kind of stuff?

We have now added the new Package Manager and still have the old one, the new broadcasting stuff and many other additions. I assume the goal here is not to reduce sysimage build time as much as improve the compiler speed that everyone can benefit from.

Do we need more specific issues instead?

This is a specific issue --- it's an example case where compiler performance regressed. In fact when the new iteration protocol and optimizer were merged, there was another significant regression in this case. So it's not just caused by adding more code to the system image.

Ok, I'll see if I can quantify that for discussion here and update the title.

Can be closed?

I think it is pretty good now (the precompilation script takes a while but that is not really related to this issue).

Was this page helpful?
0 / 5 - 0 ratings

Related issues

m-j-w picture m-j-w  路  3Comments

TotalVerb picture TotalVerb  路  3Comments

StefanKarpinski picture StefanKarpinski  路  3Comments

arshpreetsingh picture arshpreetsingh  路  3Comments

i-apellaniz picture i-apellaniz  路  3Comments