[pve-devel] applied: [PATCH manager] vzdump/pigz: use ProcFSTools for core count, not sysconf

Wolfgang Bumiller w.bumiller at proxmox.com
Wed Sep 20 12:42:35 CEST 2017


applied

On Wed, Sep 13, 2017 at 11:10:57AM +0200, Thomas Lamprecht wrote:
> A "sysconf(84)" is not really descripitve. There is no POSIX const
> entry for _SC_NPROCESSORS_ONLN (number of processors online) as its
> not standard but an adoption of glibc.
> Better just use our proven ProcFSTool's cpuinfo method for getting
> the desired information.
> 
> This is kept only for backwards compatibillity as we guaranteed that
> we use #cpus/2 if 'pigz' is set to 1, else I would have removed this
> alltogether and just directly passed 'pigz' to the command...
> 
> Signed-off-by: Thomas Lamprecht <t.lamprecht at proxmox.com>
> ---
>  PVE/VZDump.pm | 9 +++++----
>  1 file changed, 5 insertions(+), 4 deletions(-)
> 
> diff --git a/PVE/VZDump.pm b/PVE/VZDump.pm
> index ef20e679..b7779de8 100644
> --- a/PVE/VZDump.pm
> +++ b/PVE/VZDump.pm
> @@ -7,7 +7,6 @@ use PVE::Exception qw(raise_param_exc);
>  use IO::File;
>  use IO::Select;
>  use IPC::Open3;
> -use POSIX;
>  use File::Path;
>  use PVE::RPCEnvironment;
>  use PVE::Storage;
> @@ -708,9 +707,11 @@ sub compressor_info {
>  	return ('lzop', 'lzo');
>      } elsif ($opt_compress eq 'gzip') {
>  	if ($opts->{pigz} > 0) {
> -	    # As default use int((#cores + 1)/2), we need #cores+1 for the case that #cores = 1
> -	    my $cores = POSIX::sysconf(84);
> -	    my $pigz_threads = ($opts->{pigz} > 1) ? $opts->{pigz} : int(($cores + 1)/2);
> +	    my $pigz_threads = $opts->{pigz};
> +	    if ($pigz_threads == 1) {
> +		my $cpuinfo = PVE::ProcFSTools::read_cpuinfo();
> +		$pigz_threads = int(($cpuinfo->{cpus} + 1)/2);
> +	    }
>  	    return ("pigz -p ${pigz_threads}", 'gz');
>  	} else {
>  	    return ('gzip', 'gz');
> -- 
> 2.11.0




More information about the pve-devel mailing list