The c-treeACE internal memory suballocator previously utilized 8 lists, each dedicated to a particular range of allocation size and each controlled by a single mutex. An expanded model has been introduced to improve scalability, especially when a large number of alloc or free memory operations takes place at once.
The c-treeACE Server configuration keyword MEMORY_HASH <N> (default 1) causes 8N lists to be created, with N dedicated to a particular range of allocation sizes. N is optimally set to the number of CPUs available to the c-treeACE server process.
The MEMORY_HASH configuration requires aligned memory boundaries. If a particular server build is compiled without the proper alignment property, a message is logged to CTSTATUS.FCS indicating this when this keyword is active:
- User# 00001 Configuration error: ctsrvr.cfg, line 3: This c-tree Server does not meet the compile-time requirements to support the MEMORY_HASH keyword.