私のLinuxバージョンが期待どおりに実行されていることを確認しようとしています。isolcpus
RISC-V SPIKEシミュレータでシミュレートされた2コアシステムの1つのコアを分離するために、カーネルコマンドラインパラメータを使用しました。中断することなく隔離されたコアでプロセスを実行したいと思います。
Linuxから起動すると、予想されるコンテンツが/proc/cmdline
含まれます。isolcpus=1
ただし、実行中のプロセスのコアアフィニティを確認すると、一部のプロセスがまだCPU1にあることがわかります。
ps -A -o pid,cmd,psr
PID CMD PSR
1 init 0
2 [kthreadd] 0
3 [rcu_gp] 0
4 [rcu_par_gp] 0
5 [slub_flushwq] 0
6 [netns] 0
7 [kworker/0:0-events] 0
8 [kworker/0:0H-events_highpr 0
9 [kworker/u4:0-events_unboun 0
10 [mm_percpu_wq] 0
11 [rcu_tasks_trace_kthread] 0
12 [ksoftirqd/0] 0
13 [rcu_sched] 0
14 [migration/0] 0
15 [kworker/0:1-events] 0
16 [cpuhp/0] 0
17 [cpuhp/1] 1
18 [migration/1] 1
19 [ksoftirqd/1] 1
20 [kworker/1:0-events] 1
21 [kworker/1:0H] 0
22 [kdevtmpfs] 0
23 [inet_frag_wq] 0
24 [kauditd] 0
25 [khungtaskd] 0
26 [oom_reaper] 0
27 [writeback] 0
28 [kcompactd0] 0
29 [kblockd] 0
30 [ata_sff] 0
31 [kworker/1:1-mm_percpu_wq] 1
32 [rpciod] 0
33 [kworker/0:1H] 0
34 [xprtiod] 0
35 [kworker/u4:1-events_unboun 0
36 [kswapd0] 0
37 [nfsiod] 0
38 [khvcd] 0
39 [uas] 0
40 [mld] 0
41 [ipv6_addrconf] 0
49 [kworker/u4:2-events_unboun 0
69 /sbin/syslogd -n 0
73 /sbin/klogd -n 0
90 -/bin/sh 0
110 ps -A -o pid,cmd,psr 0
それらは単なるカーネルプログラムです。私が手動でタスクをcpu1に割り当てると、それらがコアに座って耳を傾けると疑われます。
だから私の質問は:コアを正しく分離した場合、コアで確認する必要がある最小限のプロセスセットは何ですか?セットが空でない場合、彼らは何をしているのでしょうか?ボーナスでps
このコマンドがisolcpus
期待どおりに機能することを確認するのに十分ですか?
注:これがうまくいかないと思うようにするのは、互いに反対でなければならないこと/sys/devices/system/cpu/isolated
を読んだからです。/sys/devices/system/cpu/present
しかし私は見る:
# cat /sys/devices/system/cpu/isolated
1
# cat /sys/devices/system/cpu/present
0-1