Как запустить процесс в Windows на определенном узле NUMA в C ++?
например. команда start /NODE X делает это для узла X. Но как добиться того же самого программно?
start /NODE X
Вы можете передать STARTUPINFOEX в CreateProcess() (включить флаг EXTENDED_STARTUPINFO_PRESENT), где STARTUPINFOEX содержит указатель на структуру PROC_THREAD_ATTRIBUTE_LIST, которая имеет в своем списке элемент PROC_THREAD_ATTRIBUTE_PREFERRED_NODE:
STARTUPINFOEX
CreateProcess()
EXTENDED_STARTUPINFO_PRESENT
PROC_THREAD_ATTRIBUTE_LIST
PROC_THREAD_ATTRIBUTE_PREFERRED_NODE
Параметр lpValue является указателем на номер узла предпочтительного узла NUMA для нового процесса.
См. InitializeProcThreadAttributeList() и UpdateProcThreadAttribute() для получения дополнительной информации о построении списка атрибутов.
InitializeProcThreadAttributeList()
UpdateProcThreadAttribute()
Рэймонд Чен обсуждает PROC_THREAD_ATTRIBUTE_LIST в своем блоге:
Программно контролирует, какие дескрипторы наследуются новыми процессами в Win32
Еще один способ создать процесс с атрибутами, может быть, хуже, может быть лучше