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>