Thread (14 messages) 14 messages, 2 authors, 2022-01-08

Re: [PATCH kvmtool 9/9] arm64: Add support for KVM_ARM_VCPU_PMU_V3_SET_PMU

From: Alexandru Elisei <hidden>
Date: 2022-01-08 16:04:59
Also in: kvmarm

Hi Marc,

On Sat, Jan 08, 2022 at 01:27:17PM +0000, Marc Zyngier wrote:
On Fri, 07 Jan 2022 12:10:05 +0000,
Alexandru Elisei [off-list ref] wrote:
quoted
Hi Marc,

On Tue, Jan 04, 2022 at 02:39:59PM +0000, Marc Zyngier wrote:
quoted
On Mon, 15 Nov 2021 16:57:05 +0000,
Alexandru Elisei [off-list ref] wrote:
quoted
The KVM_ARM_VCPU_PMU_V3_CTRL(KVM_ARM_VCPU_PMU_V3_SET_PMU) VCPU ioctl is
used to assign a physical PMU to the events that KVM creates when emulating
the PMU for that VCPU. This is useful on heterogeneous systems, when there
is more than one hardware PMU present.

The assumption that is made in the implementation is that the user will
pin the kvmtool process on a set of CPUs that share the same PMU. This
allows kvmtool to set the same PMU for all VCPUs from the main thread,
instead of in the individual VCPU threads.
May I suggest a slightly different use model? Ideally, you'd be able
to run the vcpu threads on the CPUs matching the PMU affinity, and
leave all the other threads to roam on other CPUs.
Right now, the only way for userspace to make kvmtool run on a particular
set of CPUs in a heterogeneous configuration is to use taskset, which means
the entire kvmtool process ends up being pinned on a subset of CPUs which
have the same PMU. I would like to keep this approach, as it's simple and
straightforward to implement in kvmtool, and it's easy to change in the
future if there's an incentive to do so.

It's also not clear to me how your suggestion would work. Add a command
line argument to pin all the VCPUs to the specified cpumask?
quoted
With your implementation, the whole of kvmtool gets stuck to a given
CPU type, which can be problematic.
Do you have a specific use case in mind? Or is it more like a general
concern regarding, for example, the virtio-blk-io or virtio-net-* threads
competing with the VCPU threads if the VM is doing lots of I/O?
Exactly that. The real requirement is that the vcpu thread affinities
are that of the PMU, but not that of any other thread. Maybe that's
just another parameter, independent of the PMU setup. Something like:

	lkvm run ... --vcpu-affinity $(< /sys/devices/armv8_pmuv3_0/cpus)

for example.
That should be easy (famous last words?) to implement as a separate patch
on top of this series, I'll give that a go in the next iteration.

Thanks for the suggestion.

Alex

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help