From: Christian Ebner <c.ebner@proxmox.com>
To: plantulli@gmail.com, pbs-devel@lists.proxmox.com
Subject: Re: [PATCH v2 proxmox proxmox-backup 0/3] datastore: gc: defer and batch chunk atime updates
Date: Mon, 14 Sep 2026 11:22:05 +0200 [thread overview]
Message-ID: <b2704d20-e9d1-41f3-8de2-225f4d3e0d87@proxmox.com> (raw)
In-Reply-To: <20260905223209.097331@pbsiri.virtualsolution.net>
On 9/5/26 10:32 PM, plantulli@gmail.com wrote:
> 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
Thank you for your additional information, there still is room for
further optimization as I tried to emphasize in my review of version 2
of the patch series, please take that into consideration as well.
Thanks!
prev parent reply other threads:[~2026-09-14 9:22 UTC|newest]
Thread overview: 19+ 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
2026-09-14 9:22 ` Christian Ebner [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=b2704d20-e9d1-41f3-8de2-225f4d3e0d87@proxmox.com \
--to=c.ebner@proxmox.com \
--cc=pbs-devel@lists.proxmox.com \
--cc=plantulli@gmail.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