Egregoros

Signal feed

Timeline

Post

Remote status

Theo de Raadt has introduced a new hw.blockcpu sysctl to #OpenBSD -current to offer more control over which CPU core types (Performance, Efficiency, and SMT) are available to schedule processes on. Modern Intel (and ARM) CPUs additionally have slower LP-E (low-power) cores that severely hinder system performance.

deraadt@ modified src/sys/*: Some new intel machines have a new 3rd tier of cpus called LP-E which are E-core (Atom) without L3 cache. These cpus are Lethargic, and it sucks when processes migrate to them.
This introduces sysctl hw.blockcpu= which takes a sequence of 4 letters.
S (for SMT), P (regular performance cpu), E (efficient cpu) generally 80% to 50% as fast), and L (lethargic cpu) which are even slower.
By setting this, you can select cpus to kick out of the scheduler. The default is SL.
The hw.smt sysctl remains for now but we will eventually delete it.
hw.smt changes and follows hw.blockcpu=S.
ok kettenis mlarkin

Replies

1
@brynet

> Modern Intel (and ARM) CPUs additionally have slower LP-E (low-power) cores that severely hinder system performance.

idk if that framing is super accurate. If a long-running heavy-compute process is scheduled on those cores, it sucks, but also if a quickly-executing lightweight process is scheduled on the big cores it also sucks because it's a waste (of precious cputime, energy, etc)

proper use of those cores improves overall system performance and responsiveness. it's just hard to use them correctly without an intelligent scheduler. Apple has mastered this and everyone else is going to be playing catch-up for a while.