support for asymmetric CPUs

Mike Karels <[email protected]>
Newsgroups gmane.os.freebsd.architechture
Message-ID <[email protected]>
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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.