Hi,

On 2017-02-27 15:11:40 +0100, Tomas Vondra wrote:
> > I've not yet reviewed the generational allocator yet, but during these
> > measurements I get:
> > postgres[3970][1]=# select count(*) FROM pg_logical_slot_get_changes('ttt', 
> > NULL, NULL);
> > WARNING:  01000: problem in Generation Tuples: number of free chunks 0 in 
> > block 0x55d011ef10f0 exceeds 7234 allocated
> > LOCATION:  GenerationCheck, generation.c:693
> > WARNING:  01000: problem in Generation Tuples: number of free chunks 0 in 
> > block 0x55d01023eba0 exceeds 65532 allocated
> > LOCATION:  GenerationCheck, generation.c:693
> > WARNING:  01000: problem in Generation Tuples: number of free chunks 0 in 
> > block 0x55d00d7fb870 exceeds 65532 allocated
> > LOCATION:  GenerationCheck, generation.c:693
> > WARNING:  01000: problem in Generation Tuples: number of free chunks 0 in 
> > block 0x55d00cde17b0 exceeds 65531 allocated
> > LOCATION:  GenerationCheck, generation.c:693
> > 
> > that seems to occur when there's currently in-progress transactions when
> > finishing decoding:
> > 
> ...
> > 
> > could it be that the test's condition is inverted?
> > 
> 
> Yeah, that seems like the culprit - the condition seems wrong. I wonder why
> I haven't seen it during my tests, though ...

I suspect it's because your tests only triggered a memory context reset
when it was empty... But I ran decoding while a concurrent write
transaction was ongoing...


> > I'll work on getting slab committed first, and then review / edit /
> > commit generation.c later.  One first note there is that I'm wondering
> > if generation.c is a too generic filename.

> Naming things is hard.

Indeed.  I was thinking of genalloc, but that might be understood as
general, rather generational...

Greetings,

Andres Freund


-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to