12.1 eDirectory

12.1.1 FLAIM Database

eDirectory uses FLAIM (Flexible Adaptable Information Manager) as its database. It is used for traditional, volatile, and complex information. It is a highly scalable database engine that supports multiple readers and single writer concurrency model.

Physically, FLAIM organizes data in blocks. Some of the blocks are typically held in memory and they represent the block cache. The entry cache, at times called a record cache, caches logical entries from the database. Entries are constructed from the items in the block cache. FLAIM maintains hash tables for both caches. The hash bucket size is periodically adjusted based on the number of items.

By default eDirectory uses a block of 4 KB. The block cache size for caching the complete DIB is equal to the DIB size, and the size required for the entry cache is about two to four times the DIB size.

12.1.2 Thread Pool

eDirectory is multithreaded for performance reasons. In multithreading, when the system is busy, more threads are created to handle the load, and some threads are terminated to avoid extra overhead. Not every module uses the thread pool. The actual number of threads for the process is more than the number that exists in the thread pool. For example, FLAIM manages its background threads separately.

Use ndstrace -c threads command to know the thread pool statistics.

Here’s an example of a sample thread pool.

Summary      : Spawned 71, Died 24
Pool Workers : Idle 14, Total 47, Peak 52
Ready Work   : Current 1, Peak 12, maxWait 592363 us
Sched delay  : Min 23 us, Max 1004764 us, Avg: 5994 us
Waiting Work : Current 15, Peak 20

Here are some thread pool parameters:

  • n4u.server.max-threads: Maximum number of threads that can be available in the pool.

  • n4u.server.idle-threads: Maximum number of idle threads that can be available in the pool.

  • n4u.server.start-threads: Number of threads started.

Run the ndsconfig get and ndsconfig set commands to get and set the thread pool size respectively.

Usually the default settings work for around 3000 to 4000 user connections unless the eDirectory is busy with some other background processing of maintenance events, like creating external references for a user object that is in a remote eDirectory replica. It is recommended to have servers having the eDirectory replicas to be reachable over fast links from the servers hosting the CIFS server.

Customers should monitor the output of ndstrace -c to see how many threads they are using. If they hit the total threads to max-threads value constantly, then they should consider changing the max value to a higher number. We usually recommend the eDirectory customers not to go beyond 512, but in some OES environments, we have it set to more than that as well.

To determine what factors could affect the performance of your eDirectory, see FLAIM Database and Thread Pool in the Novell eDirectory 8.8 SP6 Tuning Guide for UNIX* Platforms. These sections contain information on how to tune the FLAIM database and Thread pool in order to get the optimum performance. You can find the eDirectory 8.8 SP6 guide under Previous Releases on the eDirectory 8.8 SP7 documentation page.