告诉 Linux 内核“不”使用某些 CPU

告诉 Linux 内核“不”使用某些 CPU

我正在尝试在多核机器上运行一些基准测试,我想告诉 Linux 内核简单地避免某些核心除非明确告知要使用它们。

我的想法是,我可以留出一些核心(机器有 6 个物理核心)用于基准测试,并使用 cpu 掩码仅允许对给定核心进行基准测试进程。

这可行吗?

答案1

您可以使用isolcpus参数将某些 cpu 核心与内核调度隔离。将此参数添加到 grub.conf 中并重新启动即可生效。

答案2

你想要一些吗处理器亲和力(或者CPU 亲和性)。

相关的系统调用是sched_setaffinity(2),但你应该通过使用它pthread_set_affinity_np(3)如果你想为此编写你的基准。

相关命令是任务集(1)您可以在要进行基准测试的命令(或您的 shell 上)上使用它。

如果可能,请注意机器不会因与基准测试无关的其他任务而承受大量负载。

或者,使用一些管理程序喜欢Xen,并将 Linux 作为该虚拟机管理程序的来宾操作系统启动。然后配置xen为仅使用一些受限制的CPU核心集(我不知道确切的细节,你需要找出来)。在 Debian(及相关)发行版上,您可能会安装诸如xen-linux-system-amd64xen-hypervisor-amd64等软件包xen-utils(我在 Debian/Sid xen-hypervisor-4.5-amd64xen-linux-system-4.0.0-1-amd64等上使用xen-utils-4.5 )。

也许有某种方法可以配置您的 Linux 内核(可能在内核编译时,或者通过 Grub 加载程序将特定参数传递给内核)来限制可用内核的数量。

当然,在对某些程序(例如在桌面 Linux PC 上)进行基准测试时,最好注意避免有许多外部正在运行的进程(使用ps auxwpstree -ptop来查找这些进程)。至少,关闭并退出大多数交互式应用程序(Firefox 等浏览器、电子邮件、编辑器、Eclipse 等 IDE)并仅保留少量终端进行基准测试。您甚至可以在未登录的情况下以批处理模式进行基准测试(使用batch或运行基准测试)(因此没有任何 GUI 会话)at侏儒或者凯德或者Xfce等...运行)。

相关内容