`isolcpus` 内核参数对 Ubuntu 16.04 桌面没有影响

`isolcpus` 内核参数对 Ubuntu 16.04 桌面没有影响

我添加了以下行/etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash isolcpus=1,3"

然后运行sudo grub-update(并重新启动),但根据top进程仍在 CPU 1 和 3 上调度。我该怎么办?

我被要求添加的内容:

nabeel@nabeel-Inspiron-3542:~$ cat /proc/cmdline
BOOT_IMAGE=/boot/vmlinuz-4.4.0-22-generic.efi.signed root=UUID=1e46ca65-843f-439a-8e2a-f5e666a03ffe ro quiet splash isolcpus=1,3 vt.handoff=7

输出top

PID USER      PR S P 
182 root      20 S 0 
183 root       0 S 0 
220 root      20 S 0 
223 root      20 S 0 
253 root      20 S 2 
261 root       0 S 0 
312 root     -51 S 0 
343 root       0 S 3 <-------- Processes being scheduled on CPU 1 and 3
347 root       0 S 1 <--------
373 root       0 S 2 
398 root       0 S 0 
474 root       0 S 2 
478 root      20 S 0 
548 systemd+  20 S 0 
632 avahi     20 S 2 
633 root      20 S 2 
642 root      20 S 0 

答案1

我猜这两个进程是kworker另一个内核任务。

目前看来,isolcpus=仅影响用户空间线程,因此内核线程将显示在隔离的 CPU 上。

来自RHEL 文档(强调我的),

3.3.6.2.隔离 CPU

您可以使用 isolcpus 引导参数将一个或多个 CPU 与调度程序隔离。这可以防止调度程序调度任何用户空间线程在这个CPU上。隔离 CPU 后,您必须使用 CPU 关联系统调用或 numactl 命令手动将进程分配给隔离的 CPU。

有人试图修补此行为,但据我所知,它没有被确认。

总之,Ubuntu 并没有忽略这个选项,它正在按预期工作。它是否按预期工作是一个不同的问题。

相关内容