Skip to content

Conversation

@AndyAyersMS
Copy link
Member

Collect both non-pgo and pgo cases. For non-pgo, set OSR to trigger immediately
when any patchpoint is hit to maximize number of cases collected. For PGO, set
OSR to trigger once we've got a bit of profile data gathered by the Tier0 method.

Collect both non-pgo and pgo cases. For non-pgo, set OSR to trigger immediately
when any patchpoint is hit to maximize number of cases collected. For PGO, set
OSR to trigger once we've got a bit of profile data gathered by the Tier0 method.
@ghost ghost added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label Dec 10, 2021
@ghost
Copy link

ghost commented Dec 10, 2021

Tagging subscribers to this area: @JulieLeeMSFT
See info in area-owners.md if you want to be subscribed.

Issue Details

Collect both non-pgo and pgo cases. For non-pgo, set OSR to trigger immediately
when any patchpoint is hit to maximize number of cases collected. For PGO, set
OSR to trigger once we've got a bit of profile data gathered by the Tier0 method.

Author: AndyAyersMS
Assignees: -
Labels:

area-CodeGen-coreclr

Milestone: -

@AndyAyersMS
Copy link
Member Author

cc @dotnet/jit-contrib

Recent collection stats:

Grouped Flag Appearances (67959 contexts)

bits                count  percent  parsed
0000000048820000      134    0.20%  FEATURE_SIMD SKIP_VERIFICATION IL_STUB BBOPT
0000000248820000       77    0.11%  FEATURE_SIMD SKIP_VERIFICATION IL_STUB BBOPT PUBLISH_SECRET_PARAM
0000006248820000        1    0.00%  FEATURE_SIMD SKIP_VERIFICATION IL_STUB BBOPT PUBLISH_SECRET_PARAM REVERSE_PINVOKE TRACK_TRANSITIONS
0000008000820010    17640   25.96%  DEBUG_INFO FEATURE_SIMD SKIP_VERIFICATION TIER0
0000008020820010    18451   27.15%  DEBUG_INFO FEATURE_SIMD SKIP_VERIFICATION BBINSTR TIER0
0000000040820010     3844    5.66%  DEBUG_INFO FEATURE_SIMD SKIP_VERIFICATION BBOPT
c800000040820010       19    0.03%  DEBUG_INFO FEATURE_SIMD SKIP_VERIFICATION BBOPT HAS_PGO HAS_EDGE_PROFILE HAS_STATIC_PROFILE
d800000040820010        3    0.00%  DEBUG_INFO FEATURE_SIMD SKIP_VERIFICATION BBOPT HAS_PGO HAS_EDGE_PROFILE HAS_LIKELY_CLASS HAS_STATIC_PROFILE
0000010040820010     6681    9.83%  DEBUG_INFO FEATURE_SIMD SKIP_VERIFICATION BBOPT TIER1
8400010040820010      786    1.16%  DEBUG_INFO FEATURE_SIMD SKIP_VERIFICATION BBOPT TIER1 HAS_PGO HAS_DYNAMIC_PROFILE
a400010040820010      401    0.59%  DEBUG_INFO FEATURE_SIMD SKIP_VERIFICATION BBOPT TIER1 HAS_PGO HAS_CLASS_PROFILE HAS_DYNAMIC_PROFILE
c400010040820010    11733   17.26%  DEBUG_INFO FEATURE_SIMD SKIP_VERIFICATION BBOPT TIER1 HAS_PGO HAS_EDGE_PROFILE HAS_DYNAMIC_PROFILE
c800010040820010     1255    1.85%  DEBUG_INFO FEATURE_SIMD SKIP_VERIFICATION BBOPT TIER1 HAS_PGO HAS_EDGE_PROFILE HAS_STATIC_PROFILE
d800010040820010      515    0.76%  DEBUG_INFO FEATURE_SIMD SKIP_VERIFICATION BBOPT TIER1 HAS_PGO HAS_EDGE_PROFILE HAS_LIKELY_CLASS HAS_STATIC_PROFILE
e400010040820010     4838    7.12%  DEBUG_INFO FEATURE_SIMD SKIP_VERIFICATION BBOPT TIER1 HAS_PGO HAS_EDGE_PROFILE HAS_CLASS_PROFILE HAS_DYNAMIC_PROFILE
0000002040820010        1    0.00%  DEBUG_INFO FEATURE_SIMD SKIP_VERIFICATION BBOPT REVERSE_PINVOKE
0000008080820010       59    0.09%  DEBUG_INFO FEATURE_SIMD SKIP_VERIFICATION FRAMED TIER0
00000080a0820010       59    0.09%  DEBUG_INFO FEATURE_SIMD SKIP_VERIFICATION BBINSTR FRAMED TIER0
00000000c0820010        8    0.01%  DEBUG_INFO FEATURE_SIMD SKIP_VERIFICATION BBOPT FRAMED
00000100c0820010       32    0.05%  DEBUG_INFO FEATURE_SIMD SKIP_VERIFICATION BBOPT FRAMED TIER1
84000100c0820010        2    0.00%  DEBUG_INFO FEATURE_SIMD SKIP_VERIFICATION BBOPT FRAMED TIER1 HAS_PGO HAS_DYNAMIC_PROFILE
a4000100c0820010        1    0.00%  DEBUG_INFO FEATURE_SIMD SKIP_VERIFICATION BBOPT FRAMED TIER1 HAS_PGO HAS_CLASS_PROFILE HAS_DYNAMIC_PROFILE
c4000100c0820010       50    0.07%  DEBUG_INFO FEATURE_SIMD SKIP_VERIFICATION BBOPT FRAMED TIER1 HAS_PGO HAS_EDGE_PROFILE HAS_DYNAMIC_PROFILE
c8000100c0820010        6    0.01%  DEBUG_INFO FEATURE_SIMD SKIP_VERIFICATION BBOPT FRAMED TIER1 HAS_PGO HAS_EDGE_PROFILE HAS_STATIC_PROFILE
e4000100c0820010        5    0.01%  DEBUG_INFO FEATURE_SIMD SKIP_VERIFICATION BBOPT FRAMED TIER1 HAS_PGO HAS_EDGE_PROFILE HAS_CLASS_PROFILE HAS_DYNAMIC_PROFILE
0000010040822010     1237    1.82%  DEBUG_INFO OSR FEATURE_SIMD SKIP_VERIFICATION BBOPT TIER1
8400010060822010       89    0.13%  DEBUG_INFO OSR FEATURE_SIMD SKIP_VERIFICATION BBINSTR BBOPT TIER1 HAS_PGO HAS_DYNAMIC_PROFILE
a400010060822010       29    0.04%  DEBUG_INFO OSR FEATURE_SIMD SKIP_VERIFICATION BBINSTR BBOPT TIER1 HAS_PGO HAS_CLASS_PROFILE HAS_DYNAMIC_PROFILE
00000100c0822010        2    0.00%  DEBUG_INFO OSR FEATURE_SIMD SKIP_VERIFICATION BBOPT FRAMED TIER1
0000000000820030        1    0.00%  DEBUG_INFO MIN_OPT FEATURE_SIMD SKIP_VERIFICATION

Individual Flag Appearances

   67747   99.69%  DEBUG_INFO
       1    0.00%  MIN_OPT
    1357    2.00%  OSR
   67959  100.00%  FEATURE_SIMD
   67959  100.00%  SKIP_VERIFICATION
     212    0.31%  IL_STUB
   18628   27.41%  BBINSTR
   31749   46.72%  BBOPT
     224    0.33%  FRAMED
      78    0.11%  PUBLISH_SECRET_PARAM
       2    0.00%  REVERSE_PINVOKE
       1    0.00%  TRACK_TRANSITIONS
   36209   53.28%  TIER0
   27662   40.70%  TIER1
   17934   26.39%  HAS_DYNAMIC_PROFILE
    1798    2.65%  HAS_STATIC_PROFILE
     518    0.76%  HAS_LIKELY_CLASS
    5274    7.76%  HAS_CLASS_PROFILE
   18424   27.11%  HAS_EDGE_PROFILE
   19732   29.04%  HAS_PGO

# note tricks to get one element tuples

runtime_options_list = [("Dummy=0",), ("TieredCompilation=0", ), ("TieredPGO=1", "TC_QuickJitForLoops=1"), ("TieredPGO=1", "TC_QuickJitForLoops=1", "ReadyToRun=0")]
runtime_options_list = [("Dummy=0",), ("TieredCompilation=0", ), ("TieredPGO=1", "TC_QuickJitForLoops=1"), ("TieredPGO=1", "TC_QuickJitForLoops=1", "ReadyToRun=0"),
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should first items have TC_OnStackReplacement=0 as you're planning to enable it by default?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I suppose so, though with the current defaults (~50,000 hits to patchpoints before a transition) very few methods will end up with OSR. In practice it won't make much difference.

The bigger impact will be from changing the default for QJFL.

@AndyAyersMS
Copy link
Member Author

Note this means that if we alter the format of PatchpointInfo we might want to bump the jit GUID.

Or at least, trigger a new collection.

I don't expect PatchpointInfo to change often, but it likely will change some when Arm64 support is introduced.

@AndyAyersMS AndyAyersMS merged commit fe4cb9a into dotnet:main Dec 11, 2021
@ghost ghost locked as resolved and limited conversation to collaborators Jan 10, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants