Добавить комментарий
![]() |
Как выбрать ядра, на которых может выполняться процесс |
Разрешённые для процеcса ядра задаются при помощи Affinity mask.
Это битовая маска, один бит - одно ядро, с младших разрядов.
В программах, запускающих параллельные потоки может быть интересно ограничить нагрузку на систему, сделав недоступными себе несколько ядер.
С другой стороны, большинство программ, не использующих многопоточность, попадают для выполнения на первое ядро. Можно получить эффект увеличения производительности, если отключить его своему процессу.
procedure DoIt; var ProcessAfMask, // Маска для процесса. SystemAfMask : NativeUInt; // Маска для системы. begin // Получаем маски. GetProcessAffinityMask(GetCurrentProcess, ProcessAfMask, SystemAfMask); // Устанавливаем себе маску как в системе, только отключив первое ядро. SetProcessAffinityMask(GetCurrentProcess, SystemAfMask - 1); end;
Метки: