Оптимизация звука на Windows с использованием Process Governor
Всем привет!
В данном посте я расскажу предысторию появления моей программы Process Governor и покажу на примере своего ПК процесс оптимизации звука на компьютере с использованием этой программы. Данный способ позволяет повысить стабильность звука и уменьшить появление заиканий и потрескиваний, особенно при высокой нагрузке на процессор.
КДПВ
Предыстория проблемы
Исходная ситуация
Моя история началась с нестабильности звука на моем компьютере, особенно тогда, когда я активно использовал аудиообработку в реальном времени. Заикания и потрескивания стали нормой в моменты онлайн-выступлений и приложений, которые обрабатывали звук через несколько аудиоэффектов. Это было не только раздражающим, но и влияло на качество моих аудио-проектов.
Поиск решения
Я начал искать способы решения этой проблемы. Это включало в себя эксперименты с настройками аудиоинтерфейса, оптимизацию параметров в операционной системе, и даже переустановку аудио-драйверов. Некоторые из этих методов приводили к временному улучшению, но с ростом числа аудиоэффектов и обработчиков звука, проблема возвращалась.
Радикальное и эффективное решение
Чтобы найти более радикальное и надежное решение, я пришел к идее перераспределения вычислительных ресурсов моего ПК. Я предположил, что выделение отдельных ядер процессора для обработки аудиосигнала, а остальных ядер для обычных задач, поможет решить проблему. Это должно было обеспечить стабильное воспроизведение звука даже при высокой нагрузке на ЦП.
Поэтому, я решил вручную распределить основные аудиопроцессы на отдельные ядра и провести тестирование. Это оказалось эффективным решением. Однако, чтобы упростить и автоматизировать этот процесс, я решил создать специальное приложение, которое сможет управлять распределением процессорных ресурсов между аудиопроцессами и остальными задачами.
Рождение Process Governor
Из этой необходимости родилась идея создать программу, которая способна управлять процессами/службами Windows и их соответствиями к ядрам процессора. Так появился Process Governor. С его помощью, я смог оптимизировать аудиопроцессы и службы, установив им высокий приоритет выполнения в режиме реального времени, а так же распределив их по ядрам процессора. Это позволило обеспечить стабильное и качественное воспроизведение звука, даже в самых требовательных сценариях.
Процессы и службы, влияющие на звук
Для обработки звука, я использую следующие программы:
Voicemeeter - виртуальный микшер.
Equalizer APO - для обработки звука на выходных устройствах Voicemeeter (наушники и колонки).
Kushview Element - DAW для обработки звука на входных устройствах Voicemeeter (микрофон).
Кроме этого, существуют службы и процессы Windows, которые также взаимодействуют со звуком и являются общими для всех пользователей Windows:
Служба AudioSrv.
Служба AudioEndpointBuilder.
Процесс Audiodg.exe.
Подготовка к настройке
Список процессов и служб
Для настройки, я создал список процессов и служб, ответственных за обработку звука:
voicemeeter8x64.exe - Voicemeeter.
voicemeeterclient.exe - Процесс Equalizer APO для интеграции с Voicemeeter.
element.exe - Kushview Element.
Audiodg.exe.
Служба AudioSrv.
Служба AudioEndpointBuilder.
Распределение процессорных ресурсов
Примечание:
Process Governor воспринимает потоки как ядра, потому когда будет идти речь о ядрах, помните, что под ними подразумеваются еще и потоки.
Нумерация ядер начинается с 0.
У меня установлен процессор с 12 ядрами (24 потоками), и я предлагаю следующее распределение ресурсов:
Первые 8 ядер/16 потоков предназначены для всех процессов, кроме звука (с 0-го по 15-ый поток).
Последние 4 ядра/8 потоков отведены под звук (с 16-го по 23-й поток).
Также, я рекомендую установить максимальный приоритет - реального времени - для всех процессов, отвечающих за звук.
Примечание:
Опытным путем выяснил, что изменение соответствия ядер для сервисов AudioSrv и
AudioEndpointBuilder приведет к усугублению проблем в звуке. Поэтому для этих сервисов изменим только приоритет, а соответствие ядер трогать не будем.
Настройка Process Governor
Для начала настройки, я предлагаю обратиться к README-файлу для установки утилиты и понимания файла конфигурации config.json.
Исходя из README и информации о подготовке к настройкам, предлагаю следующий файл-конфигурации config.json для Process Governor:
{
"rules": [
{
"processSelector": "voicemeeter8x64.exe",
"priority": "Realtime",
"affinity": "16-23"
},
{
"processSelector": "voicemeeterclient.exe ",
"priority": "Realtime",
"affinity": "16-23"
},
{
"processSelector": "element.exe",
"priority": "Realtime",
"affinity": "16-23"
},
{
"processSelector": "Audiodg.exe",
"priority": "Realtime",
"affinity": "16-23"
},
{
"serviceSelector": "AudioSrv",
"priority": "Realtime"
},
{
"serviceSelector": "AudioEndpointBuilder",
"priority": "Realtime"
},
{
"processSelector": "*",
"affinity": "0-15"
}
]
}
Обратите внимание:
Указаны процессы и службы, ответственные за звук в serviceSelector и processSelector.
Установлен приоритет "реального времени" для всех процессов, отвечающих за звук:
"priority": "Realtime"
Указаны соответствия ядер CPU для различных сценариев в:
"affinity": "<номера ядер>"
Для сервисов намеренно не указаны ядра, только приоритет.
Так же обратите внимание на последнее правило:
"processSelector": "*",
"affinity": "0-15"
Здесь селектор равен "*", что говорит о том, что ЛЮБОЙ процесс будет подвержен правилу с указанием ядер 0-15. Так как правила в Process Governor выполняются по порядку до первого совпадения и правило описано последним, то и выполняться правило будет только в том случае, когда первые правила не сработали. Т.е. остальные процессы, которые не относятся к звуку, автоматически отправятся на ядра 0-15.
Запуск Process Governor
Для применения настроек, следует поместить файл конфигурации config.json рядом с программой Process Governor и запустить ее. Программа будет работать в фоне, регулярно применяя правила для новых процессов и доступна в системном трее.
Заключение
Настройка Process Governor предоставляет мощное средство для оптимизации звука на моем ПК, улучшая его стабильность и качество. Я надеюсь, что данная статья поможет вам достичь лучших результатов в области аудиообработки.