-
Notifications
You must be signed in to change notification settings - Fork 2.6k
Replace FixupPrecode with RelativeFixupPrecode for NGENed images #17642
Replace FixupPrecode with RelativeFixupPrecode for NGENed images #17642
Conversation
3b93dc3
to
2707d80
Compare
This goes against the W^X compatibility that I have mentioned in #17147 (comment) We will need to make MethodTables writable for it. And with writeable MethodTables, precodes saved in NGen images can be read-only, slow and small. So instead of introducing relatively big RelativeFixupPrecode, it will be better to use the existing small compact entry points and save those into NGen images instead. |
@jkotas I'll start implementing W^X for ARM instead of this optimization. I'll test some Tizen CI jobs here and then close this PR. |
@dotnet-bot help |
Welcome to the dotnet/coreclr Repository The following is a list of valid commands on this PR. To invoke a command, comment the indicated phrase on the PR The following commands are valid for all PRs and repositories. Click to expand
The following jobs are launched by default for each PR against dotnet/coreclr:master. Click to expand
The following optional jobs are available in PRs against dotnet/coreclr:master. Click to expand
Have a nice day! |
Welcome to the dotnet/coreclr Repository The following is a list of valid commands on this PR. To invoke a command, comment the indicated phrase on the PR The following commands are valid for all PRs and repositories. Click to expand
The following jobs are launched by default for each PR against dotnet/coreclr:master. Click to expand
The following optional jobs are available in PRs against dotnet/coreclr:master. Click to expand
Have a nice day! |
@dotnet-bot test Tizen armel Cross Release Build |
Welcome to the dotnet/coreclr Perf help The following is a list of valid commands on this PR. To invoke a command, comment the indicated phrase on the PR The following commands are valid for all PRs and repositories. Click to expand
The following jobs are launched by default for each PR against dotnet/coreclr:master. Click to expand
The following optional jobs are available in PRs against dotnet/coreclr:master. Click to expand
Have a nice day! |
@dotnet-bot test Tizen armel Cross Release Build |
@gbalykov I would recommend to agree on the plan first before you start working on the implementation. It would be interesting to understand whether R2R + tiered JITing would work well enough for Tizen, or what it would take to make it work well enough. We believe that this configuration (or variants of it) provide the best trade off between size, startup, memory consumption, throughput and complexity, and it is what we plan to focus on. We do not see the future in the fragile NGen. |
@jkotas priorities for all consumer electronics are startup time, memory consumption and after that disk usage. So now we're looking why R2R is slower than FNV. |
cc @sergiy-k |
cc @nattress |
This pull request replaces FixupPrecode with RelativeFixupPrecode for NGENed images for Linux ARM (if
FEATURE_FNV_MEM_OPTIMIZATIONS
is enabled).On application, which is referenced in #10380 (comment), the following memory consumption changes occur for mappings of images (based on c127548):
Rss: 15924 -> 15748 (1.1% improvement)
Private_Dirty: 2036 -> 1760 (13.6% improvement)
Private_Clean: 1396 -> 1416
Shared_Clean: 12492 -> 12572
No difference in startup time for GUI applications in case system dlls are crossgened.
cc @Dmitri-Botcharnikov @alpencolt