[CentOS-devel] Proposal: CentOS x86 SIG

Mon Feb 27 17:23:12 UTC 2023
Florian Weimer <fweimer at redhat.com>

# Goals

The purpose of this SIG is to quantify the potential benefits of
applying existing compiler technology to distribution packages,
targeting more recent CPUs, and evaluating different options for how
these optimizations can be maintained in a scalable way, and delivered
to end users.

Today, there is a significant delay between the release of new x86-64
ISAs and the adoption across the entire CentOS distribution. For
example, CentOS 9 Stream released with the x86-64-v2 ISA baseline, nine
to thirteen years after such CPUs became commercially available. The
concern is that this discrepancy leaves more recent CPU features unused,
and end users do not see the best possible performance for the CPUs they
use.

Parts of the distribution are built with run-time selected
optimizations, but this only applies to specialized functional areas,
such as string manipulation, certain mathematical operations, and
cryptography, but not (for example) to language interpreters that are
part of CentOS.

# Status

Proposed: RFC and looking for a sponsoring Governing Board member

# What’s in scope

* Explore the immediate runtime performance impact of package-specific
  ISA-related work on key workloads e.g. language interpreters.
  
* Evaluate the performance benefit at run-time of building CentOS with
  auto-vectorization and the very-cheap cost model and different x86-64
  micro-architecture levels.
  
* Explore ways how these performance-enhancing builds can be maintained
  at the distribution level and made available to end users for
  installation.
  
* Assess the image/container size impact of those additional optimized
  builds (this may not be applicable to some delivery mechanisms).
  
* Explore ways to alert users that they do not get optimal performance
  because of misconfigured hypervisors.
  
* It is possible, but not likely, that work across the entire
  distribution may be needed to enable shadow stacks. (Userspace
  enablement happened as part of CentOS 8, but the kernel parts are not
  upstream and have changed significantly, so there is some
  uncertainty.) If large-scale work affecting many packages is needed,
  the SIG would be a natural place to prototype changes before
  integration into the distribution.
  
# What's not in scope

* Enablement for future x86 CPUs and chipsets, assemblers, linkers, and
  compiler support for new ISAs including regular performance work on
  individual packages (e.g., identified upstream backports). Hardware
  enablement must follow existing processes.
  
* Any 32-bit work (such as 64-bit time_t, or a 32-bit kernel) is
  explicitly excluded.
  
* The focus will be on userspace changes.

* Rebuilds for potential observability improvements are out of scope
  (although shadow stacks are expected to help in this a

* Adding additional hosts to the CentOS infrastructure in support of
  this SIG needs to be negotiated with the CentOS infrastructure
  team. The CPU microarchitecture level of the existing infrastructure
  is already sufficient.
  
# Roadmap

March 2023: Start the SIG and coordinate with partners
April 2023: Adopt existing CentOS builder resources to deliver the
            required builds.
May 2023: Initial performance analysis results.

Rest TBD based on results of exploration.

Resources

They SIG could benefit from spare x86-64 Koji builder capacity.