Skip to content

JIT: efficient profiling schemes #46882

Closed

Description

The jit has traditionally done simplistic basic block profiling: each block gets instrumented with a counter probe.

More space- and time-efficient methods are well known, see for example Ball and Larus's Optimally Profiling and Tracing Programs. Generally these techniques profile edges, not blocks, and use a maximum-weight spanning tree to identify a minimal-cost set of edges that require probes.

With the advent of more flexible instrumentation schema in #46638 we can now consider changing the probing scheme used by the jit. Uniquely identifying edge probes requires two IL offsets; the new schema can support this.

This issue is to explore adopting these these techniques to reduce both the performance impact of instrumentation as well as the size required to hold the instrumentation produced data.

category:cq
theme:profile-feedback
skill-level:expert
cost:medium

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

Labels

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

Type

No type

Projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions