Messages in this thread | | | From | John Stultz <> | Date | Mon, 14 Nov 2022 23:08:36 -0800 | Subject | Re: [PATCH RFC v4 2/3] sched: Avoid placing RT threads on cores handling long softirqs |
| |
On Sun, Oct 23, 2022 at 12:45 AM Alexander Gordeev <agordeev@linux.ibm.com> wrote: > > On Sat, Oct 22, 2022 at 06:34:37PM +0000, Joel Fernandes wrote: > > > In my reading of your approach if you find a way to additionally > > > indicate long softirqs being handled by the remote ksoftirqd, it > > > would cover all obvious/not-corner cases. > > > > How will that help? The long softirq executing inside ksoftirqd will disable > > preemption and prevent any RT task from executing. > > Right. So the check to deem a remote CPU unfit would (logically) look like this: > > (active | pending | ksoftirqd) & LONG_SOFTIRQ_MASK >
Alexander, Apologies for the late response here, some other work took priority for a bit.
Thanks again for the feedback. But I wanted to follow up on your suggestion here, as I'm not quite sure I see why we need the separate ksoftirqd bitmask here?
As run_ksoftirqd() basically looks at the pending set and calls __do_softirq() which then moves the bits from the pending mask to active mask while they are being run.
So (pending|active)&LONG_SOFTIRQ_MASK seems like it should be a sufficient check regardless of if the remote cpu is in softirq or ksoftirqd, no?
thanks -john
| |