diff --git a/ydb/library/actors/core/harmonizer.cpp b/ydb/library/actors/core/harmonizer.cpp index 24eb18ec7d25..733606a7b528 100644 --- a/ydb/library/actors/core/harmonizer.cpp +++ b/ydb/library/actors/core/harmonizer.cpp @@ -467,10 +467,6 @@ void THarmonizer::HarmonizeImpl(ui64 ts) { if (budget < -0.1) { isStarvedPresent = true; } - for (size_t poolIdx = 0; poolIdx < Pools.size(); ++poolIdx) { - TPoolInfo& pool = Pools[poolIdx]; - AtomicSet(pool.PotentialMaxThreadCount, Min(pool.MaxThreadCount, budgetInt)); - } double overbooked = consumed - booked; if (overbooked < 0) { isStarvedPresent = false; @@ -591,6 +587,11 @@ void THarmonizer::HarmonizeImpl(ui64 ts) { pool.SetThreadCount(threadCount - 1); } } + + for (size_t poolIdx = 0; poolIdx < Pools.size(); ++poolIdx) { + TPoolInfo& pool = Pools[poolIdx]; + AtomicSet(pool.PotentialMaxThreadCount, std::min(pool.MaxThreadCount, pool.GetThreadCount() + budgetInt)); + } } void THarmonizer::CalculatePriorityOrder() {