第 32 章 使用 RCU 回调提高 CPU 性能
Read-Copy-Update
(RCU
)系统为在内核中相互排除线程的无锁定机制。由于执行 RCU 操作,在删除内存是安全的时,调用恢复有时会在 CPU 上排队。
使用 RCU 回调提高 CPU 性能:
- 您可以删除 CPU 作为运行 CPU 回调的候选者。
- 您可以分配一个 CPU 来处理所有 RCU 回调。此 CPU 称为内务 CPU。
- 您可以从消耗 RCU 卸载线程的责任中缓解 CPU。
这种组合减少了专用于用户工作负载的 CPU 的干扰。
先决条件
- 管理员特权。
-
安装了
tuna
软件包
32.1. 卸载 RCU 回调
您可以使用 rcu_nocbs
和 rcu_nocb_poll
内核参数来卸载 RCU
回调。
流程
要从运行 RCU 回调的候选中移除一个或多个 CPU,在
rcu_nocbs
内核参数中指定 CPU 列表,例如:rcu_nocbs=1,4-6
或者
rcu_nocbs=3
第二个示例指示 CPU 3 为 no-callback CPU 的内核。这意味着,RCU 回调不会在
rcuc/$CPU
线程固定到 CPU 3 中完成,但在rcuo/$CPU
线程中。您可以将此 trhead 移到 housekeeping CPU,以缓解 CPU 3 不会被分配的 RCU 回调作业。