当前位置: 首页>>技术教程>>正文


`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 

最佳思路

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

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

RHEL documentation(重点是我)

3.3.6.2. Isolating CPUs

You can isolate one or more CPUs from the scheduler with the isolcpus boot parameter. This prevents the scheduler from scheduling any user-space threads on this CPU. Once a CPU is isolated, you must manually assign processes to the isolated CPU, either with the CPU affinity system calls or the numactl command.

有人尝试过patch this behaviour,但据我所知,它没有被确认。

总而言之,Ubuntu并没有忽略该选项,它可以按预期运行。它是否按预期工作是一个不同的查询。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/11466.html,未经允许,请勿转载。