[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20211005175747.GA167517@fuller.cnet>
Date: Tue, 5 Oct 2021 14:57:47 -0300
From: Marcelo Tosatti <mtosatti@...hat.com>
To: Paolo Bonzini <pbonzini@...hat.com>
Cc: Nitesh Narayan Lal <nitesh@...hat.com>,
linux-kernel@...r.kernel.org, kvm@...r.kernel.org,
seanjc@...gle.com, vkuznets@...hat.com, tglx@...utronix.de,
frederic@...nel.org, mingo@...nel.org, nilal@...hat.com,
Wanpeng Li <kernellwp@...il.com>
Subject: Re: [PATCH v1] KVM: isolation: retain initial mask for kthread VM
worker
On Tue, Oct 05, 2021 at 07:15:43PM +0200, Paolo Bonzini wrote:
> On 05/10/21 15:21, Marcelo Tosatti wrote:
> > > The QEMU I/O thread is not hogging the CPU 100% of the time, and
> > > therefore the nx-recovery thread should be able to run on that CPU.
> >
> > 1) The cpumask of the parent thread is not inherited
> >
> > set_cpus_allowed_ptr(task, housekeeping_cpumask(HK_FLAG_KTHREAD));
> >
> > On __kthread_create_on_node should fail (because its cgroup, the one
> > inherited from QEMU, contains only isolated CPUs).
> >
> > (The QEMU I/O thread runs on an isolated CPU, and is moved by libvirt
> > to HK-cgroup as mentioned before).
>
> Ok, that's the part that I missed. So the core issue is that libvirt moves
> the I/O thread out of the isolated-CPU cgroup too late? This in turn is
> because libvirt gets access to the QEMU monitor too late (the KVM file
> descriptor is created when QEMU processes the command line).
Actually, what i wrote was incorrect: set_cpus_allowed_ptr should
succeed (kthread creation), but cgroup_attach_task_all will
override the kthread mask with the cgroup mask
(which contains isolated CPUs).
Paolo: about your suggestion to use the same CPU for nx-recovery thread
as the I/O thread one: I believe the cpumask of the userspace parent (QEMU I/O
thread) is not inherited by the kernel thread.
We will resend the patchset once more data to justify this is available
(or will if an userspace solution is not possible).
Powered by blists - more mailing lists