[pve-devel] qemu + tcmalloc for rbd

Fiona Ebner f.ebner at proxmox.com
Wed Jan 10 10:12:06 CET 2024

Am 09.01.24 um 18:02 schrieb DERUMIER, Alexandre:
> Hi,
> I still have this last year patch pending
> https://lists.proxmox.com/pipermail/pve-devel/2023-May/056815.html
> to enabled conditionnaly tcmalloc in qemu 
> It's still required for performance with librbd with last qemu /lirbd
> I get a 30-40% performance boost in iops and latency for small
> read/writes.
> I would like to have a solution in proxmox repo, instead of maintain it
> on my side.
> Currently, In production, I compile qemu with tcmalloc at build.
> This patch serie, allow to do use LD_PRELOAD +  disable malloc_trim()
> call in qemu.
> I'm not expert in C (I re-used code from haproxy, which is doing
> exactly the same thing with tcmalloc && trim). 
> So if somebody can review it, it could be great :)

Unfortunately, the QEMU patch seems rather hacky and I'd prefer to not
include and maintain it. If tcmalloc would just provide malloc_trim()
(e.g. as a no-op), there would be no need for the ugly
at-runtime-detection at all.

> Another way (maybe safer), is to build 2 binary in same package 
> (/usr/bin/kvm-tcmalloc  && /usr/bin/kvm), and give option to user to
> choose it.

If we go for this route, I'd rather have two conflicting packages to
avoid the redundant space usage for most people. Or if we really want to
support being able to use both on a single system, an add-on kind of
package with just the second binary.

For reference, since it's been a while, previous discussion:

Maybe you'd also like to ping the upstream enhancement request for glibc?

More information about the pve-devel mailing list