Re: Move PinBuffer and UnpinBuffer to atomics
От | Andres Freund |
---|---|
Тема | Re: Move PinBuffer and UnpinBuffer to atomics |
Дата | |
Msg-id | 20160329171308.GD25907@awork2.anarazel.de обсуждение исходный текст |
Ответ на | Re: Move PinBuffer and UnpinBuffer to atomics (Robert Haas <robertmhaas@gmail.com>) |
Ответы |
Re: Move PinBuffer and UnpinBuffer to atomics
Re: Move PinBuffer and UnpinBuffer to atomics |
Список | pgsql-hackers |
On 2016-03-29 13:09:05 -0400, Robert Haas wrote: > On Mon, Mar 28, 2016 at 9:09 AM, Andres Freund <andres@anarazel.de> wrote: > > On 2016-03-28 11:48:46 +0530, Dilip Kumar wrote: > >> On Sun, Mar 27, 2016 at 5:48 PM, Andres Freund <andres@anarazel.de> wrote: > >> > What's sizeof(BufferDesc) after applying these patches? It should better > >> > be <= 64... > >> > > >> > >> It is 72. > > > > Ah yes, miscalculated the required alignment. Hm. So we got to get this > > smaller. I see three approaches: > > > > 1) Reduce the spinlock size on ppc. That actually might just work by > > replacing "unsigned int" by "unsigned char" > > 2) Replace the lwlock spinlock by a bit in LWLock->state. That'd avoid > > embedding the spinlock, and actually might allow to avoid one atomic > > op in a number of cases. > > 3) Shrink the size of BufferDesc by removing buf_id; that'd bring it to > > 64byte. > > > > I'm a bit hesitant to go for 3), because it'd likely end up adding a bit > > of arithmetic to a number of places in bufmgr.c. Robert, what do you > > think? > > I don't have a clear idea what's going to be better here. My gut feeling is that we should do both 1) and 2). Dilip, could you test performance of reducing ppc's spinlock to 1 byte? Cross-compiling suggest that doing so "just works". I.e. replace the #if defined(__ppc__) typedef from an int to a char. Regards, Andres
В списке pgsql-hackers по дате отправления: