Add a new tuning option with allocator property. Available values: - Default is 'system', aka glibc malloc - tcmalloc (improve performance ceph librbd)
Signed-off-by: Alexandre Derumier <aderum...@odiso.com> --- PVE/QemuServer.pm | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm index 40be44d..761ab48 100644 --- a/PVE/QemuServer.pm +++ b/PVE/QemuServer.pm @@ -289,6 +289,19 @@ my $meta_info_fmt = { }, }; +my $tuning_fmt = { + allocator => { + type => 'string', + enum => [ qw(system tcmalloc) ], + default => 'system', + description => "Override the memory allocator used in QEMU via LD_PRELOAD.", + verbose_description => "Override the memory allocator used in QEMU via LD_PRELOAD." + ." Using tcmalloc might improve performance if ceph librbd is used." + ." NOTE: you must install the libtcmalloc-minimal4 package first!", + optional => 1, + }, +}; + my $confdesc = { onboot => { optional => 1, @@ -723,6 +736,12 @@ EODESCR description => "List of host cores used to execute guest processes, for example: 0,5,8-11", optional => 1, }, + tuning=> { + type => 'string', + format => $tuning_fmt, + description => "Tune some special features.", + optional => 1, + }, }; my $cicustom_fmt = { @@ -2192,6 +2211,16 @@ sub parse_rng { return $res; } +sub parse_tuning { + my ($value) = @_; + + return if !$value; + + my $res = eval { parse_property_string($tuning_fmt, $value) }; + warn $@ if $@; + return $res; +} + sub parse_meta_info { my ($value) = @_; @@ -5909,6 +5938,12 @@ sub vm_start_nolock { my $run_qemu = sub { PVE::Tools::run_fork sub { + + my $tuning = $conf->{tuning} ? parse_tuning($conf->{tuning}) : undef; + + $ENV{LD_PRELOAD} = "/usr/lib/x86_64-linux-gnu/libtcmalloc.so.4" + if $tuning && $tuning->{allocator} eq 'tcmalloc'; + PVE::Systemd::enter_systemd_scope($vmid, "Proxmox VE VM $vmid", %systemd_properties); my $tpmpid; -- 2.30.2 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel