On Wed, 2018-01-17 at 08:51 -0600, Christopher Lameter wrote: > On Tue, 16 Jan 2018, Mike Galbraith wrote: > > > > I tried to remove isolcpus or at least change the way it works so that its > > > effects are reversible (ie: affine the init task instead of isolating > > > domains) > > > but that got nacked due to the behaviour's expectations for userspace. > > > > So we paint ourselves into a static corner forever more, despite every > > bit of this being all about "properties of sets of cpus", ie precisely > > what cpusets was born to do. That's sad, dynamic wasn't that far away. > > cpusets was born in order to isolate applications to sets of processors. > The properties of sets of cpus was not on the horizon when SGI started > this.
Domain connectivity very much is a property of a set of CPUs, a rather important one, and one managed by cpusets. NOHZ_FULL is a property of a set of cpus, thus a most excellent fit. Other things are as well. > We have sets of cpus associated with affinity masks in the form of bitmaps > etc etc which is much more lightweight than having slug around the cgroup > overhead everywhere. What does everywhere mean, set creation time? > A simple bitmask is much better if you have to control detailed system > behavior for each core and are planning each processes role because you > need to make full use of the harware resources available. If you live in a static world, maybe. I like the flexibility of being able to configure on the fly. One tiny example: for a high performance aircraft manufacturer, having military simulation background, I know that simulators frequently have to be ready to go at the drop of a hat, so I twiddled cpusets to let them flip their extra fancy video game (80 cores, real controls/avionics... "game over, insert one gold bar to continue" kind of fancy) from low power idle to full bore hard realtime with one poke to a cpuset file. Static may be fine for some, for others, dynamic is much better. -Mike