我在顶部看到的rcuos / rcuob进程是什么?


59

我跑到顶部,看到很多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

这些过程是什么?


我猜这些进程是与RCU相关的内核进程。这是有关以下内容的有用链接:在配置Linux内核时了解RCU,此处的问题相同。
Lety 2014年

@sonicboom-好的帖子-关于编码员是否能够编写某些东西,这也可能是一种监视工具吗?(由ibm撰写?)...-这是斯诺登的新案例吗?
dschinn1001 2014年

Answers:


40

解释这一点的关键文章在这里:https : //lwn.net/Articles/522262/

为了实现更快的同步,内核中的许多结构都是“ RCU”或“ read-copy-update”。许多线程可以同时读取而不会阻塞,并且想要更改结构的线程可以通过将相关数据复制到新位置并更改引用(“删除”)来快速读取。但是,旧数据必须生存更长的时间,以便读取线程可以完成其工作。当旧数据不再需要读者处理时,最终可以将其删除(“回收”)。

rcuos,cucuob线程在那里处理此过程的回收部分。它曾经被当作软件IRQ的一部分来处理,这意味着它可以在不合时宜的时候将处理器的功能从关键的用户进程中夺走。通过将其移至一堆专用的rcu **线程,可以对系统进行调整,以减少此回收过程的干扰。

减少操作系统抖动并不是这些线程的目的,尽管这可能是它们存在的主要原因。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.