From: | Andres Freund <andres(at)2ndquadrant(dot)com> |
---|---|
To: | pgsql-hackers(at)postgresql(dot)org |
Subject: | slow startup due to LWLockAssign() spinlock |
Date: | 2014-02-02 16:43:03 |
Message-ID: | 20140202164303.GQ5930@awork2.anarazel.de |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Hi,
On larger, multi-socket, machines, startup takes a fair bit of time. As
I was profiling anyway I looked into it and noticed that just about all
of it is spent in LWLockAssign() called by InitBufferPool(). Starting
with shared_buffers=48GB on the server Nate Boley provided, takes about
12 seconds. Nearly all of it spent taking the ShmemLock spinlock.
Simply modifying LWLockAssign() to not take the spinlock when
!IsUnderPostmaster speeds it up to 2 seconds. While certainly not making
LWLockAssign() prettier it seems enough of a speedup to be worthwile
nonetheless.
Since this code is also hit when do an emergency restart, I'd say it has
practical relevance...
Greetings,
Andres Freund
--
Andres Freund http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services
Attachment | Content-Type | Size |
---|---|---|
faster-init-buffer-pool.diff | text/x-diff | 1.5 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Greg Stark | 2014-02-02 16:44:15 | Re: Recovery inconsistencies, standby much larger than primary |
Previous Message | Andres Freund | 2014-02-02 16:31:38 | Re: mvcc catalo gsnapshots and TopTransactionContext |