如何在C ++中的特定NUMA节点上在Windows中启动进程?
例如。命令start /NODE X
为节点X执行此操作。但是如何以编程方式实现相同的操作?
你可以将STARTUPINFOEX
传递给CreateProcess()
(启用EXTENDED_STARTUPINFO_PRESENT
标志),其中STARTUPINFOEX
包含指向PROC_THREAD_ATTRIBUTE_LIST
结构的指针,该结构在其列表中有一个PROC_THREAD_ATTRIBUTE_PREFERRED_NODE
项:
lpValue参数是指向新进程的首选NUMA节点的节点号的指针。
有关构建属性列表的更多信息,请参阅InitializeProcThreadAttributeList()
和UpdateProcThreadAttribute()
。
Raymond Chen在他的博客上讨论了PROC_THREAD_ATTRIBUTE_LIST
:
Programmatically controlling which handles are inherited by new processes in Win32
Another way to create a process with attributes, maybe worse maybe better