RCU-8——RCU相关参数
基于msm-4.4
一、参数介绍
注: 本文主要来自 msm-4.4/Documentation/kernel-parameters.txt
1. rcu_nocbs
rcu_nocbs= [KNL]
在使用 CONFIG_RCU_NOCB_CPU=y 构建的内核中,将指定的 CPU 列表设置为无回调 CPU。这些 CPU 的 RCU 回调调用将被卸载到为此目的创建的“rcuox/N”个 kthreads 中,其中“x”表示“b”(代表 RCU-bh)、“p”(代表 RCU-preempt)和“s”(代表 RCU-sched),“N”表示 CPU 编号。这可以减少被卸载 CPU 上的操作系统抖动,这对于 HPC 和实时工作负载非常有用。它还可以提高非对称多处理器的能效。
2. rcu_nocb_poll
rcu_nocb_poll [KNL]
无需要求卸载的 CPU(由上面的 rcu_nocbs= 指定)显式唤醒相应的“rcuoN” kthreads,而是让这些 kthreads 轮询回调。这可以提高卸载 CPU 的实时响应能力,因为它们无需唤醒相应的 kthreads,但由于需要 kthreads 定期唤醒进行轮询,因此会降低能效。
3. rcutree.blimit
rcutree.blimit= [KNL]
设置一批中要处理的已完成 RCU 回调的最大数量。
4. rcutree.dump_tree
rcutree.dump_tree= [KNL]
在启动初期转储 rcu_node 组合树的结构。这用于诊断目的,以验证树的设置是否正确。
5. rcutree.gp_cleanup_delay
rcutree.gp_cleanup_delay= [KNL]
设置 RCU 宽限期清理每一步的延迟 jiffies 数。该选项仅在设置了 CONFIG_RCU_TORTURE_TEST_SLOW_CLEANUP 时有效。
6. rcutree.gp_init_delay
rcutree.gp_init_delay= [KNL]
设置 RCU 宽限期初始化每一步的延迟 jiffies 数。该选项仅在设置了 CONFIG_RCU_TORTURE_TEST_SLOW_INIT 时有效。
7. rcutree.gp_preinit_delay
rcutree.gp_preinit_delay= [KNL]
设置 RCU 宽限期预初始化每一步的延迟 jiffies 数量,即最近的 CPU 热插拔更改在 rcu_node 组合树中的传播。该选项仅在设置了 CONFIG_RCU_TORTURE_TEST_SLOW_PREINIT 时有效。
8. rcutree.rcu_fanout_exact
rcutree.rcu_fanout_exact= [KNL]
禁用 rcu_node 组合树的自动平衡。此功能由 rcutorture 使用,对于缓存间传输延迟较高的架构可能有用。
9. rcutree.rcu_fanout_leaf
rcutree.rcu_fanout_leaf= [KNL]
更改分配给每个叶子 rcu_node 结构体的 CPU 数量。对于非常大的系统很有用,系统会选择值 64;对于远程访问延迟较大的 NUMA 系统,系统会选择与相应硬件边界对齐的值。
10. rcutree.jiffies_till_sched_qs
在 RCU 开始从 rcu_note_context_switch() 请求静止状态帮助之前,设置给定宽限期内所需的 jiffies 时间。
11. rcutree.jiffies_till_first_fqs
rcutree.jiffies_till_first_fqs= [KNL]
设置从宽限期初始化到首次尝试强制进入静止状态的延迟时间。单位为 jiffies,最小值为 0,最大值为 HZ。
12. rcutree.jiffies_till_next_fqs
设置强制进入静止状态的后续尝试之间的延迟时间。单位为 jiffies,最小值为 1,最大值为 HZ。
13. rcutree.kthread_prio
rcutree.kthread_prio= [KNL,BOOT]
设置 RCU per-CPU kthreads 的 SCHED_FIFO 优先级 (rcuc/N)。此值也用于 RCU boost 线程 (rcub/N) 和 RCU 宽限期 kthreads(rcu_bh、rcu_preempt 和 rcu_sched)的优先级。如果设置了 RCU_BOOST,则有效值为 1-99,默认值为 1(最低优先级)。否则,当未设置 RCU_BOOST 时,有效值为 0-99,默认值为 0(非实时)。
14. rcutree.rcu_nocb_leader_stride
rcutree.rcu_nocb_leader_stride= [KNL]
设置 NOCB kthread 组的数量,默认为 CPU 数量的平方根。较大的数字会减少每个 CPU 宽限期 kthread 的唤醒开销,但会增加每个组的 Leader 线程的相同开销。
15. rcutree.qhimark
rcutree.qhimark= [KNL]
设置排队 RCU 回调的阈值,超过该阈值将禁用批量限制。
16. rcutree.qlowmark
rcutree.qlowmark=[KNL]
设置排队 RCU 回调的阈值,低于该阈值时将重新启用批量限制。
17. rcutree.rcu_idle_gp_delay
rcutree.rcu_idle_gp_delay= [KNL]
设置具有 RCU 回调 (RCU_FAST_NO_HZ=y) 的空闲 CPU 的唤醒间隔。
18. rcutree.rcu_idle_lazy_gp_delay
rcutree.rcu_idle_lazy_gp_delay= [KNL]
设置仅具有“惰性”RCU 回调 (RCU_FAST_NO_HZ=y) 的空闲 CPU 的唤醒间隔。惰性 RCU 回调是指那些 RCU 可以证明只执行释放内存操作的回调。
19. rcutorture.cbflood_inter_holdoff
设置连续回调洪水测试之间的延迟时间(jiffies)。
20. rcutorture.cbflood_intra_holdoff
rcutorture.cbflood_intra_holdoff=[KNL]
设置给定回调泛洪测试中连续回调爆发之间的延迟时间(jiffies)。
21. rcutorture.cbflood_n_burst
rcutorture.cbflood_n_burst= [KNL]
设置组成指定回调泛洪测试的突发次数。设置为零可禁用回调泛洪测试。
22. rcutorture.cbflood_n_per_burst
rcutorture.cbflood_n_per_burst= [KNL]
设置在回调泛洪测试的给定突发中要注册的回调数量。
23. rcutorture.fqs_duration
rcutorture.fqs_duration= [KNL]
以微秒为单位设置 force_quiescent_state 突发的持续时间。
24. rcutorture.fqs_holdoff
rcutorture.fqs_holdoff= [KNL]
设置 force_quiescent_state 突发内的延迟时间(以微秒为单位)。
25. rcutorture.fqs_stutter
rcutorture.fqs_stutter= [KNL]
设置 force_quiescent_state 爆发之间的等待时间(以秒为单位)。
26. rcutorture.gp_cond
rcutorture.gp_cond= [KNL]
如果可用,请使用条件/异步更新端原语。
27. rcutorture.gp_exp
rcutorture.gp_exp= [KNL]
如果可用,请使用快速更新端原语。
28. rcutorture.gp_normal
rcutorture.gp_normal= [KNL]
如果可用,请使用普通(非加急)异步更新端原语。
29. rcutorture.gp_sync
rcutorture.gp_sync= [KNL]
如果可用,请使用普通(非加急)同步更新端原语。如果 rcutorture.gp_cond=、rcutorture.gp_exp=、rcutorture.gp_normal= 和 rcutorture.gp_sync= 全部为零,则 rcutorture 会将其视为非零值。
30. rcutorture.n_barrier_cbs
rcutorture.n_barrier_cbs= [KNL]
设置用于 rcu_barrier() 测试的回调/线程。
31. rcutorture.nfakewriters
rcutorture.nfakewriters= [KNL]
设置并发 RCU 写入器的数量。这些写入器仅用于测试 RCU,不参与实际测试,因此称为“假”。
32. rcutorture.nreaders
rcutorture.nreaders= [KNL]
设置 RCU 读取器的数量。值为 -1 时选择 N-1,其中 N 为 CPU 数量。小于 -1 的 n 值选择 N-n-2,其中 N 也为 CPU 数量。例如,-2 表示选择 N(CPU 数量),-3 表示选择 N+1,依此类推。
33. rcutorture.object_debug
rcutorture.object_debug= [KNL]
启用 debug-object double-call_rcu() 测试。
34. rcutorture.onoff_holdoff
rcutorture.onoff_holdoff=[KNL]
设置启动后 CPU 热插拔测试的时间(秒)。
35. rcutorture.onoff_interval
rcutorture.onoff_interval=[KNL]
设置 CPU 热插拔操作之间的时间间隔(秒),设置为零则禁用 CPU 热插拔测试。
36. rcutorture.shuffle_interval
rcutorture.shuffle_interval=[KNL]
设置任务重排间隔(秒)。重排任务允许部分 CPU 在 rcutorture 测试期间进入 dyntick-idle 模式。
37. rcutorture.shutdown_secs
rcutorture.shutdown_secs= [KNL]
设置系统启动后关闭的时间(秒)。这对于无需干预的自动化测试非常有用。
38. rcutorture.stall_cpu
rcutorture.stall_cpu=[KNL]
CPU 停顿持续时间(秒),用于测试 RCU CPU 停顿警告,设置为零表示禁用。
39. rcutorture.stall_cpu_holdoff
rcutorture.stall_cpu_holdoff= [KNL]
启动后至发生卡顿前等待的时间(秒)。
40. rcutorture.stat_interval
rcutorture.stat_interval=[KNL]
统计 printk() 的间隔时间(秒)。
41. rcutorture.stutter
rcutorture.stutter= [KNL]
用于设置卡顿测试的时间(秒)。例如,指定 5 秒将使测试运行 5 秒,然后等待 5 秒,依此类推。这将测试 RCU 突然切换至空闲状态的能力。
42. rcutorture.test_boost
rcutorture.test_boost= [KNL]
测试 RCU 优先级提升?0=否,1=可能,2=是。“可能”表示测试被测 RCU 实现是否支持 RCU 优先级提升。
43. rcutorture.test_boost_duration
rcutorture.test_boost_duration= [KNL]
每次单独升压测试的持续时间(秒)。
44. rcutorture.test_boost_interval
rcutorture.test_boost_interval= [KNL]
每次 boost 测试之间的间隔(秒)。
45. rcutorture.test_no_idle_hz
rcutorture.test_no_idle_hz= [KNL]
测试 RCU 的 dyntick-idle 处理。另请参阅 rcutorture.shuffle_interval 参数。
46. rcutorture.torture_runnable
rcutorture.torture_runnable= [BOOT]
在启动时启动 rcutorture。
47. rcutorture.torture_type
rcutorture.torture_type= [KNL]
指定要测试的 RCU 实现。
48. rcutorture.verbose
rcutorture.verbose=[KNL]
启用额外的 printk() 语句。
49. rcupdate.rcu_expedited
rcupdate.rcu_expedited= [KNL]
使用加急宽限期原语,例如,使用 syncnize_rcu_expedited() 代替 syncnize_rcu()。这可以降低延迟,但会增加 CPU 使用率,降低实时延迟,并降低能效。
50. rcupdate.rcu_cpu_stall_suppress
rcupdate.rcu_cpu_stall_suppress= [KNL]
抑制 RCU CPU 停顿警告消息。
51. rcupdate.rcu_cpu_stall_timeout
rcupdate.rcu_cpu_stall_timeout= [KNL]
设置 RCU CPU 停顿警告消息的超时时间。
52. rcupdate.rcu_task_stall_timeout
rcupdate.rcu_task_stall_timeout= [KNL]
设置 RCU 任务停顿警告消息的超时时间(以 jiffies 为单位)。使用小于或等于零的值禁用。
53. rcupdate.rcu_self_test
rcupdate.rcu_self_test=[KNL]
运行 RCU 早期启动自检
54. rcupdate.rcu_self_test_bh
rcupdate.rcu_self_test_bh=[KNL]
运行 RCU bh 早期启动自检
55. rcupdate.rcu_self_test_sched
rcupdate.rcu_self_test_sched=[KNL]
运行 RCU sched 早期启动自检
posted on 2025-07-24 21:05 Hello-World3 阅读(64) 评论(0) 收藏 举报