私はトップを走りました、そして、私は多くのrcuos/rcuobプロセスを見ます。次に、トップ出力のサンプルを示します。
top - 21:41:15 up 22 days, 19:20, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 332 total, 1 running, 331 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni, 99.9%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 32910904k total, 2232224k used, 30678680k free, 246636k buffers
Swap: 33517564k total, 0k used, 33517564k free, 1048244k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3098 root 20 0 11.8g 113m 9.9m S 1 0.4 67:57.98 asterisk
12 root 20 0 0 0 0 S 0 0.0 0:53.61 rcuos/3
1130 root 39 19 0 0 0 S 0 0.0 78:26.78 kipmi0
1735 root 20 0 15988 740 540 S 0 0.0 17:34.69 irqbalance
1875 zabbix 20 0 89416 2472 1828 S 0 0.0 12:55.47 zabbix_agentd
1 root 20 0 24316 2288 1336 S 0 0.0 0:05.06 init
2 root 20 0 0 0 0 S 0 0.0 0:00.25 kthreadd
3 root 20 0 0 0 0 S 0 0.0 0:02.40 ksoftirqd/0
5 root 0 -20 0 0 0 S 0 0.0 0:00.00 kworker/0:0H
6 root 20 0 0 0 0 S 0 0.0 0:00.00 kworker/u48:0
8 root 20 0 0 0 0 S 0 0.0 4:55.92 rcu_sched
9 root 20 0 0 0 0 S 0 0.0 1:31.03 rcuos/0
10 root 20 0 0 0 0 S 0 0.0 0:54.04 rcuos/1
11 root 20 0 0 0 0 S 0 0.0 0:53.16 rcuos/2
13 root 20 0 0 0 0 S 0 0.0 0:45.96 rcuos/4
14 root 20 0 0 0 0 S 0 0.0 0:41.84 rcuos/5
15 root 20 0 0 0 0 S 0 0.0 0:02.56 rcuos/6
16 root 20 0 0 0 0 S 0 0.0 0:07.25 rcuos/7
17 root 20 0 0 0 0 S 0 0.0 0:12.06 rcuos/8
18 root 20 0 0 0 0 S 0 0.0 0:12.14 rcuos/9
19 root 20 0 0 0 0 S 0 0.0 0:11.21 rcuos/10
20 root 20 0 0 0 0 S 0 0.0 0:05.66 rcuos/11
21 root 20 0 0 0 0 S 0 0.0 1:39.42 rcuos/12
22 root 20 0 0 0 0 S 0 0.0 0:35.66 rcuos/13
23 root 20 0 0 0 0 S 0 0.0 0:26.46 rcuos/14
24 root 20 0 0 0 0 S 0 0.0 0:00.88 rcuos/15
25 root 20 0 0 0 0 S 0 0.0 0:00.30 rcuos/16
26 root 20 0 0 0 0 S 0 0.0 0:31.93 rcuos/17
27 root 20 0 0 0 0 S 0 0.0 0:18.58 rcuos/18
28 root 20 0 0 0 0 S 0 0.0 0:20.53 rcuos/19
29 root 20 0 0 0 0 S 0 0.0 0:44.95 rcuos/20
30 root 20 0 0 0 0 S 0 0.0 0:01.92 rcuos/21
31 root 20 0 0 0 0 S 0 0.0 0:00.24 rcuos/22
32 root 20 0 0 0 0 S 0 0.0 0:05.01 rcuos/23
33 root 20 0 0 0 0 S 0 0.0 0:00.00 rcu_bh
34 root 20 0 0 0 0 S 0 0.0 0:00.00 rcuob/0
35 root 20 0 0 0 0 S 0 0.0 0:00.00 rcuob/1
36 root 20 0 0 0 0 S 0 0.0 0:00.00 rcuob/2
37 root 20 0 0 0 0 S 0 0.0 0:00.00 rcuob/3
38 root 20 0 0 0 0 S 0 0.0 0:00.00 rcuob/4
39 root 20 0 0 0 0 S 0 0.0 0:00.00 rcuob/5
40 root 20 0 0 0 0 S 0 0.0 0:00.00 rcuob/6
41 root 20 0 0 0 0 S 0 0.0 0:00.00 rcuob/7
42 root 20 0 0 0 0 S 0 0.0 0:00.00 rcuob/8
43 root 20 0 0 0 0 S 0 0.0 0:00.00 rcuob/9
44 root 20 0 0 0 0 S 0 0.0 0:00.00 rcuob/10
45 root 20 0 0 0 0 S 0 0.0 0:00.00 rcuob/11
46 root 20 0 0 0 0 S 0 0.0 0:00.00 rcuob/12
47 root 20 0 0 0 0 S 0 0.0 0:00.00 rcuob/13
48 root 20 0 0 0 0 S 0 0.0 0:00.00 rcuob/14
49 root 20 0 0 0 0 S 0 0.0 0:00.00 rcuob/15
50 root 20 0 0 0 0 S 0 0.0 0:00.00 rcuob/16
51 root 20 0 0 0 0 S 0 0.0 0:00.00 rcuob/17
52 root 20 0 0 0 0 S 0 0.0 0:00.00 rcuob/18
53 root 20 0 0 0 0 S 0 0.0 0:00.00 rcuob/19
54 root 20 0 0 0 0 S 0 0.0 0:00.00 rcuob/20
55 root 20 0 0 0 0 S 0 0.0 0:00.00 rcuob/21
56 root 20 0 0 0 0 S 0 0.0 0:00.00 rcuob/22
57 root 20 0 0 0 0 S 0 0.0 0:00.00 rcuob/23
58 root RT 0 0 0 0 S 0 0.0 0:00.87 migration/0
59 root RT 0 0 0 0 S 0 0.0 0:08.47 watchdog/0
60 root RT 0 0 0 0 S 0 0.0 0:08.41 watchdog/1
これらのプロセスは何ですか?
これを説明する重要な記事はこちらです: https://lwn.net/Articles/522262/
同期を高速化するために、カーネル内の多くの構造は「RCU」またはread-copy-updateです。多くのスレッドは、ブロックせずに同時に読み取ることができ、構造を変更したいスレッドは、関連するデータを新しい場所にコピーして参照を変更(「削除」)することで、すばやく変更できます。ただし、スレッドの読み取りが作業を終了できるように、古いデータはしばらくの間存続する必要があります。古いデータに作業中のリーダーがなくなったら、最終的に削除できます(「レクラメーション」)。
Rcuos、rcuobスレッドは、このプロセスのレクラメーション部分を処理するためにあります。以前はソフトウェアIRQの一部として処理されていたため、不適切なタイミングで重要なユーザープロセスからプロセッサのパワーを奪う可能性がありました。これを専用のrcu **スレッドの束に移動することで、システムを調整して、この再生プロセスの邪魔にならないようにすることができます。
OSジッタを減らすことはこれらのスレッドの目的ではありませんが、スレッドが存在する主な理由かもしれません。
Ubuntuforumsによると、それらは次のカーネルフラグによってオンにされる「Reduce OS Jitter」から来ています
CONFIG_RCU_NOCB_CPU
CONFIG_RCU_NOCB_CPU_ALL
CONFIG_RCU_STALL_COMMON
CONFIG_RCU_USER_QS
13.10(Saucy)以降、デフォルトで有効になっています。
見る: