创建一个指定要在其上运行的NUMA节点的进程

时间:2019-03-19 16:02:31

标签: c++ winapi process launch numa

如何在Windows中的C ++中特定NUMA节点上启动进程?

例如命令start /NODE X对节点X执行此操作。但是如何以编程方式实现相同的目标?

1 个答案:

答案 0 :(得分:1)

您可以将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