Как с помощью диспетчера задач или cmd в Windows задать количество используемых логических ядер для конкретного приложения?
Например, у нас есть 2 узла Numa. Numa 0 и Numa 1. В каждом узле по 28 логических ядер. Нам нужно, чтобы приложение использовало только 8 ядер узла Numa 1. Отсчет логических ядер и узлов NUMA ведется от 0.
Диспетчер задач:
Тут все просто.
- Запускаем диспетчер задач,
Ctrl+Shift+Esc
- переходим во вкладку подробности и выбираем необходимый процесс.
ПКМ -> Задать сходство.
Командная строка:
Представим количество логических ядер в двоичной системе счисления. Где последний 0 справа - это 0 ядро, а первый 0 слева, это 27 ядро.
Младший разряд записывается справа а старший, слева. Первый разряд соотвествует физическому ядру, второй - виртуальному.
Допустим, нам необходимо задействовать ядра 1,5,10,15,20,25.
# 0 - Выкл;
# 1 - Вкл;
Binary:
0000000000000000000000000000
- Тогда для нашего примера, получится следующее число:
0010000100001000010000100010
Далее, его необходимо перевести в шестнадцатеричную систему счисления. Можно воспользоваться онлайн калькулятором [link]. Получившиеся значение теперь можно подставить в ".bat" файлик. Так-же можно вставить в поле "Обьект" какого-нибудь ярлычка от программы.
# Значение Hexa - 2108422
cmd.exe /c start "VB" /NODE 1 /affinity 2108422 "C:\Program Files\Oracle\VirtualBox\VirtualBox.exe"
- Где параметр /NODE 1 - это NUMA узел.
P.S. Для того, чтобы была возможность использовать NUMA, необходимы серверный процессор XEON и серверная материнская плата. "Numa" может использоваться с настройками "Home Snoop, Early Snoop и Cluster on Die" [link]