首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >配置Linux内核时了解RCU

配置Linux内核时了解RCU
EN

Unix & Linux用户
提问于 2013-06-20 00:16:27
回答 1查看 20.5K关注 0票数 4

我正在配置Linux内核版本3.9.4。有人问我关于RCU的问题(见下文)。具体来说,这些都是什么?启用或禁用其中一些的优点和缺点是什么?

代码语言:javascript
复制
Consider userspace as in RCU extended quiescent state (RCU_USER_QS) [N/y/?]
Tree-based hierarchical RCU fanout value (RCU_FANOUT) [64]
Disable tree-based hierarchical RCU auto-balancing (RCU_FANOUT_EXACT) [N/y/?]
Accelerate last non-dyntick-idle CPU's grace periods (RCU_FAST_NO_HZ) [Y/n/?]
Offload RCU callback processing from boot-selected CPUs (RCU_NOCB_CPU) [N/y/?] 
EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2013-06-20 01:01:30

LTTng项目站点上有一些关于这些选项的详细信息。RCU的是(阅读-复制-更新)。这些是内核中的数据结构,允许在多核CPU中的核间复制相同的数据,并保证数据在副本之间保持同步。

节选

liburcu是一个LGPLv2.1用户空间RCU (读-拷贝-更新)库。该数据同步库提供读取端访问,其大小与核数成线性关系.这样做的方法是允许给定数据结构的多个副本同时存在,并监视数据结构访问以检测宽限期,在宽限期之后可以进行内存回收。

资源

  • 这里很好地引用了什么是RCU,以及它们是如何在lwn.net上工作的,名为:从根本上讲,什么是RCU?
  • 还有这一资源和lwn.net的标题相同,但内容不同。
  • 也有维基百科关于RCU主题的条目
  • 最后,这里提供了Linux内核文档:rcu.txt

,那么这些选项是什么?

  • RCU_用户_QS

该选项在内核/用户空间边界上设置钩子,并在CPU在用户空间中运行时将RCU置于扩展的静态状态。这意味着当CPU在用户空间中运行时,它将被排除在全局RCU状态机之外,因此不会试图保持RCU的定时器运行。除非您想黑并帮助开发完整的dynticks模式,否则不应该启用此选项。它还增加了不必要的开销。如果不确定,说N

  • RCU Fanout

此选项控制RCU分层实现的扇形,允许RCU在具有大量CPU的机器上高效工作。这个值至少必须是NR_CPUS的第四个根,这允许NR_CPUS非常大。RCU_FANOUT的默认值应该用于生产系统,但是如果您要对RCU实现本身进行压力测试,那么小的RCU_FANOUT值允许您在小型(Er)系统上测试大型系统代码路径。如果测试RCU本身,请选择一个特定的数字。如果不确定,请使用默认设置。

  • RCU_法诺特_精确性

此选项强制使用指定的确切RCU_FANOUT值,而不考虑层次结构中的不平衡。这对于测试RCU本身是有用的,并且有一天它可能在具有强大NUMA行为的系统上很有用。没有RCU_FANOUT_EXACT,代码将平衡层次结构。如果不确定就说N。

  • RCU_快地_不是_赫兹

此选项允许CPU进入dynticks-空闲状态,即使它们有RCU回调排队,并且防止RCU大约每四个jiffies唤醒这些CPU一次以上(默认情况下,您可以使用rcutree.rcu_idle_gp_delay参数来调整它),从而提高能效。另一方面,此选项会增加RCU宽限期的持续时间,例如减慢synchronize_rcu()。如果能源效率是非常重要的,那么就说Y,而你并不关心增加宽限期的时间。如果你不确定就说N。

  • RCU_NOCB_CPU

使用此选项可减少攻击HPC或实时工作负载时的OS抖动.它还可以用于将RCU回调调用卸载到电池驱动的非对称多处理器中的节能CPU。此选项从启动时由rcu_nocbs参数指定的一组CPU卸载回调调用。对于每个这样的CPU,将创建一个k线程("rcuox/N")来调用回调,其中"N“是正在卸载的CPU,其中"x”是RCU的"b“,"p”是RCU的抢占,"s“是RCU的”S“。没有什么可以阻止这个k线程在指定的CPU上运行,但是(1)可以在每个回调之间抢占这些k线程,(2)可以使用关联或cgroup来强制这些k线程在任何一组CPU上运行。如果您想要帮助调试降低的OS抖动,请在这里说Y。如果你不确定,请在这里说。

,那么你需要它吗?

我想说的是,如果您不知道某个特定选项在编译内核时所做的事情,那么很可能可以放心地说,没有它您就能活下去。所以我会拒绝那些问题。

而且,在做这类工作时,我通常会得到与发行版一起使用的内核的配置文件,并进行比较,看看是否缺少任何功能。这可能是您学习所有功能的最佳资源。

例如,在Fedora中,包含了您可以参考的示例信任。有关更多细节,请查看此页面:构建自定义内核

票数 9
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/80063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档