2.2 Réserve de threads

Pour des raisons de performances, eDirectory est en mode multithread. Dans ce mode, lorsque le système est occupé, d'autres threads sont créés pour gérer la charge, tandis que certains threads sont arrêtés afin d'éviter toute surcharge d'information supplémentaire. La création et la destruction fréquentes de threads sont à la fois coûteuses et inefficaces. Au lieu de générer dynamiquement de nouveaux threads et de les détruire à chaque tâche, un certain nombre de threads sont démarrés et placés dans une réserve. En fonction des besoins, le système alloue les threads de la réserve à plusieurs tâches. Les tâches sont stockées dans deux types de files d'attente :

  • Les tâches qui doivent être planifiées immédiatement sont placées dans la file d'attente des éléments prêts.

  • Les tâches qui doivent être planifiées ultérieurement sont placées dans la file d'attente des éléments en attente.

Tous les modules n'utilisent pas la réserve de threads. Le nombre réel de threads du processus est supérieur au nombre figurant dans la réserve de threads. Par exemple, le gestionnaire FLAIM gère les threads d'arrière-plan séparément.

L'exécution de la commande ndstrace -c threads renvoie les statistiques de réserve de threads suivantes :

  • le nombre total de threads générés dynamiquement, arrêtés et inactifs ;

  • le nombre total de threads de travail utilisés actuellement et le nombre maximal de threads de travail ;

  • le nombre de tâches et le nombre maximal de tâches dans la file d'attente des éléments prêts ;

  • le nombre minimal, maximal et moyen de microsecondes passées dans la file d'attente des éléments prêts ;

  • le nombre actuel et maximal de tâches dans la file d'attente des éléments en attente.

Voici un exemple de réserve de threads :

Il existe des paramètres de réserve de threads :

  • n4u.server.max-threads: nombre maximal de threads qui peuvent être disponibles dans la réserve.

  • n4u.server.idle-threads: nombre maximal de threads inactifs qui peuvent être disponibles dans la réserve.

  • n4u.server.start-threads: nombre de threads démarrés.

Exécutez les commandes ndsconfig get et ndsconfig set pour obtenir et définir la taille de la réserve de threads.