2.2 Pool de thread

O eDirectory possui múltiplos threads por questões de desempenho. Em multi-threading, quando o sistema está ocupado, mais threads são criados para lidar com a carga e alguns são encerrados para evitar overhead extra. Criar e destruir threads frequentemente é custoso e ineficaz. Em vez de criar novos threads e destruí-los para cada tarefa, certos threads são iniciados e colocados em um pool. O sistema aloca os threads do pool de threads para diversas tarefas conforme necessário. As tarefas são separadas em dois tipos de filas:

  • Tarefas que precisam de programação imediata são mantidas na fila Prontas.

  • Tarefas que precisam de programação posterior são mantidas na fila Em espera.

Nem todos os módulos usam pool de threads. O número real de threads do processo é maior do que o número existente no pool de threads. Por exemplo, o FLAIM gerencia seus threads em segundo plano separadamente.

Executar o comando ndstrace -c threads exibe as seguintes estatísticas do pool de thread:

  • O número total de threads que são criados, encerrados e estão inativos.

  • O número total de threads de trabalho atuais e o número máximo de threads de trabalho.

  • O número de tarefas e número máximo de tarefas na fila Prontas.

  • O número mínimo, máximo e médio de microssegundos transcorridos na fila Prontas.

  • O número atual e máximo de tarefas na fila Em espera.

Um exemplo de uma amostra do pool de thread:

Existem certos parâmetros do pool de thread:

  • n4u.server.max-threads: O número máximo de threads que podem ficar disponíveis no pool.

  • n4u.server.idle-threads: O número máximo de threads inativos que podem ficar disponíveis no pool.

  • n4u.server.start-threads: Número de threads iniciados.

Execute os comandos ndsconfig get e ndsconfig set para obter e definir o tamanho do pool de thread.