The performance of ALTIBASE HDB is dramatically degraded after upgrading AIX OS from version 5.3 to version 6.1.


1. Observed a state of Service Thread of ALTIBASE HDB by using "procstack" utility of AIX.

2. Found out that built-in function - sysdate() - of ALTIBASE HDB was causing the performace degradation.

3. sysdate() function of ALTIBASE HDB triggers a system-call to "localtime_r()" and it causes the performance degradation. We confirmed the difference between AIX 5.3 and 6.1 with an AIX support engineer.

0x0000000000003428  _check_lock() + 0x8
0x0900000000a85598  _global_lock_common(??, ??, ??) + 0x2b8
0x0900000000011410  _rec_mutex_lock(??) + 0xd0
0x0900000000049284  localtime_tz_r(??, ??, ??) + 0x384
0x000000010000dbec  PDL_OS::localtime_r(const long*,tm*)() + 0xc
0x00000001000b54dc  qtc::sysdate(qcTemplate*)() + 0xbc
0x0000000100476b8c  qmx::executeInsertValues(qcStatement*)() + 0x90c
0x000000010058903c  mmcStmtType::executeDML(mmcSession*,mmcSessionInfo*,mmcStmtType*,unsigned int*,long*)() + 0x19c
0x0000000100584398  mmcStmtType::execute(unsigned int*,long*,mmcSessionInfo*)() + 0x98
0x00000001005c00c4  mmtTaskThread::doPrepareExecute(mmcStmtType*,long long,void*,unsigned long long,void*,unsigned long long)() + 0x444
0x00000001005c1fc4  mmtTaskThread::executeArray(unsigned int)() + 0x484
0x00000001005c29ac  mmtTaskThread::executeProtocol()() + 0x72c
0x000000010059ef60  mmtTaskThread::processProtocol(idBool*,idBool*)() + 0x780
0x000000010059f678  mmtTaskThread::runShared()() + 0x198
0x00000001005a04a0  mmtTaskThread::run()() + 0x400
0x0000000100035924  idtBaseThread::staticRunner(void*)() + 0x44
0x0900000000a86d50  _pthread_body(??) + 0xf0


Performance bottleneck occurs depending on the setting of TimeZone in AIX 6.1. To work around this AIX issue, the default TimeZone setting has to be changed to Local TimeZone based on Posix standard.

Shell Prompt> echo $TZ
Asia/Seoul <- Olson time zone (X)
KORST-9 <- Posix time zone (O)

- Modify Time zone
Shell Prompt> smitty chtz_user