Re: Move PinBuffer and UnpinBuffer to atomics
От | Dilip Kumar |
---|---|
Тема | Re: Move PinBuffer and UnpinBuffer to atomics |
Дата | |
Msg-id | CAFiTN-tYUsKzbTC6L5rM_2T8vGDkZO3S-+LAYS+S4_wMnS+yRA@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Move PinBuffer and UnpinBuffer to atomics (Andres Freund <andres@anarazel.de>) |
Ответы |
Re: Move PinBuffer and UnpinBuffer to atomics
|
Список | pgsql-hackers |
On Tue, Mar 29, 2016 at 10:43 PM, Andres Freund <andres@anarazel.de> wrote:
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.
I set that, but after that it hangs, even Initdb hangs..
int
│164 s_lock(volatile slock_t *lock, const char *file, int line)
│165 {
│166 SpinDelayStatus delayStatus;
│167
│168 init_spin_delay(&delayStatus, (Pointer)lock, file, line);
│169
│170 while (TAS_SPIN(lock))
│171 {
>│172 make_spin_delay(&delayStatus);
│173 }
│174
I clean build multiple times but problem persist,
Does it have dependency of some other variable of defined under PPC in some other place ? I don't know..
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
#define HAS_TEST_AND_SET
typedef unsigned int slock_t; --> changed like this
#define TAS(lock) tas(lock)
В списке pgsql-hackers по дате отправления: