我正在尝试使用taskset将一些进程分配给特定的CPU。当我运行taskset时,似乎命令已经起作用,因为我收到了一条回复,说明设置了进程的新亲和性。
然而,当我监视顶部输出时(我尝试为其分配 CPU 的进程正在以较高的 CPU 百分比运行),我可以看到该进程仍然在 CPU 之间切换,因此看起来任务集不起作用。
在网上搜索类似问题时,我看到 Red Hat 网站上有一篇文章https://access.redhat.com/knowledge/docs/en-US/Red_Hat_Enterprise_MRG/1.1/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-Realtime_Specific_Tuning-Non_Uniform_Memory_Access.html
这表明,taskset 无法在启用 numa 的系统上运行。是这样吗?我还没有从其他地方找到这个信息。
我正在使用的taskset命令是
taskset -pc 1-2 16723 pid 16723 的当前亲和性列表:0-7 pid 16723 的新亲和性列表:1,2
我也尝试过:
任务集-p 0x00000001 16723
操作系统版本为:
描述:Ubuntu 12.04.1 LTS 版本:12.04
内核版本:Linux hadoop 3.2.0-29-generic #46-Ubuntu SMP Fri Jul 27 17:03:23 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
在我研究使用 cgroups 之前,我会想到 taskset 至少可以为某个进程分配 CPU 亲和性?
谢谢,
另外确认我的主机上没有禁用numahttp://martincarstenbach.wordpress.com/2012/04/27/little-things-i-didnt-know-difference-between-_enable_numa_support-and-numactl/
更多/proc/cmdline
BOOT_IMAGE=/boot/vmlinuz-3.2.0-29-generic root=UUID=3221e122-b2fb-48b7-b761-16c57ef51f9a ro quiet splash vt.handoff=7
确认这是在物理主机上。
答案1
运行命令“numastat” - 如果您的系统是 numa,您应该会在结果中看到它。如您所料 - 如果您的系统是 numa,请使用 numactl 来设置您的进程以在一系列 CPU 上运行。