From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id C41941FF137 for ; Tue, 14 Apr 2026 13:08:41 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id A698B152C4; Tue, 14 Apr 2026 13:09:29 +0200 (CEST) Message-ID: Date: Tue, 14 Apr 2026 13:08:52 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2 pve-qemu 0/2] Re-enable tcmalloc as the memory allocator To: Kefu Chai , pve-devel@lists.proxmox.com References: <20260414054645.405151-1-k.chai@proxmox.com> Content-Language: en-US From: Fiona Ebner In-Reply-To: <20260414054645.405151-1-k.chai@proxmox.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1776164857578 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.007 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment RCVD_IN_VALIDITY_CERTIFIED_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_RPBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_SAFE_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Message-ID-Hash: VF3E66TPRFFP2SV4INUCF2RJKEM4PYXC X-Message-ID-Hash: VF3E66TPRFFP2SV4INUCF2RJKEM4PYXC X-MailFrom: f.ebner@proxmox.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Proxmox VE development discussion List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: Am 14.04.26 um 7:45 AM schrieb Kefu Chai: > Changes since v1: > > * Rename patch 1/2 commit title to "add patch to support using > tcmalloc as the memory allocator" per Fiona's suggestion, since > this patch only adds the QEMU source patch without enabling > tcmalloc yet. > * Rename the inner patch (0048) Subject to "PVE-Backup: support > using tcmalloc as the memory allocator" to reflect that the code > change is specific to the backup cleanup path. > * Add Acked-by from Fiona. > > No code changes -- only titles and trailers. > > Kefu Chai (2): > add patch to support using tcmalloc as the memory allocator > d/rules: enable tcmalloc as the memory allocator > > debian/control | 1 + > ...use-tcmalloc-as-the-memory-allocator.patch | 77 +++++++++++++++++++ > debian/patches/series | 1 + > debian/rules | 1 + > 4 files changed, 80 insertions(+) > create mode 100644 debian/patches/pve/0048-PVE-use-tcmalloc-as-the-memory-allocator.patch > > -- > 2.47.3 I ran into a segmentation fault in tc_memalign() while doing a snapshot with RAM and RBD volumes now: [I] root@pve9a1 ~# cat /etc/pve/qemu-server/103.conf balloon: 4992 bios: ovmf boot: order=scsi0;net0;ide1 cores: 6 cpu: host efidisk0: rbd:vm-103-disk-3,efitype=4m,ms-cert=2023k,pre-enrolled-keys=1,size=1M hotplug: disk,network,usb,memory machine: pc-q35-10.1 memory: 7168 meta: creation-qemu=9.1.2,ctime=1736951759 name: win11-machine-ver net0: e1000=BC:24:11:BC:50:E8,bridge=vnet0,firewall=1 net1: virtio=BC:24:11:75:BE:22,bridge=vnet0,firewall=1 numa: 1 ostype: win11 parent: pre-enroll scsi0: rbd:vm-103-disk-1,iothread=1,size=52G scsihw: virtio-scsi-single smbios1: uuid=28e3302d-4489-466a-8a4c-835c79a8f2a0 sockets: 1 tpmstate0: rbd:vm-103-disk-2,size=4M,version=v2.0 unused0: rbd:vm-103-disk-0 vga: qxl vmgenid: 6787d0c6-7ef5-498f-b9a1-7519262b661c [I] root@pve9a1 ~# cat /etc/pve/storage.cfg | grep -A4 "rbd: rbd" rbd: rbd content images,rootdir krbd 0 pool rbd [I] root@pve9a1 ~# uname -a Linux pve9a1 7.0.0-1-rc6-pve #1 SMP PREEMPT_DYNAMIC PMX 7.0.0-1~rc6+1 (2026-03-30T09:17Z) x86_64 GNU/Linux Note that I did play around with memory hotplug and ballooning before as well, not sure if related. Unfortunately, I don't have the debug symbols for librbd.so.1 right now: > Program terminated with signal SIGSEGV, Segmentation fault. > #0 0x00007ea8da6442d0 in tc_memalign () from /lib/x86_64-linux-gnu/libtcmalloc.so.4 > [Current thread is 1 (Thread 0x7ea8ca66a6c0 (LWP 109157))] > (gdb) bt > #0 0x00007ea8da6442d0 in tc_memalign () from /lib/x86_64-linux-gnu/libtcmalloc.so.4 > #1 0x00007ea8da644412 in tc_posix_memalign () from /lib/x86_64-linux-gnu/libtcmalloc.so.4 > #2 0x00007ea8da8b81e6 in ceph::buffer::v15_2_0::list::refill_append_space(unsigned int) () from /lib/librados.so.2 > #3 0x00007ea8da8b83b2 in ceph::buffer::v15_2_0::list::append(char const*, unsigned int) () from /lib/librados.so.2 > #4 0x00007ea8da897335 in librados::v14_2_0::ObjectOperation::exec(char const*, char const*, ceph::buffer::v15_2_0::list&) () > from /lib/librados.so.2 > #5 0x00007ea8db03dca9 in ?? () from /lib/librbd.so.1 > #6 0x00007ea8dad6f96a in ?? () from /lib/librbd.so.1 > #7 0x00007ea8daba84c2 in ?? () from /lib/librbd.so.1 > #8 0x00007ea8dae25db4 in ?? () from /lib/librbd.so.1 > #9 0x00007ea8dae2d9e3 in ?? () from /lib/librbd.so.1 > #10 0x00007ea8dae20a54 in ?? () from /lib/librbd.so.1 > #11 0x00007ea8dacdf8c0 in ?? () from /lib/librbd.so.1 > #12 0x00007ea8dacdfc0f in ?? () from /lib/librbd.so.1 > #13 0x00007ea8dae1a788 in ?? () from /lib/librbd.so.1 > #14 0x00007ea8dae1af2f in ?? () from /lib/librbd.so.1 > #15 0x00007ea8dae1c9f6 in ?? () from /lib/librbd.so.1 > #16 0x00007ea8dae12e62 in ?? () from /lib/librbd.so.1 > #17 0x00007ea8dacdc932 in ?? () from /lib/librbd.so.1 > #18 0x00007ea8dacdcdb7 in ?? () from /lib/librbd.so.1 > #19 0x00007ea8dacdcf03 in ?? () from /lib/librbd.so.1 > #20 0x00007ea8dadcb09c in ?? () from /lib/librbd.so.1 > #21 0x00007ea8da8f2598 in ?? () from /lib/librados.so.2 > #22 0x00007ea8da8dfa71 in ?? () from /lib/librados.so.2 > #23 0x00007ea8da8f5f63 in ?? () from /lib/librados.so.2 > #24 0x00007ea8d9ce1224 in ?? () from /lib/x86_64-linux-gnu/libstdc++.so.6 > #25 0x00007ea8da4aab7b in ?? () from /lib/x86_64-linux-gnu/libc.so.6 > #26 0x00007ea8da5287f8 in ?? () from /lib/x86_64-linux-gnu/libc.so.6 With the main thread doing: > Thread 12 (Thread 0x7ea8d72f2900 (LWP 109123)): > #0 0x00007ea8da4b29ee in ?? () from /lib/x86_64-linux-gnu/libc.so.6 > #1 0x00007ea8da4a7668 in ?? () from /lib/x86_64-linux-gnu/libc.so.6 > #2 0x00007ea8da4a7c8c in ?? () from /lib/x86_64-linux-gnu/libc.so.6 > #3 0x00007ea8da4aa158 in pthread_cond_wait () from /lib/x86_64-linux-gnu/libc.so.6 > #4 0x00007ea8dabbc89b in ?? () from /lib/librbd.so.1 > #5 0x00007ea8dac4a9c5 in ?? () from /lib/librbd.so.1 > #6 0x00007ea8daafafbc in rbd_snap_create () from /lib/librbd.so.1 > #7 0x000055e3a051fb00 in qemu_rbd_snap_create (bs=, sn_info=0x55e3ddfb61c8) at ../block/rbd.c:1693 > #8 0x000055e3a0478268 in internal_snapshot_action (internal=, tran=tran@entry=0x55e3dd24b438, errp=errp@entry=0x7ffc43f674c8) at ../blockdev.c:1301 > #9 0x000055e3a047b67b in transaction_action (act=0x7ffc43f67540, block_job_txn=, tran=, errp=0x7ffc43f674c8) at ../blockdev.c:2177 > #10 qmp_transaction (actions=actions@entry=0x7ffc43f67550, properties=properties@entry=0x0, errp=0x7ffc43f67588, errp@entry=0x7ffc43f67528) at ../blockdev.c:2267 > #11 0x000055e3a047c0de in blockdev_do_action (action=0x7ffc43f67540, errp=0x7ffc43f67528) at ../blockdev.c:1072 > #12 qmp_blockdev_snapshot_internal_sync (device=, name=, errp=errp@entry=0x7ffc43f67588) at ../blockdev.c:1123 > #13 0x000055e3a056234b in qmp_marshal_blockdev_snapshot_internal_sync (args=, ret=, errp=0x7ea8d6a9aed0) at qapi/qapi-commands-block-core.c:2164 > #14 0x000055e3a05cd11c in do_qmp_dispatch_bh (opaque=0x7ea8d6a9aee0) at ../qapi/qmp-dispatch.c:136 > #15 0x000055e3a05ede13 in aio_bh_poll (ctx=ctx@entry=0x55e3db31c000) at ../util/async.c:219 > #16 0x000055e3a05d73cf in aio_dispatch (ctx=0x55e3db31c000) at ../util/aio-posix.c:390 > #17 0x000055e3a05edb76 in aio_ctx_dispatch (source=, callback=, user_data=) at ../util/async.c:364 > #18 0x00007ea8dcdc0385 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 > #19 0x00007ea8dcdc2c78 in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 > #20 0x000055e3a05ef278 in glib_pollfds_poll () at ../util/main-loop.c:290 > #21 os_host_main_loop_wait (timeout=0) at ../util/main-loop.c:313 > #22 main_loop_wait (nonblocking=nonblocking@entry=0) at ../util/main-loop.c:592 > #23 0x000055e3a0211680 in qemu_main_loop () at ../system/runstate.c:904 > #24 0x000055e3a0538450 in qemu_default_main (opaque=opaque@entry=0x0) at ../system/main.c:50 > #25 0x000055e39ff7eb09 in main (argc=, argv=) at ../system/main.c:93