concurrent_threads_lazy_allocation
true (по умолчанию), запрос запускается с одним слотом CPU и запрашивает дополнительные слоты у планировщика только тогда, когда его конвейер действительно передаёт больше работы, которую можно распараллелить. Это позволяет избежать ситуации, когда запрос резервирует до max_threads слотов, но фактически использует лишь часть из них, не оставляя ресурсов другим параллельным запросам. Применяется как к управлению параллелизмом, так и к вытесняющему планировщику CPU для рабочих нагрузок.
Когда false, запрос при запуске сразу запрашивает все слоты max_threads.
concurrent_threads_scheduler
concurrent_threads_soft_limit_num и concurrent_threads_soft_limit_ratio_to_cores. Алгоритм, управляющий распределением ограниченного числа слотов CPU между параллельными запросами. Планировщик можно изменить во время выполнения без перезапуска сервера.
Возможные значения:
round_robin— Каждый запрос с настройкойuse_concurrency_control= 1 выделяет доmax_threadsслотов CPU. Один слот на поток. При конкуренции за ресурсы слоты CPU выдаются запросам по алгоритму round-robin. Обратите внимание, что первый слот выдаётся безусловно, что может приводить к несправедливому распределению и увеличению задержки для запросов с большимmax_threadsпри наличии большого числа запросов сmax_threads= 1.fair_round_robin— Каждый запрос с настройкойuse_concurrency_control= 1 выделяет доmax_threads - 1слотов CPU. Это вариантround_robin, в котором для первого потока каждого запроса слот CPU не требуется. Таким образом, запросы сmax_threads= 1 не требуют слотов и не могут несправедливо занять все слоты. Слоты не выдаются безусловно.max_min_fair— Каждый запрос с настройкойuse_concurrency_control= 1 выделяет доmax_threads - 1слотов CPU. Похож наfair_round_robin, но освобождённые слоты всегда выдаются запросу с минимальным числом уже выделенных слотов. Это обеспечивает более справедливое распределение при высокой сверхподписке, когда множество запросов конкурируют за ограниченное число слотов CPU. Короткие запросы не оказываются в невыгодном положении из-за долгих запросов, которые со временем накопили больше слотов.
concurrent_threads_soft_limit_num
Значение
0 (по умолчанию) означает отсутствие ограничений.concurrent_threads_soft_limit_ratio_to_cores
concurrent_threads_soft_limit_num, но в виде отношения к числу ядер.