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)    收藏  举报

导航