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