On Tue, Mar 29, 2016 at 10:43 PM, Andres Freund <and...@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 did not try to find the reason, but just built in debug mode and found it never come out of this loop. 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) -- Regards, Dilip Kumar EnterpriseDB: http://www.enterprisedb.com