Re: Avoid memory leaks during base backups
От | Bharath Rupireddy |
---|---|
Тема | Re: Avoid memory leaks during base backups |
Дата | |
Msg-id | CALj2ACUJVSLtVoHcjrgpZVH0H0+pPZYx1OJ717gXVXkrpvr6Ww@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Avoid memory leaks during base backups (Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com>) |
Ответы |
Re: Avoid memory leaks during base backups
|
Список | pgsql-hackers |
On Wed, Oct 19, 2022 at 9:23 PM Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com> wrote: > > On Wed, Oct 19, 2022 at 8:10 PM Robert Haas <robertmhaas@gmail.com> wrote: > > > One option is to just have do_pg_start_backup() blow > > away any old memory context before it allocates any new memory, and > > forget about releasing anything in PostgresMain(). That means memory > > could remain allocated after a failure until you next retry the > > operation, but I don't think that really matters. It's not a lot of > > memory; we just don't want it to accumulate across many repetitions. > > This seems reasonable to me. I tried implementing this, please see the attached v7 patch. Currently, memory allocated in the new memory context is around 4KB [1]. In the extreme and rarest of the rare cases where somebody executes select pg_backup_start(repeat('foo', 1024)); or a failure occurs before reaching pg_backup_stop() on all of the sessions (max_connections) at once, the maximum/peak memory bloat/leak is around max_connections*4KB, which will still be way less than the total amount of RAM. Hence, I think this approach seems very reasonable and non-invasive yet can solve the memory leak problem. Thoughts? [1] (gdb) p *backupcontext $4 = {type = T_AllocSetContext, isReset = false, allowInCritSection = false, mem_allocated = 4232, methods = 0x55c925b81f90 <mcxt_methods+240>, parent = 0x55c92766d2a0, firstchild = 0x0, prevchild = 0x0, nextchild = 0x55c92773f1f0, name = 0x55c9258be05c "on-line backup context", ident = 0x0, reset_cbs = 0x0} -- Bharath Rupireddy PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com
Вложения
В списке pgsql-hackers по дате отправления: