Corrí al tope, y veo muchos procesos rcuos / rcuob. Aquí hay una muestra de salida superior:
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
¿Cuáles son estos procesos?
Respuestas:
El artículo clave que explica esto está aquí: https://lwn.net/Articles/522262/
Para una sincronización más rápida, muchas estructuras en el núcleo son "RCU" o lectura-copia-actualización. Muchos hilos pueden leer simultáneamente sin bloqueo, y los hilos que desean alterar la estructura pueden hacerlo rápidamente copiando los datos relevantes a una nueva ubicación y cambiando la referencia ("eliminación"). Sin embargo, los datos antiguos deben vivir durante un tiempo más para que los hilos de lectura puedan finalizar su trabajo. Cuando los datos antiguos ya no tienen lectores trabajando en ellos, finalmente se pueden eliminar ("reclamación").
Los subprocesos rcuos, rcuob están ahí para manejar la parte de recuperación de este proceso. Solía manejarse como parte del software IRQ, lo que significaba que podía quitar la potencia del procesador de los procesos críticos del usuario en momentos inoportunos. Al mover esto a un grupo de subprocesos rcu ** dedicados, el sistema se puede ajustar para que este proceso de recuperación sea menos intrusivo.
La reducción de la fluctuación del sistema operativo no es el propósito de estos subprocesos, aunque puede ser la razón principal por la que existen.
fuente
Según los foros de ubuntu, provienen de "Reduce OS Jitter", que se activa mediante los siguientes indicadores del kernel
Desde 13.10 (Saucy) están habilitados por defecto.
Ver:
fuente