Skip to content

.NET 8 experiments: container performance and density #77517

@trylek

Description

@trylek

Goals

  • Tune the new "dotnet publish to container" scenario for ease of use and good performance in typical cases
  • Make Crossgen2 composite containers easier to use by optimizing their size to match non-composite
  • Determine how to approach support for modern ISA extensions (multitargeting?)
  • Optimize containers for usability in scalable cloud scenarios (Kubernetes)
  • Investigate options for dynamic container memory management

Configuration knobs

  • PGO-driven selective compilation to reduce container size
  • "Targeted multitargeting" - supporting multitargeting for a small set of super-hot functions (I'm imagining e.g. string, array or list operations) to optimize startup on modern HW

Experiments

  • Analyze the remaining perf outliers (composite on Windows vs. Linux, runtime+ASP.NET vs. full composite); primary focus should be Linux since that is the primary container scenario, expanding to Windows next.
  • Experiment with PGO and / or other input data for partial Crossgen2 compilation to reduce container size
  • Measure perf characteristics of composite single files
  • Emitting Crossgen2 hints to drive tiered compilation - perhaps the initial goal / experiment should be some form of tiered compilation instrumentation to let us measure how much tiered compilation costs and what part of these costs could be reduced by additional inputs (e.g. a heuristic table produced by Crossgen2 with hints regarding the value of rejitting individual methods)
    • [mg] measure with cross-module inlining to determine whether we continue to invest in composite or build on top of cross-module inlining functionality (assuming that does show the necessary perf benefits)

Evaluation

Analysis of perf outliers - detailed tasks

  • Measure comparative performance of various R2R build configurations locally on Windows using iDNA.
  • Measure comparative performance of various R2R build configurations locally using Linux containers;
  • Measure comparative performance of various R2R build configurations locally using Windows containers;
  • Measure comparative performance of various R2R build configurations using Ivan's Crank front-end in the ASP.NET lab;
  • Summarize performance differences and pinpoint remaining outliers (significant differences between Windows and Linux, between raw and container runs, between local runs and runs in the ASP.NET perf lab);
  • Investigate and fix the remaining outliers;
  • Produce comprehensive summary of all findings and their implications for container tuning.

Metadata

Metadata

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions