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 内部变量。