diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-11-11 20:00:04 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-11-11 20:00:04 -0500 |
commit | 70fdcb83db15c85a0495b07dc55d9347a4c2efd9 (patch) | |
tree | 5a7f073e87e14aacfc77a21a3bf37bc470143871 /Documentation | |
parent | edae583a6d4d1ad2eb73981787790993fef1bbad (diff) | |
parent | 0e95c69bde1a5bf22acd53b356fe10d7bec6e2be (diff) |
Merge branch 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull RCU updates from Ingo Molnar:
"The main RCU changes in this cycle are:
- Idle entry/exit changes, to throttle callback execution and other
refinements to speed up kbuild, primarily to address performance
issues located by Tibor Billes.
- Grace-period related changes, primarily to aid in debugging,
inspired by an -rt debugging session.
- Code reorganization moving RCU's source files into its own
kernel/rcu/ directory.
- RCU documentation updates
- Miscellaneous fixes.
Note, the following commit:
5c889690aa08 mm: Place preemption point in do_mlockall() loop
is identical to the commit already in your tree via email:
22356f447ceb mm: Place preemption point in do_mlockall() loop
[ Your version of the changelog nicely demonstrates it how kernel oops
messages should be trimmed properly :-/ ]"
* 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (30 commits)
rcu: Move RCU-related source code to kernel/rcu directory
rcu: Fix occurrence of "the the" in checklist.txt
kthread: Add pointer to vmstat-avoidance patch
rcu: Update stall-warning documentation
rcu: Consistent rcu_is_watching() naming
rcu: Change EXPORT_SYMBOL() to EXPORT_SYMBOL_GPL()
rcu: Is it safe to enter an RCU read-side critical section?
rcu: Throttle invoke_rcu_core() invocations due to non-lazy callbacks
rcu: Throttle rcu_try_advance_all_cbs() execution
rcu: Remove redundant code from rcu_cleanup_after_idle()
rcu: Fix CONFIG_RCU_NOCB_CPU_ALL panic on machines with sparse CPU mask
rcu: Avoid sparse warnings in rcu_nocb_wake trace event
rcu: Track rcu_nocb_kthread()'s sleeping and awakening
rcu: Distinguish between NOCB and non-NOCB rcu_callback trace events
rcu: Add tracing for rcuo no-CBs CPU wakeup handshake
rcu: Add tracing of normal (non-NOCB) grace-period requests
rcu: Add tracing to rcu_gp_kthread()
rcu: Flag lockless access to ->gp_flags with ACCESS_ONCE()
rcu: Prevent spurious-wakeup DoS attack on rcu_gp_kthread()
rcu: Improve grace-period start logic
...
Diffstat (limited to 'Documentation')
-rw-r--r-- | Documentation/DocBook/device-drivers.tmpl | 5 | ||||
-rw-r--r-- | Documentation/RCU/checklist.txt | 4 | ||||
-rw-r--r-- | Documentation/RCU/stallwarn.txt | 22 | ||||
-rw-r--r-- | Documentation/kernel-parameters.txt | 95 | ||||
-rw-r--r-- | Documentation/kernel-per-CPU-kthreads.txt | 17 |
5 files changed, 89 insertions, 54 deletions
diff --git a/Documentation/DocBook/device-drivers.tmpl b/Documentation/DocBook/device-drivers.tmpl index fe397f90a34f..6c9d9d37c83a 100644 --- a/Documentation/DocBook/device-drivers.tmpl +++ b/Documentation/DocBook/device-drivers.tmpl | |||
@@ -87,7 +87,10 @@ X!Iinclude/linux/kobject.h | |||
87 | !Ekernel/printk/printk.c | 87 | !Ekernel/printk/printk.c |
88 | !Ekernel/panic.c | 88 | !Ekernel/panic.c |
89 | !Ekernel/sys.c | 89 | !Ekernel/sys.c |
90 | !Ekernel/rcupdate.c | 90 | !Ekernel/rcu/srcu.c |
91 | !Ekernel/rcu/tree.c | ||
92 | !Ekernel/rcu/tree_plugin.h | ||
93 | !Ekernel/rcu/update.c | ||
91 | </sect1> | 94 | </sect1> |
92 | 95 | ||
93 | <sect1><title>Device Resource Management</title> | 96 | <sect1><title>Device Resource Management</title> |
diff --git a/Documentation/RCU/checklist.txt b/Documentation/RCU/checklist.txt index 7703ec73a9bb..91266193b8f4 100644 --- a/Documentation/RCU/checklist.txt +++ b/Documentation/RCU/checklist.txt | |||
@@ -202,8 +202,8 @@ over a rather long period of time, but improvements are always welcome! | |||
202 | updater uses call_rcu_sched() or synchronize_sched(), then | 202 | updater uses call_rcu_sched() or synchronize_sched(), then |
203 | the corresponding readers must disable preemption, possibly | 203 | the corresponding readers must disable preemption, possibly |
204 | by calling rcu_read_lock_sched() and rcu_read_unlock_sched(). | 204 | by calling rcu_read_lock_sched() and rcu_read_unlock_sched(). |
205 | If the updater uses synchronize_srcu() or call_srcu(), | 205 | If the updater uses synchronize_srcu() or call_srcu(), then |
206 | the the corresponding readers must use srcu_read_lock() and | 206 | the corresponding readers must use srcu_read_lock() and |
207 | srcu_read_unlock(), and with the same srcu_struct. The rules for | 207 | srcu_read_unlock(), and with the same srcu_struct. The rules for |
208 | the expedited primitives are the same as for their non-expedited | 208 | the expedited primitives are the same as for their non-expedited |
209 | counterparts. Mixing things up will result in confusion and | 209 | counterparts. Mixing things up will result in confusion and |
diff --git a/Documentation/RCU/stallwarn.txt b/Documentation/RCU/stallwarn.txt index 8e9359de1d28..6f3a0057548e 100644 --- a/Documentation/RCU/stallwarn.txt +++ b/Documentation/RCU/stallwarn.txt | |||
@@ -12,12 +12,12 @@ CONFIG_RCU_CPU_STALL_TIMEOUT | |||
12 | This kernel configuration parameter defines the period of time | 12 | This kernel configuration parameter defines the period of time |
13 | that RCU will wait from the beginning of a grace period until it | 13 | that RCU will wait from the beginning of a grace period until it |
14 | issues an RCU CPU stall warning. This time period is normally | 14 | issues an RCU CPU stall warning. This time period is normally |
15 | sixty seconds. | 15 | 21 seconds. |
16 | 16 | ||
17 | This configuration parameter may be changed at runtime via the | 17 | This configuration parameter may be changed at runtime via the |
18 | /sys/module/rcutree/parameters/rcu_cpu_stall_timeout, however | 18 | /sys/module/rcutree/parameters/rcu_cpu_stall_timeout, however |
19 | this parameter is checked only at the beginning of a cycle. | 19 | this parameter is checked only at the beginning of a cycle. |
20 | So if you are 30 seconds into a 70-second stall, setting this | 20 | So if you are 10 seconds into a 40-second stall, setting this |
21 | sysfs parameter to (say) five will shorten the timeout for the | 21 | sysfs parameter to (say) five will shorten the timeout for the |
22 | -next- stall, or the following warning for the current stall | 22 | -next- stall, or the following warning for the current stall |
23 | (assuming the stall lasts long enough). It will not affect the | 23 | (assuming the stall lasts long enough). It will not affect the |
@@ -32,7 +32,7 @@ CONFIG_RCU_CPU_STALL_VERBOSE | |||
32 | also dump the stacks of any tasks that are blocking the current | 32 | also dump the stacks of any tasks that are blocking the current |
33 | RCU-preempt grace period. | 33 | RCU-preempt grace period. |
34 | 34 | ||
35 | RCU_CPU_STALL_INFO | 35 | CONFIG_RCU_CPU_STALL_INFO |
36 | 36 | ||
37 | This kernel configuration parameter causes the stall warning to | 37 | This kernel configuration parameter causes the stall warning to |
38 | print out additional per-CPU diagnostic information, including | 38 | print out additional per-CPU diagnostic information, including |
@@ -43,7 +43,8 @@ RCU_STALL_DELAY_DELTA | |||
43 | Although the lockdep facility is extremely useful, it does add | 43 | Although the lockdep facility is extremely useful, it does add |
44 | some overhead. Therefore, under CONFIG_PROVE_RCU, the | 44 | some overhead. Therefore, under CONFIG_PROVE_RCU, the |
45 | RCU_STALL_DELAY_DELTA macro allows five extra seconds before | 45 | RCU_STALL_DELAY_DELTA macro allows five extra seconds before |
46 | giving an RCU CPU stall warning message. | 46 | giving an RCU CPU stall warning message. (This is a cpp |
47 | macro, not a kernel configuration parameter.) | ||
47 | 48 | ||
48 | RCU_STALL_RAT_DELAY | 49 | RCU_STALL_RAT_DELAY |
49 | 50 | ||
@@ -52,7 +53,8 @@ RCU_STALL_RAT_DELAY | |||
52 | However, if the offending CPU does not detect its own stall in | 53 | However, if the offending CPU does not detect its own stall in |
53 | the number of jiffies specified by RCU_STALL_RAT_DELAY, then | 54 | the number of jiffies specified by RCU_STALL_RAT_DELAY, then |
54 | some other CPU will complain. This delay is normally set to | 55 | some other CPU will complain. This delay is normally set to |
55 | two jiffies. | 56 | two jiffies. (This is a cpp macro, not a kernel configuration |
57 | parameter.) | ||
56 | 58 | ||
57 | When a CPU detects that it is stalling, it will print a message similar | 59 | When a CPU detects that it is stalling, it will print a message similar |
58 | to the following: | 60 | to the following: |
@@ -86,7 +88,12 @@ printing, there will be a spurious stall-warning message: | |||
86 | 88 | ||
87 | INFO: rcu_bh_state detected stalls on CPUs/tasks: { } (detected by 4, 2502 jiffies) | 89 | INFO: rcu_bh_state detected stalls on CPUs/tasks: { } (detected by 4, 2502 jiffies) |
88 | 90 | ||
89 | This is rare, but does happen from time to time in real life. | 91 | This is rare, but does happen from time to time in real life. It is also |
92 | possible for a zero-jiffy stall to be flagged in this case, depending | ||
93 | on how the stall warning and the grace-period initialization happen to | ||
94 | interact. Please note that it is not possible to entirely eliminate this | ||
95 | sort of false positive without resorting to things like stop_machine(), | ||
96 | which is overkill for this sort of problem. | ||
90 | 97 | ||
91 | If the CONFIG_RCU_CPU_STALL_INFO kernel configuration parameter is set, | 98 | If the CONFIG_RCU_CPU_STALL_INFO kernel configuration parameter is set, |
92 | more information is printed with the stall-warning message, for example: | 99 | more information is printed with the stall-warning message, for example: |
@@ -216,4 +223,5 @@ that portion of the stack which remains the same from trace to trace. | |||
216 | If you can reliably trigger the stall, ftrace can be quite helpful. | 223 | If you can reliably trigger the stall, ftrace can be quite helpful. |
217 | 224 | ||
218 | RCU bugs can often be debugged with the help of CONFIG_RCU_TRACE | 225 | RCU bugs can often be debugged with the help of CONFIG_RCU_TRACE |
219 | and with RCU's event tracing. | 226 | and with RCU's event tracing. For information on RCU's event tracing, |
227 | see include/trace/events/rcu.h. | ||
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index fcbb736d55fe..203f4a9d9efe 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt | |||
@@ -2599,7 +2599,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
2599 | ramdisk_size= [RAM] Sizes of RAM disks in kilobytes | 2599 | ramdisk_size= [RAM] Sizes of RAM disks in kilobytes |
2600 | See Documentation/blockdev/ramdisk.txt. | 2600 | See Documentation/blockdev/ramdisk.txt. |
2601 | 2601 | ||
2602 | rcu_nocbs= [KNL,BOOT] | 2602 | rcu_nocbs= [KNL] |
2603 | In kernels built with CONFIG_RCU_NOCB_CPU=y, set | 2603 | In kernels built with CONFIG_RCU_NOCB_CPU=y, set |
2604 | the specified list of CPUs to be no-callback CPUs. | 2604 | the specified list of CPUs to be no-callback CPUs. |
2605 | Invocation of these CPUs' RCU callbacks will | 2605 | Invocation of these CPUs' RCU callbacks will |
@@ -2612,7 +2612,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
2612 | real-time workloads. It can also improve energy | 2612 | real-time workloads. It can also improve energy |
2613 | efficiency for asymmetric multiprocessors. | 2613 | efficiency for asymmetric multiprocessors. |
2614 | 2614 | ||
2615 | rcu_nocb_poll [KNL,BOOT] | 2615 | rcu_nocb_poll [KNL] |
2616 | Rather than requiring that offloaded CPUs | 2616 | Rather than requiring that offloaded CPUs |
2617 | (specified by rcu_nocbs= above) explicitly | 2617 | (specified by rcu_nocbs= above) explicitly |
2618 | awaken the corresponding "rcuoN" kthreads, | 2618 | awaken the corresponding "rcuoN" kthreads, |
@@ -2623,126 +2623,145 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
2623 | energy efficiency by requiring that the kthreads | 2623 | energy efficiency by requiring that the kthreads |
2624 | periodically wake up to do the polling. | 2624 | periodically wake up to do the polling. |
2625 | 2625 | ||
2626 | rcutree.blimit= [KNL,BOOT] | 2626 | rcutree.blimit= [KNL] |
2627 | Set maximum number of finished RCU callbacks to process | 2627 | Set maximum number of finished RCU callbacks to process |
2628 | in one batch. | 2628 | in one batch. |
2629 | 2629 | ||
2630 | rcutree.fanout_leaf= [KNL,BOOT] | 2630 | rcutree.rcu_fanout_leaf= [KNL] |
2631 | Increase the number of CPUs assigned to each | 2631 | Increase the number of CPUs assigned to each |
2632 | leaf rcu_node structure. Useful for very large | 2632 | leaf rcu_node structure. Useful for very large |
2633 | systems. | 2633 | systems. |
2634 | 2634 | ||
2635 | rcutree.jiffies_till_first_fqs= [KNL,BOOT] | 2635 | rcutree.jiffies_till_first_fqs= [KNL] |
2636 | Set delay from grace-period initialization to | 2636 | Set delay from grace-period initialization to |
2637 | first attempt to force quiescent states. | 2637 | first attempt to force quiescent states. |
2638 | Units are jiffies, minimum value is zero, | 2638 | Units are jiffies, minimum value is zero, |
2639 | and maximum value is HZ. | 2639 | and maximum value is HZ. |
2640 | 2640 | ||
2641 | rcutree.jiffies_till_next_fqs= [KNL,BOOT] | 2641 | rcutree.jiffies_till_next_fqs= [KNL] |
2642 | Set delay between subsequent attempts to force | 2642 | Set delay between subsequent attempts to force |
2643 | quiescent states. Units are jiffies, minimum | 2643 | quiescent states. Units are jiffies, minimum |
2644 | value is one, and maximum value is HZ. | 2644 | value is one, and maximum value is HZ. |
2645 | 2645 | ||
2646 | rcutree.qhimark= [KNL,BOOT] | 2646 | rcutree.qhimark= [KNL] |
2647 | Set threshold of queued | 2647 | Set threshold of queued |
2648 | RCU callbacks over which batch limiting is disabled. | 2648 | RCU callbacks over which batch limiting is disabled. |
2649 | 2649 | ||
2650 | rcutree.qlowmark= [KNL,BOOT] | 2650 | rcutree.qlowmark= [KNL] |
2651 | Set threshold of queued RCU callbacks below which | 2651 | Set threshold of queued RCU callbacks below which |
2652 | batch limiting is re-enabled. | 2652 | batch limiting is re-enabled. |
2653 | 2653 | ||
2654 | rcutree.rcu_cpu_stall_suppress= [KNL,BOOT] | 2654 | rcutree.rcu_idle_gp_delay= [KNL] |
2655 | Suppress RCU CPU stall warning messages. | ||
2656 | |||
2657 | rcutree.rcu_cpu_stall_timeout= [KNL,BOOT] | ||
2658 | Set timeout for RCU CPU stall warning messages. | ||
2659 | |||
2660 | rcutree.rcu_idle_gp_delay= [KNL,BOOT] | ||
2661 | Set wakeup interval for idle CPUs that have | 2655 | Set wakeup interval for idle CPUs that have |
2662 | RCU callbacks (RCU_FAST_NO_HZ=y). | 2656 | RCU callbacks (RCU_FAST_NO_HZ=y). |
2663 | 2657 | ||
2664 | rcutree.rcu_idle_lazy_gp_delay= [KNL,BOOT] | 2658 | rcutree.rcu_idle_lazy_gp_delay= [KNL] |
2665 | Set wakeup interval for idle CPUs that have | 2659 | Set wakeup interval for idle CPUs that have |
2666 | only "lazy" RCU callbacks (RCU_FAST_NO_HZ=y). | 2660 | only "lazy" RCU callbacks (RCU_FAST_NO_HZ=y). |
2667 | Lazy RCU callbacks are those which RCU can | 2661 | Lazy RCU callbacks are those which RCU can |
2668 | prove do nothing more than free memory. | 2662 | prove do nothing more than free memory. |
2669 | 2663 | ||
2670 | rcutorture.fqs_duration= [KNL,BOOT] | 2664 | rcutorture.fqs_duration= [KNL] |
2671 | Set duration of force_quiescent_state bursts. | 2665 | Set duration of force_quiescent_state bursts. |
2672 | 2666 | ||
2673 | rcutorture.fqs_holdoff= [KNL,BOOT] | 2667 | rcutorture.fqs_holdoff= [KNL] |
2674 | Set holdoff time within force_quiescent_state bursts. | 2668 | Set holdoff time within force_quiescent_state bursts. |
2675 | 2669 | ||
2676 | rcutorture.fqs_stutter= [KNL,BOOT] | 2670 | rcutorture.fqs_stutter= [KNL] |
2677 | Set wait time between force_quiescent_state bursts. | 2671 | Set wait time between force_quiescent_state bursts. |
2678 | 2672 | ||
2679 | rcutorture.irqreader= [KNL,BOOT] | 2673 | rcutorture.gp_exp= [KNL] |
2680 | Test RCU readers from irq handlers. | 2674 | Use expedited update-side primitives. |
2675 | |||
2676 | rcutorture.gp_normal= [KNL] | ||
2677 | Use normal (non-expedited) update-side primitives. | ||
2678 | If both gp_exp and gp_normal are set, do both. | ||
2679 | If neither gp_exp nor gp_normal are set, still | ||
2680 | do both. | ||
2681 | 2681 | ||
2682 | rcutorture.n_barrier_cbs= [KNL,BOOT] | 2682 | rcutorture.n_barrier_cbs= [KNL] |
2683 | Set callbacks/threads for rcu_barrier() testing. | 2683 | Set callbacks/threads for rcu_barrier() testing. |
2684 | 2684 | ||
2685 | rcutorture.nfakewriters= [KNL,BOOT] | 2685 | rcutorture.nfakewriters= [KNL] |
2686 | Set number of concurrent RCU writers. These just | 2686 | Set number of concurrent RCU writers. These just |
2687 | stress RCU, they don't participate in the actual | 2687 | stress RCU, they don't participate in the actual |
2688 | test, hence the "fake". | 2688 | test, hence the "fake". |
2689 | 2689 | ||
2690 | rcutorture.nreaders= [KNL,BOOT] | 2690 | rcutorture.nreaders= [KNL] |
2691 | Set number of RCU readers. | 2691 | Set number of RCU readers. |
2692 | 2692 | ||
2693 | rcutorture.onoff_holdoff= [KNL,BOOT] | 2693 | rcutorture.object_debug= [KNL] |
2694 | Enable debug-object double-call_rcu() testing. | ||
2695 | |||
2696 | rcutorture.onoff_holdoff= [KNL] | ||
2694 | Set time (s) after boot for CPU-hotplug testing. | 2697 | Set time (s) after boot for CPU-hotplug testing. |
2695 | 2698 | ||
2696 | rcutorture.onoff_interval= [KNL,BOOT] | 2699 | rcutorture.onoff_interval= [KNL] |
2697 | Set time (s) between CPU-hotplug operations, or | 2700 | Set time (s) between CPU-hotplug operations, or |
2698 | zero to disable CPU-hotplug testing. | 2701 | zero to disable CPU-hotplug testing. |
2699 | 2702 | ||
2700 | rcutorture.shuffle_interval= [KNL,BOOT] | 2703 | rcutorture.rcutorture_runnable= [BOOT] |
2704 | Start rcutorture running at boot time. | ||
2705 | |||
2706 | rcutorture.shuffle_interval= [KNL] | ||
2701 | Set task-shuffle interval (s). Shuffling tasks | 2707 | Set task-shuffle interval (s). Shuffling tasks |
2702 | allows some CPUs to go into dyntick-idle mode | 2708 | allows some CPUs to go into dyntick-idle mode |
2703 | during the rcutorture test. | 2709 | during the rcutorture test. |
2704 | 2710 | ||
2705 | rcutorture.shutdown_secs= [KNL,BOOT] | 2711 | rcutorture.shutdown_secs= [KNL] |
2706 | Set time (s) after boot system shutdown. This | 2712 | Set time (s) after boot system shutdown. This |
2707 | is useful for hands-off automated testing. | 2713 | is useful for hands-off automated testing. |
2708 | 2714 | ||
2709 | rcutorture.stall_cpu= [KNL,BOOT] | 2715 | rcutorture.stall_cpu= [KNL] |
2710 | Duration of CPU stall (s) to test RCU CPU stall | 2716 | Duration of CPU stall (s) to test RCU CPU stall |
2711 | warnings, zero to disable. | 2717 | warnings, zero to disable. |
2712 | 2718 | ||
2713 | rcutorture.stall_cpu_holdoff= [KNL,BOOT] | 2719 | rcutorture.stall_cpu_holdoff= [KNL] |
2714 | Time to wait (s) after boot before inducing stall. | 2720 | Time to wait (s) after boot before inducing stall. |
2715 | 2721 | ||
2716 | rcutorture.stat_interval= [KNL,BOOT] | 2722 | rcutorture.stat_interval= [KNL] |
2717 | Time (s) between statistics printk()s. | 2723 | Time (s) between statistics printk()s. |
2718 | 2724 | ||
2719 | rcutorture.stutter= [KNL,BOOT] | 2725 | rcutorture.stutter= [KNL] |
2720 | Time (s) to stutter testing, for example, specifying | 2726 | Time (s) to stutter testing, for example, specifying |
2721 | five seconds causes the test to run for five seconds, | 2727 | five seconds causes the test to run for five seconds, |
2722 | wait for five seconds, and so on. This tests RCU's | 2728 | wait for five seconds, and so on. This tests RCU's |
2723 | ability to transition abruptly to and from idle. | 2729 | ability to transition abruptly to and from idle. |
2724 | 2730 | ||
2725 | rcutorture.test_boost= [KNL,BOOT] | 2731 | rcutorture.test_boost= [KNL] |
2726 | Test RCU priority boosting? 0=no, 1=maybe, 2=yes. | 2732 | Test RCU priority boosting? 0=no, 1=maybe, 2=yes. |
2727 | "Maybe" means test if the RCU implementation | 2733 | "Maybe" means test if the RCU implementation |
2728 | under test support RCU priority boosting. | 2734 | under test support RCU priority boosting. |
2729 | 2735 | ||
2730 | rcutorture.test_boost_duration= [KNL,BOOT] | 2736 | rcutorture.test_boost_duration= [KNL] |
2731 | Duration (s) of each individual boost test. | 2737 | Duration (s) of each individual boost test. |
2732 | 2738 | ||
2733 | rcutorture.test_boost_interval= [KNL,BOOT] | 2739 | rcutorture.test_boost_interval= [KNL] |
2734 | Interval (s) between each boost test. | 2740 | Interval (s) between each boost test. |
2735 | 2741 | ||
2736 | rcutorture.test_no_idle_hz= [KNL,BOOT] | 2742 | rcutorture.test_no_idle_hz= [KNL] |
2737 | Test RCU's dyntick-idle handling. See also the | 2743 | Test RCU's dyntick-idle handling. See also the |
2738 | rcutorture.shuffle_interval parameter. | 2744 | rcutorture.shuffle_interval parameter. |
2739 | 2745 | ||
2740 | rcutorture.torture_type= [KNL,BOOT] | 2746 | rcutorture.torture_type= [KNL] |
2741 | Specify the RCU implementation to test. | 2747 | Specify the RCU implementation to test. |
2742 | 2748 | ||
2743 | rcutorture.verbose= [KNL,BOOT] | 2749 | rcutorture.verbose= [KNL] |
2744 | Enable additional printk() statements. | 2750 | Enable additional printk() statements. |
2745 | 2751 | ||
2752 | rcupdate.rcu_expedited= [KNL] | ||
2753 | Use expedited grace-period primitives, for | ||
2754 | example, synchronize_rcu_expedited() instead | ||
2755 | of synchronize_rcu(). This reduces latency, | ||
2756 | but can increase CPU utilization, degrade | ||
2757 | real-time latency, and degrade energy efficiency. | ||
2758 | |||
2759 | rcupdate.rcu_cpu_stall_suppress= [KNL] | ||
2760 | Suppress RCU CPU stall warning messages. | ||
2761 | |||
2762 | rcupdate.rcu_cpu_stall_timeout= [KNL] | ||
2763 | Set timeout for RCU CPU stall warning messages. | ||
2764 | |||
2746 | rdinit= [KNL] | 2765 | rdinit= [KNL] |
2747 | Format: <full_path> | 2766 | Format: <full_path> |
2748 | Run specified binary instead of /init from the ramdisk, | 2767 | Run specified binary instead of /init from the ramdisk, |
diff --git a/Documentation/kernel-per-CPU-kthreads.txt b/Documentation/kernel-per-CPU-kthreads.txt index 32351bfabf20..827104fb9364 100644 --- a/Documentation/kernel-per-CPU-kthreads.txt +++ b/Documentation/kernel-per-CPU-kthreads.txt | |||
@@ -181,12 +181,17 @@ To reduce its OS jitter, do any of the following: | |||
181 | make sure that this is safe on your particular system. | 181 | make sure that this is safe on your particular system. |
182 | d. It is not possible to entirely get rid of OS jitter | 182 | d. It is not possible to entirely get rid of OS jitter |
183 | from vmstat_update() on CONFIG_SMP=y systems, but you | 183 | from vmstat_update() on CONFIG_SMP=y systems, but you |
184 | can decrease its frequency by writing a large value to | 184 | can decrease its frequency by writing a large value |
185 | /proc/sys/vm/stat_interval. The default value is HZ, | 185 | to /proc/sys/vm/stat_interval. The default value is |
186 | for an interval of one second. Of course, larger values | 186 | HZ, for an interval of one second. Of course, larger |
187 | will make your virtual-memory statistics update more | 187 | values will make your virtual-memory statistics update |
188 | slowly. Of course, you can also run your workload at | 188 | more slowly. Of course, you can also run your workload |
189 | a real-time priority, thus preempting vmstat_update(). | 189 | at a real-time priority, thus preempting vmstat_update(), |
190 | but if your workload is CPU-bound, this is a bad idea. | ||
191 | However, there is an RFC patch from Christoph Lameter | ||
192 | (based on an earlier one from Gilad Ben-Yossef) that | ||
193 | reduces or even eliminates vmstat overhead for some | ||
194 | workloads at https://lkml.org/lkml/2013/9/4/379. | ||
190 | e. If running on high-end powerpc servers, build with | 195 | e. If running on high-end powerpc servers, build with |
191 | CONFIG_PPC_RTAS_DAEMON=n. This prevents the RTAS | 196 | CONFIG_PPC_RTAS_DAEMON=n. This prevents the RTAS |
192 | daemon from running on each CPU every second or so. | 197 | daemon from running on each CPU every second or so. |