我有一个在服务器上运行的程序,我想运行同一程序的多个实例(它是一个只能在单个核心上运行的应用程序...),我想知道我是否可以在运行时将它们分配给一个核心?使用批处理脚本还是其他什么?我正在运行 Windows Server 2012。
答案1
等一下……你问了一个问题,然后你接受了“不要那样做”的答案。
实际上没有人回答你的问题。
请不要误解我的意思。我无意冒犯其他回答者,我同意他们的观点,如果你一开始就问了这个问题,那你可能没有完全考虑清楚……但无论如何,你问了一个具体的问题。
这就是答案。
C:\Windows\system32>start /affinity 1 notepad.exe
这将启动 Notepad.exe 进程的一个实例,该进程设置为仅与第一个 CPU 关联。您可以根据需要混合和匹配 CPU(核心),但您询问如何在单个 CPU 上启动进程。
您可以通过在任务管理器或进程资源管理器中检查生成的进程的亲和性来验证该命令是否有效。
答案2
在绝大多数情况下,尝试手动管理进程到 CPU 的绑定实际上会导致整体减少性能比仅仅让内核的 CPU 调度程序来解决问题要好。
因此,除非您遇到一些可以直接追溯到 CPU 调度的实际性能问题,否则您不需要考虑这个问题。