Affinity Changer
Affinity Changer - сервис для динамической привязки процессов к процессорам/ядрам и установки приоритетов процессов.
Сервис устанавливается в систему, и работает в автоматическом режиме. Раз в 5 минут (по-умолчанию) сервис проверяет список процессов из конфигурационного файла, и если эти процессы не привязаны к конкретным процессорам/ядрам, привязывает их, равномерно распределяя по процессорам/ядрам, а также выставляет этим процессам приоритет указанный в настройках.
Для работы сервиса необходим .Net Framework 2.0 (скачать x86 версию, или x64 версию).
Текущая версия сервиса: 1.2.0
AffinityChangerSetup-1.2.0-x86.7z (300 Кб).
AffinityChangerSetup-1.2.0-x64.7z (311 Кб).
UPD: Affinity Changer для x64-версии был исправлен и перезалит (вылетала ошибка при установке).
Список изменений можно посмотреть здесь.
Подписаться на ленту новостей о новых версиях можно здесь.
Исходники можно взять здесь.
Установка сервиса
Качаем архив с файлами установки, и запускаем setup.exe.
Далее устанавливаем сервис как показано на скриншотах (Next -> Next -> Next -> Close):
Для удаления сервиса идем в установку и удаление программ, и удаляем Affinity Changer.
Настройка сервиса
Параметры настройки сервиса находятся в ветке реестра "HKEY_LOCAL_MACHINE\SOFTWARE\nick4eva's software\Affinity Changer".
Параметр CheckInterval (в миллисекундах), указывает интервал проверки процессов.
Параметр ConfigFile указывает путь к файлу со списком процессов и их приоритетами (по-умолчанию прописан путь к пустому файлу config.txt, который лежит в папке с сервисом). В конфигурационном файле нужно указывать по одному процессу на строку, после процесса через запятую можно указать желаемый приоритет процесса (если приоритет не указан, то по умолчанию ставится приоритет Normal). В качестве имени процесса можно указывать подстроку (сервис найдет все процессы в имени которых встречается данная подстрока) или регулярное выражение. Приоритет процесса может принимать значения: RealTime, High, AboveNormal, Normal, BelowNormal, Idle.
При изменении параметров сервис перезапускать не нужно, он сам перечитывает значение параметров в конце каждого интервала времени (конечо если стоит очень большой интервал времени, то проще перезапустить сервис, чтобы он заново считал параметры).
Благодарности
Хочу поблагодарить за помощь в разработке программы участников Украинской команды распределенных вычислений (участником которой я тоже являюсь): nikelong, rilian, ReMMeR, Vorchun.