내 Linux 버전이 예상대로 실행되고 있는지 확인하려고 합니다. isolcpus
RISC-V SPIKE 시뮬레이터에서 시뮬레이션된 2코어 시스템 중 하나의 코어를 분리하기 위해 커널 명령줄 매개변수를 사용했습니다 . 중단 없이 격리된 코어에서 프로세스를 실행하고 싶습니다.
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