• Tomas Vondra's avatar
    Add transparent block-level memory accounting · 5dd7fc15
    Tomas Vondra authored
    Adds accounting of memory allocated in a memory context. Compared to
    various ad hoc solutions, the main advantage is that the accounting is
    transparent and does not require direct control over allocations (this
    matters for use cases where the allocations happen in user code, like
    for example aggregate states allocated in a transition functions).
    
    To reduce overhead, the accounting happens at the block level (not for
    individual chunks) and only the context immediately owning the block is
    updated. When inquiring about amount of memory allocated in a context,
    we have to recursively walk all children contexts.
    
    This "lazy" accounting works well for cases with relatively small number
    of contexts in the relevant subtree and/or with infrequent inquiries.
    
    Author: Jeff Davis
    Reivewed-by: Tomas Vondra, Melanie Plageman, Soumyadeep Chakraborty
    Discussion: https://www.postgresql.org/message-id/flat/027a129b8525601c6a680d27ce3a7172dab61aab.camel@j-davis.com
    5dd7fc15
generation.c 25.3 KB