What are the rcuos/rcuob processes I'm seeing in top?

The key article explaining this is here: https://lwn.net/Articles/522262/

For faster synchronization, many structures in the kernel are "RCU", or read-copy-update. Many threads can read simultaneously without blocking, and threads that want to alter the structure can do so quickly by copying the relevant data to a new location and changing the reference ("removal"). However, the old data must live for some time longer so that reading threads can finish their work. When the old data no longer has readers working on it, it can finally be deleted ("reclamation").

The rcuos, rcuob threads are there to handle the reclamation part of this process. It used to be handled as part of software IRQ, which meant it could take processor power away from critical user processes at inopportune times. By moving this to a bunch of dedicated rcu** threads, the system can be tuned to make this reclamation process less intrusive.

Reducing OS jitter is not the purpose of these threads, though it may be the main reason they exist.


According to the ubuntuforums they are coming from the "Reduce OS Jitter" which is turned on by the following kernel flags

CONFIG_RCU_NOCB_CPU
CONFIG_RCU_NOCB_CPU_ALL
CONFIG_RCU_STALL_COMMON
CONFIG_RCU_USER_QS

Since 13.10 (Saucy) they are enabled by default.

See:

  • http://ubuntuforums.org/showthread.php?t=2225218
  • https://www.kernel.org/doc/Documentation/kernel-per-CPU-kthreads.txt