* [PATCH qemu-server 0/2] memory: add verbose_description to numa policy
@ 2026-03-12 10:50 Maximiliano Sandoval
2026-03-12 10:50 ` [PATCH qemu-server 1/2] " Maximiliano Sandoval
` (2 more replies)
0 siblings, 3 replies; 8+ messages in thread
From: Maximiliano Sandoval @ 2026-03-12 10:50 UTC (permalink / raw)
To: pve-devel
Adds a more flavorful description to the NUMA policy option based on
both qemu and the kernel's documentation. For now we simply paste the
contents of the `qemu-system-x86_64(1)` manual.
One open question is if there is any precedent for URIs in verbose
descriptions.
This came up in a couple of cases in enterprise support where more
information was requested regarding the policy.
Regarding the 'default' value. NUMA policies were added on our side at
2ed5d5724 but there is no mention of why the 'default' policy is not
used as a default. On QEMU's side the first appearance of policies was a
2.1.0 (Aug 2014) and there was a 'default' value at that stage.
Maximiliano Sandoval (2):
memory: add verbose_description to numa policy
memory: add default numa allocation policy
src/PVE/QemuServer/Memory.pm | 17 ++++++++++++++---
1 file changed, 14 insertions(+), 3 deletions(-)
--
2.47.3
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH qemu-server 1/2] memory: add verbose_description to numa policy
2026-03-12 10:50 [PATCH qemu-server 0/2] memory: add verbose_description to numa policy Maximiliano Sandoval
@ 2026-03-12 10:50 ` Maximiliano Sandoval
2026-03-12 10:50 ` [PATCH qemu-server 2/2] memory: add default numa allocation policy Maximiliano Sandoval
2026-03-12 13:27 ` [PATCH qemu-server 0/2] memory: add verbose_description to numa policy Dominik Csapak
2 siblings, 0 replies; 8+ messages in thread
From: Maximiliano Sandoval @ 2026-03-12 10:50 UTC (permalink / raw)
To: pve-devel
Signed-off-by: Maximiliano Sandoval <m.sandoval@proxmox.com>
---
src/PVE/QemuServer/Memory.pm | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/src/PVE/QemuServer/Memory.pm b/src/PVE/QemuServer/Memory.pm
index 7ebfc545..bcf6f9c5 100644
--- a/src/PVE/QemuServer/Memory.pm
+++ b/src/PVE/QemuServer/Memory.pm
@@ -42,6 +42,16 @@ my $numa_fmt = {
type => 'string',
enum => [qw(preferred bind interleave)],
description => "NUMA allocation policy.",
+ verbose_description => <<EODESC,
+NUMA allocation policy. Possible values are:
+
+ - preferred: prefer the given host node list for allocation
+ - bind: restrict memory allocation to the given host node list
+ - interleave: interleave memory allocations across the given host node list
+
+The models are explained in more details at the kernel's documentation
+https://docs.kernel.org/admin-guide/mm/numa_memory_policy.html#components-of-memory-policies.
+EODESC
optional => 1,
},
};
--
2.47.3
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH qemu-server 2/2] memory: add default numa allocation policy
2026-03-12 10:50 [PATCH qemu-server 0/2] memory: add verbose_description to numa policy Maximiliano Sandoval
2026-03-12 10:50 ` [PATCH qemu-server 1/2] " Maximiliano Sandoval
@ 2026-03-12 10:50 ` Maximiliano Sandoval
2026-03-12 13:26 ` Dominik Csapak
2026-03-12 13:27 ` [PATCH qemu-server 0/2] memory: add verbose_description to numa policy Dominik Csapak
2 siblings, 1 reply; 8+ messages in thread
From: Maximiliano Sandoval @ 2026-03-12 10:50 UTC (permalink / raw)
To: pve-devel
This follows the host numa policy.
Signed-off-by: Maximiliano Sandoval <m.sandoval@proxmox.com>
---
src/PVE/QemuServer/Memory.pm | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/src/PVE/QemuServer/Memory.pm b/src/PVE/QemuServer/Memory.pm
index bcf6f9c5..9e65b2b0 100644
--- a/src/PVE/QemuServer/Memory.pm
+++ b/src/PVE/QemuServer/Memory.pm
@@ -40,11 +40,12 @@ my $numa_fmt = {
},
policy => {
type => 'string',
- enum => [qw(preferred bind interleave)],
+ enum => [qw(default preferred bind interleave)],
description => "NUMA allocation policy.",
verbose_description => <<EODESC,
NUMA allocation policy. Possible values are:
+ - default: default host policy
- preferred: prefer the given host node list for allocation
- bind: restrict memory allocation to the given host node list
- interleave: interleave memory allocations across the given host node list
@@ -53,6 +54,7 @@ The models are explained in more details at the kernel's documentation
https://docs.kernel.org/admin-guide/mm/numa_memory_policy.html#components-of-memory-policies.
EODESC
optional => 1,
+ default => 'default',
},
};
PVE::JSONSchema::register_format('pve-qm-numanode', $numa_fmt);
@@ -450,8 +452,7 @@ sub config {
my $hostnodes = print_numa_hostnodes($hostnodelists);
# policy
- my $policy = $numa->{policy};
- die "you need to define a policy for hostnode $hostnodes\n" if !$policy;
+ my $policy = $numa->{policy} // 'default';
$mem_object .= ",host-nodes=$hostnodes,policy=$policy";
} else {
die "numa hostnodes need to be defined to use hugepages" if $conf->{hugepages};
--
2.47.3
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH qemu-server 2/2] memory: add default numa allocation policy
2026-03-12 10:50 ` [PATCH qemu-server 2/2] memory: add default numa allocation policy Maximiliano Sandoval
@ 2026-03-12 13:26 ` Dominik Csapak
2026-03-12 14:39 ` Maximiliano Sandoval
0 siblings, 1 reply; 8+ messages in thread
From: Dominik Csapak @ 2026-03-12 13:26 UTC (permalink / raw)
To: Maximiliano Sandoval, pve-devel
just for clarity: was this requested or did you just notice that it was
missing?
On 3/12/26 11:50 AM, Maximiliano Sandoval wrote:
> This follows the host numa policy.
>
> Signed-off-by: Maximiliano Sandoval <m.sandoval@proxmox.com>
> ---
> src/PVE/QemuServer/Memory.pm | 7 ++++---
> 1 file changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/src/PVE/QemuServer/Memory.pm b/src/PVE/QemuServer/Memory.pm
> index bcf6f9c5..9e65b2b0 100644
> --- a/src/PVE/QemuServer/Memory.pm
> +++ b/src/PVE/QemuServer/Memory.pm
> @@ -40,11 +40,12 @@ my $numa_fmt = {
> },
> policy => {
> type => 'string',
> - enum => [qw(preferred bind interleave)],
> + enum => [qw(default preferred bind interleave)],
> description => "NUMA allocation policy.",
> verbose_description => <<EODESC,
> NUMA allocation policy. Possible values are:
>
> + - default: default host policy
> - preferred: prefer the given host node list for allocation
> - bind: restrict memory allocation to the given host node list
> - interleave: interleave memory allocations across the given host node list
> @@ -53,6 +54,7 @@ The models are explained in more details at the kernel's documentation
> https://docs.kernel.org/admin-guide/mm/numa_memory_policy.html#components-of-memory-policies.
> EODESC
> optional => 1,
> + default => 'default',
> },
> };
> PVE::JSONSchema::register_format('pve-qm-numanode', $numa_fmt);
> @@ -450,8 +452,7 @@ sub config {
> my $hostnodes = print_numa_hostnodes($hostnodelists);
>
> # policy
> - my $policy = $numa->{policy};
> - die "you need to define a policy for hostnode $hostnodes\n" if !$policy;
> + my $policy = $numa->{policy} // 'default';
while the property itself was already optional (since it was only
required when the hostnodes were given) when we add this
we should mark 'default' as the default in the schema.
otherwise we could keep this check here and not set a default.
> $mem_object .= ",host-nodes=$hostnodes,policy=$policy";
> } else {
> die "numa hostnodes need to be defined to use hugepages" if $conf->{hugepages};
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH qemu-server 0/2] memory: add verbose_description to numa policy
2026-03-12 10:50 [PATCH qemu-server 0/2] memory: add verbose_description to numa policy Maximiliano Sandoval
2026-03-12 10:50 ` [PATCH qemu-server 1/2] " Maximiliano Sandoval
2026-03-12 10:50 ` [PATCH qemu-server 2/2] memory: add default numa allocation policy Maximiliano Sandoval
@ 2026-03-12 13:27 ` Dominik Csapak
2 siblings, 0 replies; 8+ messages in thread
From: Dominik Csapak @ 2026-03-12 13:27 UTC (permalink / raw)
To: Maximiliano Sandoval, pve-devel
both commit message could be longer (or be there at all ;) )
one could note e.g. that the description was taken
from the qemu manpage.
aside from that and the one comment on 2/2 (see separate mail) patches LGTM
On 3/12/26 11:50 AM, Maximiliano Sandoval wrote:
> Adds a more flavorful description to the NUMA policy option based on
> both qemu and the kernel's documentation. For now we simply paste the
> contents of the `qemu-system-x86_64(1)` manual.
>
> One open question is if there is any precedent for URIs in verbose
> descriptions.
>
> This came up in a couple of cases in enterprise support where more
> information was requested regarding the policy.
>
> Regarding the 'default' value. NUMA policies were added on our side at
> 2ed5d5724 but there is no mention of why the 'default' policy is not
> used as a default. On QEMU's side the first appearance of policies was a
> 2.1.0 (Aug 2014) and there was a 'default' value at that stage.
>
> Maximiliano Sandoval (2):
> memory: add verbose_description to numa policy
> memory: add default numa allocation policy
>
> src/PVE/QemuServer/Memory.pm | 17 ++++++++++++++---
> 1 file changed, 14 insertions(+), 3 deletions(-)
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH qemu-server 2/2] memory: add default numa allocation policy
2026-03-12 13:26 ` Dominik Csapak
@ 2026-03-12 14:39 ` Maximiliano Sandoval
2026-03-12 14:43 ` Dominik Csapak
0 siblings, 1 reply; 8+ messages in thread
From: Maximiliano Sandoval @ 2026-03-12 14:39 UTC (permalink / raw)
To: Dominik Csapak; +Cc: pve-devel
Dominik Csapak <d.csapak@proxmox.com> writes:
> just for clarity: was this requested or did you just notice that it was missing?
I noticed a while ago it was missing and never went around to fix it.
Clarification was also requested a couple of times in enterprise
support.
> On 3/12/26 11:50 AM, Maximiliano Sandoval wrote:
>> This follows the host numa policy.
>> Signed-off-by: Maximiliano Sandoval <m.sandoval@proxmox.com>
>> ---
>> src/PVE/QemuServer/Memory.pm | 7 ++++---
>> 1 file changed, 4 insertions(+), 3 deletions(-)
>> diff --git a/src/PVE/QemuServer/Memory.pm b/src/PVE/QemuServer/Memory.pm
>> index bcf6f9c5..9e65b2b0 100644
>> --- a/src/PVE/QemuServer/Memory.pm
>> +++ b/src/PVE/QemuServer/Memory.pm
>> @@ -40,11 +40,12 @@ my $numa_fmt = {
>> },
>> policy => {
>> type => 'string',
>> - enum => [qw(preferred bind interleave)],
>> + enum => [qw(default preferred bind interleave)],
>> description => "NUMA allocation policy.",
>> verbose_description => <<EODESC,
>> NUMA allocation policy. Possible values are:
>> + - default: default host policy
>> - preferred: prefer the given host node list for allocation
>> - bind: restrict memory allocation to the given host node list
>> - interleave: interleave memory allocations across the given host node list
>> @@ -53,6 +54,7 @@ The models are explained in more details at the kernel's documentation
>> https://docs.kernel.org/admin-guide/mm/numa_memory_policy.html#components-of-memory-policies.
>> EODESC
>> optional => 1,
>> + default => 'default',
>> },
>> };
>> PVE::JSONSchema::register_format('pve-qm-numanode', $numa_fmt);
>> @@ -450,8 +452,7 @@ sub config {
>> my $hostnodes = print_numa_hostnodes($hostnodelists);
>> # policy
>> - my $policy = $numa->{policy};
>> - die "you need to define a policy for hostnode $hostnodes\n" if !$policy;
>> + my $policy = $numa->{policy} // 'default';
>
> while the property itself was already optional (since it was only required when
> the hostnodes were given) when we add this
> we should mark 'default' as the default in the schema.
This was set as a default a couple of lines above, is this what you
meant?
>
> otherwise we could keep this check here and not set a default.
>
I will send a v2 where instead of `// 'default'` one checks for the
default value in the schema.
>> $mem_object .= ",host-nodes=$hostnodes,policy=$policy";
>> } else {
>> die "numa hostnodes need to be defined to use hugepages" if $conf->{hugepages};
--
Maximiliano
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH qemu-server 2/2] memory: add default numa allocation policy
2026-03-12 14:39 ` Maximiliano Sandoval
@ 2026-03-12 14:43 ` Dominik Csapak
2026-03-12 14:55 ` superseded: " Maximiliano Sandoval
0 siblings, 1 reply; 8+ messages in thread
From: Dominik Csapak @ 2026-03-12 14:43 UTC (permalink / raw)
To: Maximiliano Sandoval; +Cc: pve-devel
On 3/12/26 3:39 PM, Maximiliano Sandoval wrote:
> Dominik Csapak <d.csapak@proxmox.com> writes:
>
>> just for clarity: was this requested or did you just notice that it was missing?
>
> I noticed a while ago it was missing and never went around to fix it.
> Clarification was also requested a couple of times in enterprise
> support.
ok
>
>> On 3/12/26 11:50 AM, Maximiliano Sandoval wrote:
>>> This follows the host numa policy.
>>> Signed-off-by: Maximiliano Sandoval <m.sandoval@proxmox.com>
>>> ---
>>> src/PVE/QemuServer/Memory.pm | 7 ++++---
>>> 1 file changed, 4 insertions(+), 3 deletions(-)
>>> diff --git a/src/PVE/QemuServer/Memory.pm b/src/PVE/QemuServer/Memory.pm
>>> index bcf6f9c5..9e65b2b0 100644
>>> --- a/src/PVE/QemuServer/Memory.pm
>>> +++ b/src/PVE/QemuServer/Memory.pm
>>> @@ -40,11 +40,12 @@ my $numa_fmt = {
>>> },
>>> policy => {
>>> type => 'string',
>>> - enum => [qw(preferred bind interleave)],
>>> + enum => [qw(default preferred bind interleave)],
>>> description => "NUMA allocation policy.",
>>> verbose_description => <<EODESC,
>>> NUMA allocation policy. Possible values are:
>>> + - default: default host policy
>>> - preferred: prefer the given host node list for allocation
>>> - bind: restrict memory allocation to the given host node list
>>> - interleave: interleave memory allocations across the given host node list
>>> @@ -53,6 +54,7 @@ The models are explained in more details at the kernel's documentation
>>> https://docs.kernel.org/admin-guide/mm/numa_memory_policy.html#components-of-memory-policies.
>>> EODESC
>>> optional => 1,
>>> + default => 'default',
>>> },
>>> };
>>> PVE::JSONSchema::register_format('pve-qm-numanode', $numa_fmt);
>>> @@ -450,8 +452,7 @@ sub config {
>>> my $hostnodes = print_numa_hostnodes($hostnodelists);
>>> # policy
>>> - my $policy = $numa->{policy};
>>> - die "you need to define a policy for hostnode $hostnodes\n" if !$policy;
>>> + my $policy = $numa->{policy} // 'default';
>>
>> while the property itself was already optional (since it was only required when
>> the hostnodes were given) when we add this
>> we should mark 'default' as the default in the schema.
>
> This was set as a default a couple of lines above, is this what you
> meant?
ahh oops, i did not see that, then disregard these comments here ;)
>
>>
>> otherwise we could keep this check here and not set a default.
>>
>
> I will send a v2 where instead of `// 'default'` one checks for the
> default value in the schema.
no IMO it's fine as it is, just wanted to give an alternative to setting
the default, but since you did that already that's not necessary.
>
>>> $mem_object .= ",host-nodes=$hostnodes,policy=$policy";
>>> } else {
>>> die "numa hostnodes need to be defined to use hugepages" if $conf->{hugepages};
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* superseded: [PATCH qemu-server 2/2] memory: add default numa allocation policy
2026-03-12 14:43 ` Dominik Csapak
@ 2026-03-12 14:55 ` Maximiliano Sandoval
0 siblings, 0 replies; 8+ messages in thread
From: Maximiliano Sandoval @ 2026-03-12 14:55 UTC (permalink / raw)
To: Dominik Csapak; +Cc: pve-devel
Dominik Csapak <d.csapak@proxmox.com> writes:
> On 3/12/26 3:39 PM, Maximiliano Sandoval wrote:
>> Dominik Csapak <d.csapak@proxmox.com> writes:
>>
>>> just for clarity: was this requested or did you just notice that it was missing?
>> I noticed a while ago it was missing and never went around to fix it.
>> Clarification was also requested a couple of times in enterprise
>> support.
>
> ok
>
>>
>>> On 3/12/26 11:50 AM, Maximiliano Sandoval wrote:
>>>> This follows the host numa policy.
>>>> Signed-off-by: Maximiliano Sandoval <m.sandoval@proxmox.com>
>>>> ---
>>>> src/PVE/QemuServer/Memory.pm | 7 ++++---
>>>> 1 file changed, 4 insertions(+), 3 deletions(-)
>>>> diff --git a/src/PVE/QemuServer/Memory.pm b/src/PVE/QemuServer/Memory.pm
>>>> index bcf6f9c5..9e65b2b0 100644
>>>> --- a/src/PVE/QemuServer/Memory.pm
>>>> +++ b/src/PVE/QemuServer/Memory.pm
>>>> @@ -40,11 +40,12 @@ my $numa_fmt = {
>>>> },
>>>> policy => {
>>>> type => 'string',
>>>> - enum => [qw(preferred bind interleave)],
>>>> + enum => [qw(default preferred bind interleave)],
>>>> description => "NUMA allocation policy.",
>>>> verbose_description => <<EODESC,
>>>> NUMA allocation policy. Possible values are:
>>>> + - default: default host policy
>>>> - preferred: prefer the given host node list for allocation
>>>> - bind: restrict memory allocation to the given host node list
>>>> - interleave: interleave memory allocations across the given host node list
>>>> @@ -53,6 +54,7 @@ The models are explained in more details at the kernel's documentation
>>>> https://docs.kernel.org/admin-guide/mm/numa_memory_policy.html#components-of-memory-policies.
>>>> EODESC
>>>> optional => 1,
>>>> + default => 'default',
>>>> },
>>>> };
>>>> PVE::JSONSchema::register_format('pve-qm-numanode', $numa_fmt);
>>>> @@ -450,8 +452,7 @@ sub config {
>>>> my $hostnodes = print_numa_hostnodes($hostnodelists);
>>>> # policy
>>>> - my $policy = $numa->{policy};
>>>> - die "you need to define a policy for hostnode $hostnodes\n" if !$policy;
>>>> + my $policy = $numa->{policy} // 'default';
>>>
>>> while the property itself was already optional (since it was only required when
>>> the hostnodes were given) when we add this
>>> we should mark 'default' as the default in the schema.
>> This was set as a default a couple of lines above, is this what you
>> meant?
>
> ahh oops, i did not see that, then disregard these comments here ;)
>
>>
>>>
>>> otherwise we could keep this check here and not set a default.
>>>
>> I will send a v2 where instead of `// 'default'` one checks for the
>> default value in the schema.
>
> no IMO it's fine as it is, just wanted to give an alternative to setting
> the default, but since you did that already that's not necessary.
>
>>
>>>> $mem_object .= ",host-nodes=$hostnodes,policy=$policy";
>>>> } else {
>>>> die "numa hostnodes need to be defined to use hugepages" if $conf->{hugepages};
>>
Superseded-by: https://lore.proxmox.com/all/20260312145423.434537-1-m.sandoval@proxmox.com/T/#u
--
Maximiliano
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2026-03-12 14:55 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-03-12 10:50 [PATCH qemu-server 0/2] memory: add verbose_description to numa policy Maximiliano Sandoval
2026-03-12 10:50 ` [PATCH qemu-server 1/2] " Maximiliano Sandoval
2026-03-12 10:50 ` [PATCH qemu-server 2/2] memory: add default numa allocation policy Maximiliano Sandoval
2026-03-12 13:26 ` Dominik Csapak
2026-03-12 14:39 ` Maximiliano Sandoval
2026-03-12 14:43 ` Dominik Csapak
2026-03-12 14:55 ` superseded: " Maximiliano Sandoval
2026-03-12 13:27 ` [PATCH qemu-server 0/2] memory: add verbose_description to numa policy Dominik Csapak
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox