From: plantulli@gmail.com
To: pbs-devel@lists.proxmox.com
Subject: Re: [PATCH v2 proxmox proxmox-backup 0/3] datastore: gc: defer and batch chunk atime updates
Date: Sat, 05 Sep 2026 22:32:09 +0200 [thread overview]
Message-ID: <20260905223209.097331@pbsiri.virtualsolution.net> (raw)
In-Reply-To: <20260811093722.735290-1-plantulli@gmail.com>
Hi,
as promised in my last mail: the first full end-to-end GC cycle with the
v2 (deferred, batched atime updates) design has now completed on datastore
A. Headline number first:
start: 2026-08-18 18:52:33
end: 2026-08-22 18:11:54 (TASK OK)
total: 3 days 23h19m
phase 1 (mark, deferred batch, size 1,048,576): 59.3h
phase 2 (sweep): 36.0h
removed garbage: 9.818 TiB
removed chunks: 5,242,712
on-disk after: 121.78 TiB / 64,562,152 chunks
dedup factor: 10.55
chunk cache hit ratio: 80.95%
For the same store, that makes the series so far:
historical (six cycles, unpatched): 21.25 - 65.81 days
v1 (whole-store prefetch): 7.33 days
v2 (deferred batch): 3.97 days
The binaries were the v2 series as posted, plus the per-run warmed-
directory tracker I described in my previous mail (skips the redundant
readdir when a later flush revisits an already-warmed directory).
Where the gain actually came from, with the honest caveats:
* Phase 2 is the big win: 36.0h vs 121.4h for v1. Normalized per swept
chunk that is ~193 -> ~538 chunks/s (~2.8x) on a comparable sweep size
(84.2M vs 69.8M chunks). One caveat: this cycle had ~3.5x fewer chunks
to actually unlink (5.2M vs 18.2M), and unlinks are the expensive part
of the sweep, so the per-chunk rate comparison flatters v2 somewhat.
Even discounting that, the sweep clearly benefits from metadata still
being warm from the flush readdirs, where in v1 the upfront prefetch
had been evicted long before phase 2 started.
* Phase 1 was comparable to v1, not faster: 59.3h vs v1's 53.5h plus a
1h upfront prefetch. Consistent with what I reported earlier about the
first flush on a cold store at the default batch size: warming up to 1M
chunks spread over nearly all 65,536 directories in one synchronous
flush is a lot of work in one place. This is more support for making
the batch size independently tunable for benchmarking, as you
suggested; I briefly started a run at batch size 131,072 but aborted it
for unrelated operational reasons, so I don't have a clean comparison
yet.
* This run did not start fully cold: the v1 cycle had finished about a
day earlier, so some metadata was still cached. The next scheduled run
on this store (Sep 16) will be a cold start; I'll report back if the
picture changes materially.
Also worth noting: on our smaller datastore B (~10M chunks), daily GC
with v2 is now routine at ~40-50 minutes total, with phase 1 around 15
minutes - down from over 17 hours for phase 1 alone before this work
started.
Thanks,
Enrico
prev parent reply other threads:[~2026-09-05 20:32 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-10 5:01 [PATCH proxmox proxmox-backup 0/3] datastore: gc: prefetch chunk metadata before phase 1 Enrico Plantulli
2026-08-10 5:01 ` [PATCH proxmox 1/3] pbs-api-types: add gc chunk metadata prefetch tuning option Enrico Plantulli
2026-08-10 5:01 ` [PATCH proxmox-backup 2/3] datastore: gc: optionally prefetch chunk metadata before phase 1 Enrico Plantulli
2026-08-10 10:19 ` Christian Ebner
2026-08-10 15:05 ` Enrico Plantulli
2026-08-10 5:02 ` [PATCH proxmox-backup 3/3] ui: tuning: add GC chunk metadata prefetch option Enrico Plantulli
2026-08-10 10:13 ` [PATCH proxmox proxmox-backup 0/3] datastore: gc: prefetch chunk metadata before phase 1 Christian Ebner
2026-08-10 20:32 ` Enrico Plant
2026-08-11 8:23 ` Christian Ebner
2026-08-11 9:37 ` [PATCH v2 proxmox proxmox-backup 0/3] datastore: gc: defer and batch chunk atime updates Enrico Plantulli
2026-08-11 9:37 ` [PATCH v2 proxmox 1/3] pbs-api-types: add gc chunk metadata prefetch tuning options Enrico Plantulli
2026-08-14 14:34 ` Christian Ebner
2026-08-11 9:37 ` [PATCH v2 proxmox-backup 2/3] datastore: gc: optionally defer and batch chunk atime updates Enrico Plantulli
2026-08-14 14:34 ` Christian Ebner
2026-08-11 9:37 ` [PATCH v2 proxmox-backup 3/3] ui: tuning: add GC chunk metadata prefetch options Enrico Plantulli
2026-08-14 14:48 ` [PATCH v2 proxmox proxmox-backup 0/3] datastore: gc: defer and batch chunk atime updates Christian Ebner
2026-08-18 18:38 ` plantulli
2026-09-05 20:32 ` plantulli [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260905223209.097331@pbsiri.virtualsolution.net \
--to=plantulli@gmail.com \
--cc=pbs-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox