Howard,
thanks for answering so fast!
After a search, each returned up ID from bdb is located in one slot in the IDL list. On a x86_64 system, each slot is 8Byte. Each search stack in each thread (threads in slapd.conf) gets his own IDL slots. The default value for the threads are 16. With 16 bit BDB_IDL_LOGN (default) on x86_64 with default threads, we need 64k*8*16 = 1024KB memory?
If I increase the BDB_IDL_LOGN to 20 we need 512k*8*16 = 8MB?
- Are my assumptions above correct?
- How do I increase LDAP_PVT_THREAD_STACK_SIZE? In my tests I used
"4 * 1024 * 1024 * sizeof(void *)" and all tests where running well. 3) Are there other variables to increase before compiling? 4) Here we talk about 8MB memory, did I miss something, that is not the problem today or are there other things I did not catch (other caches in memory e.g. cachesize, dncachesize, idlcachesize or shared memory ...)?
As far as compile-time options, that's all there is to worry about.
Yes, but what about for memory usage. I need to size the memory and disks for the ldap server. How do I calculate the real memory usage or need for the server. I don't want, that the server crashes during productive operating because of memory needs, or the kernel oops...
- What is the amount overall I have to expect for memory consumption?
I understand, that after adding and deleting entires, the IDs "sparse out" for one index and we loose precision (if we have after search more IDs than BDB_IDL_LOGN), because using ranges. This Problem will increase as older the database becomes.
But if I increase the BDB_IDL_LOGN to my needed size (max expected returned IDs from during search a indexed attibute), the problem with "getting older" is not important for me?
Correct.
Thanks :-)