是否可以禁用 CPU 而不是核心?我想做一个测试来验证性能是否会产生很大的影响。
我正在使用 Ubuntu 10.10。
答案1
除了在 BIOS 中执行此操作之外,grub 还有一个名为的选项maxcpus
。
您可以在选择 grub 启动选项时通过添加maxcpus=1
参数来编辑此选项。随机 grub 图片:
选择“e”,您将进入一个可以添加选项的命令行。
您还可以通过复制当前启动选项并将其添加maxcpus=1
到启动参数中来在 grub 中创建永久启动选项。您可以将其命名为“Ubuntu, kernel 2.5.12-9-386 (1 cpu)”,并将其放在其他启动选项中,如图所示。
您可以通过以下命令验证是否在 1 个 CPU 上运行:
cat /proc/cpuinfo | grep processor
这应该显示如下内容:
处理器:0 处理器:1
使用 1 个 CPU 启动后,第二行应该会消失。
答案2
您可以通过 动态禁用 CPU /sys/devices/system/cpu/cpuN/online
,例如要禁用 CPU 1,请使用:
echo 0 | sudo tee /sys/devices/system/cpu/cpu1/online
要重新启用,请使用:
echo 1 | sudo tee /sys/devices/system/cpu/cpu1/online
答案3
您随时可以将 CPU 从插槽中拔出。虽然这是蛮力,但可以保证您获得想要的测试,而且您不必担心内核/BIOS/其他开关是否真的按照您的期望运行。
我的公司在世界各地都设有大型服务器群。在我们的实验室中,我们有时会从插槽中取出 CPU 来进行此类测试。
这个测试有一个有趣的变化,你可以用多 CPU 来做NUMA系统。在这些类型的主板上,您可以移除由一个物理 CPU 控制的所有内存 DIMM。系统仍将正常启动,然后您可以将应用程序固定到各个核心来运行测试,这将允许您测量“本地”或“远程”内存的影响。
答案4
想要查看多线程应用程序的性能以及内核数量?如果是这种情况,您可以使用任务集实用程序。我猜您有一台 NUMA 机器。您可以安装 numactl 实用程序,然后使用它来查找哪些内核对应于哪个 CPU。例如,您的机器有两个四核 CPU(芯片)。通过使用任务集实用程序,您可以将一个 CPU 的内核作为一个集合,并将它们分配给您的应用程序。然后您的应用程序只使用一个 CPU/芯片(四个内核)。如果您需要更多信息,请告诉我。