From: "Fabian Grünbichler" <f.gruenbichler@proxmox.com>
To: Wolfgang Bumiller <w.bumiller@proxmox.com>
Cc: pve-devel@lists.proxmox.com
Subject: Re: [pve-devel] [PATCH manager 2/4] pvestatd: collect and broadcast pool usage
Date: Mon, 15 Apr 2024 14:36:45 +0200 [thread overview]
Message-ID: <1713183846.hlodlsxnxs.astroid@yuna.none> (raw)
In-Reply-To: <ydtgpstjnnzm2cwlhx2q63gtnk625lklvxaudpmwejxclss2ox@wwv2uzkejcuw>
On April 11, 2024 11:32 am, Wolfgang Bumiller wrote:
> On Wed, Apr 10, 2024 at 03:13:08PM +0200, Fabian Grünbichler wrote:
>> so that other nodes can query it and both block changes that would violate the
>> limits, and mark pools which are violating it currently accordingly.
>>
>> Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
>> ---
>> PVE/Service/pvestatd.pm | 59 ++++++++++++++++++++++++++++++++++++++---
>> 1 file changed, 55 insertions(+), 4 deletions(-)
>>
>> diff --git a/PVE/Service/pvestatd.pm b/PVE/Service/pvestatd.pm
>> index 2515120c6..d7e4755e9 100755
>> --- a/PVE/Service/pvestatd.pm
>> +++ b/PVE/Service/pvestatd.pm
>> @@ -231,7 +231,7 @@ sub auto_balloning {
>> }
>>
>> sub update_qemu_status {
>> - my ($status_cfg) = @_;
>> + my ($status_cfg, $pool_membership, $pool_usage) = @_;
>>
>> my $ctime = time();
>> my $vmstatus = PVE::QemuServer::vmstatus(undef, 1);
>> @@ -242,6 +242,21 @@ sub update_qemu_status {
>> my $transactions = PVE::ExtMetric::transactions_start($status_cfg);
>> foreach my $vmid (keys %$vmstatus) {
>> my $d = $vmstatus->{$vmid};
>> +
>> + if (my $pool = $pool_membership->{$vmid}) {
>> + $pool_usage->{$pool}->{$vmid} = {
>> + cpu => {
>> + config => ($d->{confcpus} // 0),
>> + run => ($d->{runcpus} // 0),
>> + },
>> + mem => {
>> + config => ($d->{confmem} // 0),
>> + run => ($d->{runmem} // 0),
>> + },
>
> I feel like it should be possible to build this hash given the `keys` in
> the limit hash... The `cpu-run/config` vs `{cpu}->{run}` vs `runcpu`
> naming feels a bit awkward to me.
not really, unless you want me to introduce a helper that is longer than
the hard-coded variant here?
I already have one for limit key -> usage hash (keys) for places where
we are mostly 'key agnostic' (i.e., PVE::GuestHelpers), but the vmstatus
hash has different keys again (see reply there) and those are only
relevant (in relation to the other limit/usage stuff) for the two subs
here, so if we extend the vmstatus return schema (e.g., with fields for
disk limits), then we'd need to extend the helper here anyway, just like
we'd need to extend the hard-coded variant, so I don't really see a
benefit?
adding a new limit "category" will require changes to:
- pve-access-control (for the user.cfg schema)
- qemu-server/pve-container (for actually providing the usage data via
vmstatus, and checking the limits in all the places where current
usage would change)
- pve-manager (for displaying/editing/.. and pvestatd conversion between
vmstatus and usage, i.e., this part here)
next prev parent reply other threads:[~2024-04-15 12:37 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-10 13:12 [pve-devel] [RFC qemu-server/pve-container/.. 0/19] pool resource limits Fabian Grünbichler
2024-04-10 13:12 ` [pve-devel] [PATCH access-control 1/1] pools: define " Fabian Grünbichler
2024-04-10 13:12 ` [pve-devel] [PATCH container 1/7] config: add pool usage helper Fabian Grünbichler
2024-04-10 13:13 ` [pve-devel] [PATCH container 2/7] status: add pool usage fields Fabian Grünbichler
2024-04-11 9:28 ` Wolfgang Bumiller
2024-04-15 9:32 ` Fabian Grünbichler
2024-04-10 13:13 ` [pve-devel] [PATCH container 3/7] create/restore/clone: handle pool limits Fabian Grünbichler
2024-04-10 13:13 ` [pve-devel] [PATCH container 4/7] start: " Fabian Grünbichler
2024-04-10 13:13 ` [pve-devel] [PATCH container 5/7] hotplug: " Fabian Grünbichler
2024-04-10 13:13 ` [pve-devel] [PATCH container 6/7] rollback: " Fabian Grünbichler
2024-04-10 13:13 ` [pve-devel] [PATCH container 7/7] update: " Fabian Grünbichler
2024-04-11 7:23 ` Fabian Grünbichler
2024-04-11 10:03 ` Wolfgang Bumiller
2024-04-15 9:35 ` Fabian Grünbichler
2024-04-10 13:13 ` [pve-devel] [PATCH guest-common 1/1] helpers: add pool limit/usage helpers Fabian Grünbichler
2024-04-11 9:17 ` Wolfgang Bumiller
2024-04-15 9:38 ` Fabian Grünbichler
2024-04-10 13:13 ` [pve-devel] [PATCH manager 1/4] api: pools: add limits management Fabian Grünbichler
2024-04-11 9:24 ` Wolfgang Bumiller
2024-04-10 13:13 ` [pve-devel] [PATCH manager 2/4] pvestatd: collect and broadcast pool usage Fabian Grünbichler
2024-04-11 9:32 ` Wolfgang Bumiller
2024-04-15 12:36 ` Fabian Grünbichler [this message]
2024-04-10 13:13 ` [pve-devel] [PATCH manager 3/4] api: return pool usage when queried Fabian Grünbichler
2024-04-10 13:13 ` [pve-devel] [PATCH manager 4/4] ui: add pool limits and usage Fabian Grünbichler
2024-04-10 13:13 ` [pve-devel] [PATCH qemu-server 1/6] config: add pool usage helper Fabian Grünbichler
2024-04-10 13:13 ` [pve-devel] [PATCH qemu-server 2/6] vmstatus: add usage values for pool limits Fabian Grünbichler
2024-04-10 13:13 ` [pve-devel] [PATCH qemu-server 3/6] create/restore/clone: handle " Fabian Grünbichler
2024-04-10 13:13 ` [pve-devel] [PATCH qemu-server 4/6] update/hotplug: " Fabian Grünbichler
2024-04-10 13:13 ` [pve-devel] [PATCH qemu-server 5/6] start: " Fabian Grünbichler
2024-04-10 13:13 ` [pve-devel] [PATCH qemu-server 6/6] rollback: " Fabian Grünbichler
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=1713183846.hlodlsxnxs.astroid@yuna.none \
--to=f.gruenbichler@proxmox.com \
--cc=pve-devel@lists.proxmox.com \
--cc=w.bumiller@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox