Thread

  1. Re: [PATCH] Add memory usage reporting to VACUUM VERBOSE

    Masahiko Sawada <sawada.mshk@gmail.com> — 2025-12-18T18:35:31Z

    On Tue, Dec 9, 2025 at 7:44 PM Tatsuya Kawata
    <kawatatatsuya0913@gmail.com> wrote:
    >
    > Hi all,
    >
    > Just a gentle ping on this patch.
    > Please let me know if there are any additional comments
    > or points I should address in the next revision.
    
    Sorry for the late reply. I've reviewed the v7 patch and here are some comments:
    
    +   /*
    +    * Account for initial dead_items memory if nothing was collected.
    +    */
    +   if (vacrel->dead_items_info->num_items == 0 &&
    vacrel->num_dead_items_resets == 0)
    +       vacrel->total_dead_items_bytes +=
    TidStoreMemoryUsage(vacrel->dead_items);
    
    IIUC this line aims to add the initial data related to TidStore
    including underlying radix tree and the bump context to the total
    memory usage. I'm not sure why we do that only when no dead items are
    collected. If we add these sizes, should we do that also when the
    TidStore is reset due to being full and there are no dead items in the
    subsequent blocks, no? I guess it would make more sense to consider
    adding TidStoreMemoryUsage() also before cleaning up the TidStore.
    
    ---
    +           appendStringInfo(&buf,
    +                            ngettext("memory usage: %.2f MB in total,
    with dead-item storage reset %d time (memory allocated: %.2f MB)\n",
    +                                     "memory usage: %.2f MB in total,
    with dead-item storage reset %d times (memory allocated: %.2f MB)\n",
    +                                     vacrel->num_dead_items_resets),
    +                            (double) vacrel->total_dead_items_bytes /
    (1024 * 1024),
    +                            vacrel->num_dead_items_resets,
    +                            (double) dead_items_max_bytes / (1024 * 1024));
    
    The memory usage report would be something like:
    
    memory usage: 0.02 MB in total, with dead-item storage reset 0 times
    (memory allocated: 64.00 MB)
    
    I think it's not correct that we say "memory allocated: 64.00MB" in
    this case because we don't actually allocate 64MB. Since we're using a
    TidStore for dead items storage, we incrementally allocate its space
    when needed.
    
    Regards,
    
    --
    Masahiko Sawada
    Amazon Web Services: https://aws.amazon.com