[pve-devel] [PATCH v2 container 1/7] config: add pool usage helper
Daniel Kral
d.kral at proxmox.com
Thu Dec 19 17:01:57 CET 2024
On 16/04/2024 14:20, Fabian Grünbichler wrote:
> to avoid repeating those calculations all over the place.
>
> Signed-off-by: Fabian Grünbichler <f.gruenbichler at proxmox.com>
> ---
> src/PVE/LXC/Config.pm | 35 +++++++++++++++++++++++++++++++++++
> 1 file changed, 35 insertions(+)
>
> diff --git a/src/PVE/LXC/Config.pm b/src/PVE/LXC/Config.pm
> index 1664a35..a6baccd 100644
> --- a/src/PVE/LXC/Config.pm
> +++ b/src/PVE/LXC/Config.pm
> @@ -11,6 +11,7 @@ use PVE::DataCenterConfig;
> use PVE::GuestHelpers;
> use PVE::INotify;
> use PVE::JSONSchema qw(get_standard_option);
> +use PVE::ProcFSTools;
> use PVE::Tools;
>
> use PVE::LXC;
> @@ -1886,4 +1887,38 @@ sub foreach_passthrough_device {
> }
> }
>
> +my $cpuinfo = PVE::ProcFSTools::read_cpuinfo();
> +
> +# for determining pool usage vs limits
> +#
> +# this gives the higher of pending or currently configured
> +sub get_pool_usage {
hm, would it make sense to rename this sub to `get_configured_lxc_usage`
or something similar to make it clear that it is used for the currently
configured resources and not for the running? It was a little confusing
to me at first, that `$usage` is used for the configuration in 'confmem'
and not for 'runmem'. Also dropped the `_pool` because it could be
independently used in the future.
> + my ($class, $conf) = @_;
> +
> + my $usage = {};
> +
> + my $get_max = sub {
> + my $max = 0;
> +
> + for my $curr (@_) {
> + $max = $curr if defined($curr) && $curr > $max;
> + }
> +
> + return $max;
> + };
> +
> + $usage->{cpu} = $get_max->(
> + $conf->{pending}->{cores},
> + $conf->{cores},
> + );
nit: this could be written in one line like for `$swap` and `$mem`.
> + $usage->{cpu} = $cpuinfo->{cpus} if !$usage->{cpu};
nit: we could name this 'cpus' just for consistency's sake (as 'cpu'
holds the cpu usage % and 'cpus' the amount of cores).
> +
> + my $swap = $get_max->($conf->{pending}->{swap}, $conf->{swap});
> + my $mem = $get_max->($conf->{pending}->{memory}, $conf->{memory}, 512);
> + $usage->{mem} = $mem+$swap;
> + $usage->{mem} *= 1024*1024;
> +
> + return $usage;
> +}
> +
> 1;
> --
> 2.39.2
More information about the pve-devel
mailing list