Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 01 Mar 2022 13:04:34 -0600
From:      Mike Karels <mike@karels.net>
To:        freebsd-arch@freebsd.org
Subject:   support for asymmetric CPUs
Message-ID:  <202203011904.221J4Yg8032167@mail.karels.net>

next in thread | raw e-mail | index | archive | help
Has anyone been looking at scheduling issues for asymmetric CPUs like
those with performance cores and efficiency cores?  I've been looking
at this a little, with Intel's Alder Lake as an example.  E.g. the
i7-12700 has 8 performance cores with SMT (hyperthreading) and 4
efficiency cores without SMT.  The E-cores are supposedly better for
threaded processes.  Intel also has a hardware/firmware facility to
advise the OS about process behavior to guide placement.  I don't know
much about this yet, but there is supposedly support pending for Linux.
Looking ahead, the Apple M1 also has asymmetric CPUs with P-cores and
E-cores.  (Does FreeBSD support any ARM chips with asymmetric CPUs yet?)

It seems clear that there should be a generalized interface that supports
machine-dependent configuration, even if the hooks mostly end up pointing
to machine-independent routines in the scheduler in common cases.  I'd
envision initial support that just looked at CPU usage and adjusted the
cpusets for threads that were using the default cpuset.  I was also
thinking about exposing cpusets of P-cores and E-cores for use by
knowledgeable user processes.  I'm not sure whether it makes sense to
try to generalize beyond one dimension, higher-performance and lower-
performance cores, e.g. for vector-heavy processes or other potential
asymmetric capabilities.  I'm not sure how to generalize more, so that
could be a future exercise if there was a reason for it.

If anyone has thought about this or has done any work on it, I'd be
interested to hear about it.

		Mike



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202203011904.221J4Yg8032167>