内核参数 isolcpus 似乎对具有 NUMA 的 Ubuntu Server 没有影响

内核参数 isolcpus 似乎对具有 NUMA 的 Ubuntu Server 没有影响

我使用 isolcpus 内核参数来限制 Linux 调度程序应该用来放置进程的 CPU。

cat /proc/cmdline 
BOOT_IMAGE=/boot/vmlinuz-4.2.0-18-generic.efi.signed root=UUID=78e5b46f-6c1c-4e8f-b921-8c091c98209b ro isolcpus=4−23,28−47

据我所知,这应该将所有未由 cpuset 或类似程序明确指定的进程放置在不在 isolcpus 列表中的 CPU 上。

但是,进程在任意 CPU 上运行,原本应该隔离的 CPU 仍然在使用。以下是 ps -F ax 输出的一部分:

UID        PID  PPID  C    SZ   RSS PSR STIME TTY      STAT   TIME CMD
message+  1185     1  0 10712  3804  11 20:36 ?        Ss     0:00 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
root      1208     1  0  4411  5364  20 20:36 ?        S<L    0:00 /usr/bin/atop -a -w /var/log/atop/atop_20151114 600
root      1214     1  0  7135  3008   2 20:36 ?        Ss     0:00 /lib/systemd/systemd-logind
daemon    1221     1  0  4795  1912  42 20:36 ?        Ss     0:00 /usr/sbin/atd -f

从 PSR 列中可以看出,CPU 11、20 和 42 已被使用,但事实不应该如此。

到目前为止,我已经尝试了以下 Ubuntu 版本,在所有情况下都得到了上述结果:

  • Ubuntu 14.04 服务器
  • Ubuntu 15.04 Server,带有 Ubuntu 3.19 内核以及主线内核
  • Ubuntu 15.10 服务器

您知道可能是什么问题吗?

更新

在没有 NUMA(Core i7)的虚拟机中运行 Ubuntu 时,Isolcpus 可以工作。但是,它在具有 NUMA(2x Xeon E3 v3 2690)的服务器上仍然无法工作。

相关内容