You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Investigate why crossgen works slower with TieredCompilation/PGO #83112
I was measuring crossgen2.exe -O SPC.dll (actually, the exact command we use for build Clr.NativeCoreLib -c Release) and noticed a few problems:
Mode
Time to prejit SPC.dll, seconds
TC=1 (Default)
4.81
TC=0
4.25
TC=1, CCDelayMS=0
3.78
TC=1, PGO=1
5.29
TC=1, PGO=1, CCDelayMS=0
3.93
Legend:
TC - DOTNET_TieredCompilation (1 by default)
PGO - DOTNET_TieredPGO (0 by default)
CCDelayMS - DOTNET_TC_CallCountThreshold (100 by default)
The difference is quite noticeable so worth investigating - numbers are quite stable across multiple runs.
Judging by the effect from DOTNET_TC_CallCountThreshold we're having some contention for call counting stub installation/promotion to tier1.
Fun-fact: DOTNET_TC_CallCountingDelayMs=1 makes TC=1 (default) faster than TC=0. So apparently there is a huge contention to install call counting stubs
#89489 disabled tiering to work around (matching the workaround used in ILC already) so if we still do TP measurements in the non-shipping configuration of crossgen2, there's going to be an improvement.
Activity
EgorBo commentedon Mar 7, 2023
Fun-fact:
DOTNET_TC_CallCountingDelayMs=1makesTC=1 (default)faster thanTC=0. So apparently there is a huge contention to install call counting stubsEgorBo commentedon Mar 8, 2023
cc @noahfalk @kouvel
kunalspathak commentedon Jul 24, 2023
From https://pvscmdupload.blob.core.windows.net/reports/allTestHistory%2frefs%2fheads%2fmain_x64_Windows%2010.0.18362_RunKind%3dcrossgen_scenarios%2fCrossgen2%20Throughput%20-%20Single%20-%20System.Private.CoreLib.html
The regression is seen after enabling dynamic PGO in #86225
@davidwrighton @mangod9
AndyAyersMS commentedon Jul 24, 2023
As mentioned offline we also ought to start measuring with the NAOT'd crossgen2.
MichalStrehovsky commentedon Jul 27, 2023
#89489 disabled tiering to work around (matching the workaround used in ILC already) so if we still do TP measurements in the non-shipping configuration of crossgen2, there's going to be an improvement.