Создайте процесс, определяющий узел NUMA для запуска - PullRequest
0 голосов
/ 19 марта 2019

Как запустить процесс в Windows на определенном узле NUMA в C ++?

например. команда start /NODE X делает это для узла X. Но как добиться того же самого программно?

1 Ответ

1 голос
/ 19 марта 2019

Вы можете передать STARTUPINFOEX в CreateProcess() (включить флаг EXTENDED_STARTUPINFO_PRESENT), где STARTUPINFOEX содержит указатель на структуру PROC_THREAD_ATTRIBUTE_LIST, которая имеет в своем списке элемент PROC_THREAD_ATTRIBUTE_PREFERRED_NODE:

Параметр lpValue является указателем на номер узла предпочтительного узла NUMA для нового процесса.

См. InitializeProcThreadAttributeList() и UpdateProcThreadAttribute() для получения дополнительной информации о построении списка атрибутов.

Рэймонд Чен обсуждает PROC_THREAD_ATTRIBUTE_LIST в своем блоге:

Программно контролирует, какие дескрипторы наследуются новыми процессами в Win32

Еще один способ создать процесс с атрибутами, может быть, хуже, может быть лучше

...