Re: [PATCH v5 08/24] sched: Introduce per memory space current virtual cpu id

From: Mathieu Desnoyers
Date: Thu Nov 17 2022 - 14:42:53 EST


On 2022-11-17 14:10, Sean Christopherson wrote:
On Thu, Nov 17, 2022, Mathieu Desnoyers wrote:
On 2022-11-14 15:49, Sean Christopherson wrote:
On Fri, Nov 11, 2022, Mathieu Desnoyers wrote:
On 2022-11-10 23:41, Andy Lutomirski wrote:
On Thu, Nov 3, 2022 at 1:05 PM Mathieu Desnoyers
<mathieu.desnoyers@xxxxxxxxxxxx> wrote:
Also, in my mind "virtual cpu" is vCPU, which this isn't. Maybe
"compacted cpu" or something? It's a strange sort of concept.

I've kept the same wording that has been introduced in 2011 by Paul Turner
and used internally at Google since then, although it may be confusing if
people expect kvm-vCPU and rseq-vcpu to mean the same thing. Both really end
up providing the semantic of a virtually assigned cpu id (in opposition to
the logical cpu id on the system), but this is much more involved in the
case of KVM.

I had the same reaction as Andy. The rseq concepts don't worry me so much as the
existence of "vcpu" in mm_struct/task_struct, e.g. switch_mm_vcpu() when switching
between KVM vCPU tasks is going to be super confusing. Ditto for mm_vcpu_get()
and mm_vcpu_put() in the few cases where KVM currently does mmget()/mmput().

I'm fine with changing the wording if it helps make things less confusing.

Should we go for "compact-cpu-id" ? "packed-cpu-id" ? Other ideas ?

What about something like "process-local-cpu-id" to capture that the ID has meaning
only within the associated address space / process?

Considering that the shorthand for "memory space" is "VM" in e.g. "CLONE_VM" clone(2) flags, perhaps "vm-cpu-id", "vm-local-cpu-id" or "per-vm-cpu-id" ?

Thanks,

Mathieu

--
Mathieu Desnoyers
EfficiOS Inc.
https://www.efficios.com