如何在grub.cfg中设置隔离核心?

如何在grub.cfg中设置隔离核心?

CPU2当我在我定制的Linux系统中设置隔离时grub.cfg,但是重新启动后,我发现仍然有许多用户空间进程正在使用CPU2(例如sshd)使用top。问题是什么?

grub.cfg:

# Begin cfg
set default=0
set timeout=3

#set root=(hd0,gpt3)

menuentry "GNU/Linux, Dobot-6.4.0-rt8" {
    linux (hd0,gpt2)/bzImage rw root=/dev/mmcblk0p3 net.ifname-policy=onboard,path,slot
    initrd (hd0,gpt2)/initrd.img-6.4.0-rt8
    GRUB_CMDLINE_LINUX_DEFAULT="isolcpus=2"
}

加上GRUB_CMDLINE_LINUX_DEFAULT="quiet splash isolcpus=2"/etc/default/grub结果是一样的。

单个的结果top

Mem: 104600K used, 3676868K free, 384K shrd, 2748K buff, 42804K cached
CPU:  0.1% usr  0.0% sys  0.0% nic 99.7% idle  0.0% io  0.0% irq  0.0% sirq
Load average: 0.31 0.25 0.11 2/125 2112
  PID  PPID USER     STAT   VSZ %VSZ CPU %CPU COMMAND
  336   331 root     S     2580  0.0   3  0.0 sh -c while true; do sleep 1;head -v -n 8 /proc/meminfo; head -v -n 2 /proc/stat /proc/version /proc/uptime /proc/loadavg /proc/sys/fs/file-nr /
  327   325 root     S    22748  0.6   0  0.0 smbd -s /etc/samba/smb.conf -D
  325     1 root     S    22692  0.6   0  0.0 smbd -s /etc/samba/smb.conf -D
  323     1 root     S    15788  0.4   1  0.0 nmbd -s /etc/samba/smb.conf -D
  331   322 root     S     9256  0.2   1  0.0 sshd: root@pts/0
  322     1 root     S     8808  0.2   2  0.0 sshd: /sbin/sshd -f /etc/sshd/sshd_config [listener] 0 of 10-100 startups
  220     1 root     S     3920  0.1   2  0.0 /usr/sbin/plymouthd --mode=boot --attach-to-session --pid-file=/run/plymouth/pid
    1     0 root     S     2580  0.0   1  0.0 init
  328     1 root     S     2580  0.0   1  0.0 -/bin/sh
  333   331 root     S     2580  0.0   3  0.0 -sh
 2087   333 root     R     2580  0.0   0  0.0 top
   53     2 root     IW       0  0.0   2  0.0 [kworker/u8:2-ev]
   96     2 root     SW       0  0.0   3  0.0 [irq/123-xhci_hc]
   27     2 root     SW       0  0.0   1  0.0 [migration/1]
   36     2 root     SW       0  0.0   2  0.0 [migration/2]
   45     2 root     SW       0  0.0   3  0.0 [migration/3]
    9     2 root     IW       0  0.0   0  0.0 [kworker/0:1-eve]
   16     2 root     SW<      0  0.0   2  0.0 [pr/bkl]
   64     2 root     IW       0  0.0   2  0.0 [kworker/2:1-eve]
   74     2 root     IW<      0  0.0   3  0.0 [kworker/3:1H-kb]
   83     2 root     IW       0  0.0   1  0.0 [kworker/1:2-eve]
   14     2 root     SW       0  0.0   0  0.0 [ksoftirqd/0]
   19     2 root     SW       0  0.0   0  0.0 [rcuc/0]
   28     2 root     SW       0  0.0   1  0.0 [rcuc/1]
   37     2 root     SW       0  0.0   2  0.0 [rcuc/2]
   46     2 root     SW       0  0.0   3  0.0 [rcuc/3]
   17     2 root     IW       0  0.0   2  0.0 [rcu_preempt]
   30     2 root     SW       0  0.0   1  0.0 [ksoftirqd/1]
  106     2 root     IW<      0  0.0   0  0.0 [kworker/0:1H-kb]
    7     2 root     IW       0  0.0   0  0.0 [kworker/0:0-mm_]
   15     2 root     SW       0  0.0   0  0.0 [ktimers/0]
   29     2 root     SW       0  0.0   1  0.0 [ktimers/1]
   38     2 root     SW       0  0.0   2  0.0 [ktimers/2]
   39     2 root     SW       0  0.0   2  0.0 [ksoftirqd/2]
   47     2 root     SW       0  0.0   3  0.0 [ktimers/3]
   48     2 root     SW       0  0.0   3  0.0 [ksoftirqd/3]
   52     2 root     IW       0  0.0   2  0.0 [kworker/u8:1-ev]
   58     2 root     IW       0  0.0   3  0.0 [kworker/3:1-mm_]
   99     2 root     SW       0  0.0   2  0.0 [irq/16-i801_smb]
  102     2 root     SW       0  0.0   2  0.0 [irq/16-mmc0]
  177     2 root     IW<      0  0.0   1  0.0 [kworker/1:1H-kb]
    2     0 root     SW       0  0.0   1  0.0 [kthreadd]
    3     2 root     IW<      0  0.0   0  0.0 [rcu_gp]
    4     2 root     IW<      0  0.0   0  0.0 [rcu_par_gp]
    5     2 root     IW<      0  0.0   0  0.0 [slub_flushwq]
    6     2 root     IW<      0  0.0   0  0.0 [netns]
    8     2 root     IW<      0  0.0   0  0.0 [kworker/0:0H-ev]
   10     2 root     IW       0  0.0   0  0.0 [kworker/u8:0-fl]
   11     2 root     IW<      0  0.0   0  0.0 [mm_percpu_wq]
   12     2 root     IW       0  0.0   0  0.0 [rcu_tasks_kthre]

答案1

GRUB_CMDLINE_LINUX_DEFAULT="isolcpus=2"将是 的正确语法/etc/default/grub,它经过预处理以grub2-mkconfig生成实际grub.cfg文件。

如果您/etc/default/grub在未运行的情况下进行编辑grub2-mkconfig(或update-grub在 Debian 相关系统中),您的更改将不会生效。

如果直接编辑grub.cfg,则应该将其添加isolcpus=2到行尾linux ...

编辑grub.cfg将始终在下次启动时生效,但如果grub2-mkconfig出于任何原因(由您或包管理器)运行,您的更改将被覆盖。

GRUB_CMDLINE_LINUX_DEFAULT="isolcpus=2"直接添加该行grub.cfg没有任何意义:它只是设置一个从未用于任何用途的 GRUB 内部变量。

相关内容