В eDirectory из соображений производительности поддерживается режим многопоточности. Если в режиме многопоточности система занята, то для обработки нагрузки создаются дополнительные потоки, а работа некоторых потоков прекращается, чтобы устранить непроизводительную нагрузку. Часто создавать и удалять потоки неэффективно и затратно. Вместо того чтобы создавать и удалять новые потоки для каждой задачи, в пуле запускается и находится несколько потоков. Система распределяет потоки из пула потоков на несколько задач по мере необходимости. Задачи помещаются в очереди двух типов:
Задачи, для которых необходимо немедленное планирование, помещаются в очередь «Ready (Готово)».
Задачи, для которых планирование нужно выполнить позднее, помещаются в очередь «Waiting (В ожидании)».
Не в каждом модуле используется пул потоков. Фактическое количество потоков для данного процесса превышает их количество в пуле потоков. Например, FLAIM управляет своими фоновыми потоками по отдельности.
Команда ndstrace -c threads возвращает такую статистику пула потоков:
Общее количество созданных, прекращенных и бездействующих потоков.
Общее количество рабочих потоков в настоящий момент и максимальное количество рабочих потоков.
Количество задач и максимальное количество задач в очереди «Ready (Готовые)».
Минимальное, максимальное и среднее время в микросекундах, в течение которого задача находилась в очереди «Ready (Готовые)».
Текущее и максимальное количество задач в очереди «Waiting (В ожидании)».
Ниже приведен образец пула потоков:
Для пула потоков имеются определенные параметры:
n4u.server.max-threads: Максимальное количество потоков, которые могут быть доступны в данном пуле.
n4u.server.idle-threads: Максимальное количество бездействующих потоков, которые могут быть доступны в данном пуле.
n4u.server.start-threads: Количество начатых потоков.
Чтобы получить и задать размер пула потока, выполните команды ndsconfig get и ndsconfig set соответственно.