public inbox for pbs-devel@lists.proxmox.com
 help / color / mirror / Atom feed
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!




      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
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal