Ich bin oben gelaufen und sehe viele rcuos / rcuob-Prozesse. Hier ist ein Beispiel für die Spitzenleistung:
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
Was sind diese Prozesse?
Antworten:
Der Hauptartikel, der dies erklärt, ist hier: https://lwn.net/Articles/522262/
Für eine schnellere Synchronisation sind viele Strukturen im Kernel "RCU" oder Read-Copy-Update. Viele Threads können gleichzeitig lesen, ohne zu blockieren, und Threads, die die Struktur ändern möchten, können dies schnell tun, indem sie die relevanten Daten an einen neuen Speicherort kopieren und den Verweis ändern ("Entfernen"). Die alten Daten müssen jedoch einige Zeit länger bestehen, damit das Lesen von Threads ihre Arbeit beenden kann. Wenn die alten Daten nicht mehr von Lesern bearbeitet werden, können sie endgültig gelöscht werden ("Reklamation").
Die rcuos- und rcuob-Threads sind dazu da, den Rückgewinnungsteil dieses Prozesses zu erledigen. Früher wurde es als Teil des Software-IRQ gehandhabt, was bedeutete, dass kritische Benutzerprozesse zu unpassenden Zeiten nicht mehr mit Prozessorleistung versorgt werden konnten. Durch Verschieben in eine Reihe dedizierter rcu ** -Threads kann das System so optimiert werden, dass dieser Wiederherstellungsprozess weniger aufdringlich wird.
Das Reduzieren von OS-Jitter ist nicht der Zweck dieser Threads, obwohl dies möglicherweise der Hauptgrund dafür ist, dass sie existieren.
quelle
Nach Angaben des Ubuntuforums stammen sie aus dem "Reduce OS Jitter", der von den folgenden Kernel-Flags aktiviert wird
Seit 13.10 (Saucy) sind sie standardmäßig aktiviert.
Sehen:
quelle