【发布时间】:2011-05-21 07:43:18
【问题描述】:
我在物理机和虚拟机上测试 c 代码,我需要限制编号。在执行 c 程序期间使用的 cpu。有没有办法做到这一点?
【问题讨论】:
我在物理机和虚拟机上测试 c 代码,我需要限制编号。在执行 c 程序期间使用的 cpu。有没有办法做到这一点?
【问题讨论】:
对于 Linux,有 sched_setaffinity。例如,如果您希望它仅在 CPU 1 和 3 上运行:
cpu_set_t set;
CPU_ZERO(&set);
CPU_SET(1, &set);
CPU_SET(3, &set);
sched_setaffinity(pid, CPU_SETSIZE, &set);
注意:sched_setaffinity 和 sched_getaffinity 是特定于 Linux 的(它们在其他 POSIX 系统上不存在)。
在 BSD 上,cpuset_setaffinity 具有相似的语义。我希望 Solaris 也有类似的功能。
【讨论】:
不独立于平台,但在 Windows 中,您可以使用SetProcessAffinityMask:
SetProcessAffinityMask(GetCurrentProcess(), 0x1); //Only CPU #1
【讨论】: