13.1 eDirectory

13.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 a 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.

13.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 the ndstrace -c threads command to get 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 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. As a best practice, the servers that hold the eDirectory replicas should be reachable over fast links from the servers that host the CIFS server.

In eDirectory 8.8 SP7, the max threads has been increased from 128 to 256.

We recommend that you monitor the output of ndstrace -c to see how many threads are being used. If the total threads to max-threads value is constantly being reached, consider changing the max value to a higher number. The recommended limit is 512, but in some OES environments, we have it set to more than that as well.

For information on how to tune the FLAIM database and Thread pool for optimum eDirectory performance, see FLAIM Database and Thread Pool in the NetIQ eDirectory 8.8 SP8 Tuning Guide for UNIX* Platforms.