This has been asked before, but I didn't find any answers on it.
I'm trying to find a good way to predict the size of a slapd process based on cachesize and idlcachesize. (db_stat -m already gives me info on the DB_CONFIG part of memory usage).
I was hoping to come up with a formula based on the <average text size of an entry in my database> * <SOMESTUFF> * <(idl)cachesize setting>= XXX bytes.
Do I just figure out the "sizeof" the structs below?
Any tips are appreciated.
In back-bdb.h, I found this: /* for the in-core cache of entries */ typedef struct bdb_cache { int c_maxsize; int c_cursize; int c_minfree; int c_eiused; /* EntryInfo's in use */ int c_leaves; /* EntryInfo leaf nodes */ EntryInfo c_dntree; EntryInfo *c_eifree; /* free list */ Avlnode *c_idtree; EntryInfo *c_lruhead; /* lru - add accessed entries here */ EntryInfo *c_lrutail; /* lru - rem lru entries from here */ ldap_pvt_thread_rdwr_t c_rwlock; ldap_pvt_thread_mutex_t lru_head_mutex; ldap_pvt_thread_mutex_t lru_tail_mutex; u_int32_t c_locker; /* used by lru cleaner */ #ifdef SLAP_ZONE_ALLOC void *c_zctx; #endif } Cache;
typedef struct bdb_idl_cache_entry_s { struct berval kstr; ldap_pvt_thread_rdwr_t idl_entry_rwlock; ID *idl; DB *db; struct bdb_idl_cache_entry_s* idl_lru_prev; struct bdb_idl_cache_entry_s* idl_lru_next; } bdb_idl_cache_entry_t;
When I looked at an old core file with strings, I found a lot of dn's, so I assume this was part of the cache.
openldap-software@openldap.org