all lists on 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal