From: Matthias Heiserer <m.heiserer@proxmox.com>
To: pve-devel@lists.proxmox.com
Subject: Re: [pve-devel] [PATCH 3/5] fix #3593: Added vm core pinning qemu-server
Date: Wed, 8 Jun 2022 16:45:47 +0200 [thread overview]
Message-ID: <038f219d-99d0-ed64-5122-7881ef3c17e6@proxmox.com> (raw)
In-Reply-To: <20220608115428.250668-4-daniel@bowdernet.com>
I'm not sure where it comes from, but when starting a VM, the task log
receives a bunch of messages on changed affinity:
pid 95121's current affinity list: 0-7
pid 95121's new affinity list: 2,3
pid 95122's current affinity list: 0-7
pid 95122's new affinity list: 2,3
pid 95123's current affinity list: 0-7
pid 95123's new affinity list: 2,3
pid 95184's current affinity list: 0-7
pid 95184's new affinity list: 2,3
pid 95185's current affinity list: 0-7
pid 95185's new affinity list: 2,3
pid 95187's current affinity list: 0-7
pid 95187's new affinity list: 2,3
Can we avoid showing them? I don't think they offer any insight, because
as I understand it, when starting, the current affinity list is always
all available cores.
On 08.06.2022 13:54, Daniel Bowder wrote:
> Signed-off-by: Daniel Bowder <daniel@bowdernet.com>
> ---
> The third patch adds cpuset as a valid object in the qm conf file. A new type is created called 'pve-cpuset' so that the cpuset can go through some validation before passing it to the taskset command. The exec_taskset command is executed just after the 'post-start' hookscript, which ensures that there is a valid PID to pin.
The commit message should be above the lines :)
Otherwise, it won't be part of the commit, but only a comment visible on
the mailing list.
> PVE/QemuServer.pm | 49 +++++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 49 insertions(+)
>
> diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm
> index e9aa248..6b9abc0 100644
> --- a/PVE/QemuServer.pm
> +++ b/PVE/QemuServer.pm
> @@ -713,6 +713,11 @@ EODESCR
> description => "Some (read-only) meta-information about this guest.",
> optional => 1,
> },
> + cpuset => {
> + type => 'string', format => 'pve-cpuset',
> + description => "Specifies the cpu core numbers to pin the vm qemu processes to with 'taskset'.",
> + optional => 1,
> + },
> };
>
> my $cicustom_fmt = {
> @@ -5802,6 +5807,8 @@ sub vm_start_nolock {
>
> PVE::GuestHelpers::exec_hookscript($conf, $vmid, 'post-start');
>
> + PVE::GuestHelpers::exec_taskset($conf, $vmid);
> +
> return $res;
> }
>
> @@ -8214,4 +8221,46 @@ sub check_volume_storage_type {
> return 1;
> }
>
> +sub parse_cpuset {
> + my ($data) = @_;
> +
> + my $res = "";
> +
> + # Parse cpuset value
> + foreach my $value (PVE::Tools::split_list($data)) {
> + if ($value =~ m/^([0-9]+)-([0-9]+)$/) {
> + if (int($1) > int($2)) {
> + die "invalid cpuset value '$value', left value must be <= right\n";
> + }
> + my @range = (int($1) .. int($2));
> + for my $cpu (@range) {
> + $res .= "," . $cpu;
> + }
> + } elsif ($value =~ m/^([0-9]+)$/) {
> + $res .= "," . $1;
> + } else {
> + die "invalid cpuset value '$value'\n";
> + }
> + }
> +
> + if (!$res) {
> + die "invalid cpuset '$data'\n";
> + }
> +
> + # Trim leading ","
> + $res = substr($res, 1);
> + return $res;
> +}
> +
> +PVE::JSONSchema::register_format('pve-cpuset', \&pve_verify_cpuset);
> +sub pve_verify_cpuset {
> + my ($value, $noerr) = @_;
> +
> + return $value if parse_cpuset($value);
> +
> + return if $noerr;
> +
> + die "unable to parse cpuset option\n";
> +}
> +
> 1;
BTW, my colleagues will also review your code at some point, so be
prepared that there might be some more required changes
next prev parent reply other threads:[~2022-06-08 14:46 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-08 11:54 [pve-devel] [PATCH 0/5] fix #3593: Added vm core pinning Daniel Bowder
2022-06-08 11:54 ` [pve-devel] [PATCH 1/5] fix #3593: Added vm core pinning pve-docs Daniel Bowder
2022-06-08 14:20 ` Matthias Heiserer
2022-06-08 11:54 ` [pve-devel] [PATCH 2/5] fix #3593: Added vm core pinning pve-guest-common Daniel Bowder
2022-06-08 11:54 ` [pve-devel] [PATCH 3/5] fix #3593: Added vm core pinning qemu-server Daniel Bowder
2022-06-08 14:45 ` Matthias Heiserer [this message]
2022-06-08 11:54 ` [pve-devel] [PATCH 4/5] fix #3593: Added vm core pinning proxmox-widget-toolkit Daniel Bowder
2022-06-08 11:54 ` [pve-devel] [PATCH 5/5] fix #3593: Added vm core pinning pve-manager Daniel Bowder
2022-06-08 14:39 ` Matthias Heiserer
2022-06-08 13:00 ` [pve-devel] [PATCH 0/5] fix #3593: Added vm core pinning Matthias Heiserer
2022-06-08 13:21 ` Daniel Bowder
2022-06-08 13:32 ` Matthias Heiserer
2022-06-08 13:43 ` Daniel Bowder
2022-06-09 15:46 [pve-devel] [PATCH 3/5] fix #3593: Added vm core pinning qemu-server Daniel Bowder
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=038f219d-99d0-ed64-5122-7881ef3c17e6@proxmox.com \
--to=m.heiserer@proxmox.com \
--cc=pve-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal