feat(config): настраиваемый размер пула потоков#3367
Merged
Conversation
SaveChestAll() синхронно писал в файл все сундуки каждый цикл — 35мс на пульс. Добавлен ChestSaver по образцу IngrChestSaver: - mark_dirty() в PutChest, TakeChest, ChestUpdate (пурж при нулевом счёте) - run() сохраняет только изменённые сундуки в параллельном пуле потоков - LPT-сортировка по chest_objcount для минимального wall time Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
hardware_concurrency() возвращает логические ядра включая гипертрединг. При CPU-bound сериализации HT-потоки делят ALU одного физического ядра и дают ~10-15% прироста, а поскольку run() ждёт завершения всех потоков, wall time определяется самым медленным. Делим на 2 для физических ядер. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Параметр chest_saver_threads в configuration.xml (или переменная окружения CHEST_SAVER_THREADS) задаёт число потоков для ChestSaver и IngrChestSaver. Значение 0 (по умолчанию) = hardware_concurrency()/2 (физические ядра без гипертрединга). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…_saver Предыдущий коммит сломал кодировку файла (Edit tool конвертировал KOI8-R в UTF-8). Файл восстановлен из HEAD~1, новая секция chest_saver добавлена через бинарную замену без перекодировки. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… PR) Настраиваемое число потоков выносится в отдельный более общий параметр thread_pools/workers. В этой ветке оставляем только перф-оптимизацию с фиксированным hardware_concurrency()/2. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…rkers Новый параметр thread_pools/workers в configuration.xml задаёт число рабочих потоков для фоновых задач (сейчас: сохранение клановых сундуков). Значение 0 (по умолчанию) = hardware_concurrency()/2. Переопределить без пересборки: MUD_WORKERS=N. ChestSaver и IngrChestSaver читают runtime_config.thread_pools_workers(). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Описание
Новый параметр
<thread_pools><workers>N</workers></thread_pools>вconfiguration.xmlзадаёт число рабочих потоков для фоновых задач ввода-вывода.Сейчас используется в
ChestSaverиIngrChestSaver(сохранение клановых сундуков). По мере добавления новых пулов потоков — единая точка конфигурации.Использование
Или переменная окружения (без пересборки):
Значение
0(по умолчанию) =hardware_concurrency() / 2.Изменения
RuntimeConfiguration::thread_pools_workers()— новый геттерRuntimeConfiguration::load_thread_pools_configuration()— читает XML + envChestSaver::Impl,IngrChestSaver::Impl— используют конфиг вместо хардкода🤖 Generated with Claude Code