1. 13 7月, 2018 4 次提交
  2. 26 6月, 2018 2 次提交
    • P
      torture: Keep old-school dmesg format · 60500037
      Paul E. McKenney 提交于
      This commit adds "#define pr_fmt(fmt) fmt" to the torture-test files
      in order to keep the current dmesg format.  Once Joe's commits have
      hit mainline, these definitions will be changed in order to automatically
      generate the dmesg line prefix that the scripts expect.  This will have
      the beneficial side-effect of allowing printk() formats to be used more
      widely and of shortening some pr_*() lines.
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      Cc: Joe Perches <joe@perches.com>
      60500037
    • P
      torture: Make online/offline messages appear only for verbose=2 · 90127d60
      Paul E. McKenney 提交于
      Some bugs reproduce quickly only at high CPU-hotplug rates, so the
      rcutorture TREE03 scenario now has only 200 milliseconds spacing between
      CPU-hotplug operations.  At this rate, the torture-test pair of console
      messages per operation becomes a bit voluminous.  This commit therefore
      converts the torture-test set of "verbose" kernel-boot arguments from
      bool to int, and prints the extra console messages only when verbose=2.
      The default is still verbose=1.
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      90127d60
  3. 16 5月, 2018 1 次提交
    • P
      rcu: Rename cond_resched_rcu_qs() to cond_resched_tasks_rcu_qs() · cee43939
      Paul E. McKenney 提交于
      Commit e31d28b6 ("trace: Eliminate cond_resched_rcu_qs() in favor
      of cond_resched()") substituted cond_resched() for the earlier call
      to cond_resched_rcu_qs().  However, the new-age cond_resched() does
      not do anything to help RCU-tasks grace periods because (1) RCU-tasks
      is only enabled when CONFIG_PREEMPT=y and (2) cond_resched() is a
      complete no-op when preemption is enabled.  This situation results
      in hangs when running the trace benchmarks.
      
      A number of potential fixes were discussed on LKML
      (https://lkml.kernel.org/r/20180224151240.0d63a059@vmware.local.home),
      including making cond_resched() not be a no-op; making cond_resched()
      not be a no-op, but only when running tracing benchmarks; reverting
      the aforementioned commit (which works because cond_resched_rcu_qs()
      does provide an RCU-tasks quiescent state; and adding a call to the
      scheduler/RCU rcu_note_voluntary_context_switch() function.  All were
      deemed unsatisfactory, either due to added cond_resched() overhead or
      due to magic functions inviting cargo culting.
      
      This commit renames cond_resched_rcu_qs() to cond_resched_tasks_rcu_qs(),
      which provides a clear hint as to what this function is doing and
      why and where it should be used, and then replaces the call to
      cond_resched() with cond_resched_tasks_rcu_qs() in the trace benchmark's
      benchmark_event_kthread() function.
      Reported-by: NSteven Rostedt <rostedt@goodmis.org>
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      Tested-by: NNicholas Piggin <npiggin@gmail.com>
      cee43939
  4. 21 2月, 2018 1 次提交
    • P
      torture: Provide more sensible nreader/nwriter defaults for rcuperf · 85ba6bfe
      Paul E. McKenney 提交于
      The default values for nreader and nwriter are apparently not all that
      user-friendly, resulting in people doing scalability tests that ran all
      runs at large scale.  This commit therefore makes both the nreaders and
      nwriters module default to the number of CPUs, and adds a comment to
      rcuperf.c stating that the number of CPUs should be specified using the
      nr_cpus kernel boot parameter.  This commit also eliminates the redundant
      rcuperf scripting specification of default values for these parameters.
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      85ba6bfe
  5. 12 12月, 2017 1 次提交
    • P
      torture: Eliminate torture_runnable and perf_runnable · a2f2577d
      Paul E. McKenney 提交于
      The purpose of torture_runnable is to allow rcutorture and locktorture
      to be started and stopped via sysfs when they are built into the kernel
      (as in not compiled as loadable modules).  However, the 0444 permissions
      for both instances of torture_runnable prevent this use case from ever
      being put into practice.  Given that there have been no complaints
      about this deficiency, it is reasonable to conclude that no one actually
      makes use of this sysfs capability.  The perf_runnable module parameter
      for rcuperf is in the same situation.
      
      This commit therefore removes both torture_runnable instances as well
      as perf_runnable.
      Reported-by: NThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      a2f2577d
  6. 25 7月, 2017 1 次提交
  7. 09 6月, 2017 1 次提交
  8. 08 6月, 2017 5 次提交
    • P
      rcuperf: Add writer_holdoff boot parameter · 820687a7
      Paul E. McKenney 提交于
      This commit adds a writer_holdoff boot parameter to rcuperf, which is
      intended to be used to test Tree SRCU's auto-expediting.  This
      boot parameter is in microseconds, and defaults to zero (that is,
      disabled).  Set it to a bit larger than srcutree.exp_holdoff,
      keeping the nanosecond/microsecond conversion, to force Tree SRCU
      to auto-expedite more aggressively.
      
      This commit also adds documentation for this parameter, and fixes some
      alphabetization while in the neighborhood.
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      820687a7
    • P
      rcuperf: Set more user-friendly defaults · 492b95e5
      Paul E. McKenney 提交于
      Common-case use of rcuperf must set rcuperf.nreaders=0 and if not built
      as a module, rcuperf.shutdown.  This commit therefore sets the default
      for rcuperf.nreaders to zero and sets the default for rcuperf.shutdown
      to zero if rcuperf is built as a module and to one otherwise.
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      492b95e5
    • P
      rcuperf: Add test for dynamically initialized srcu_struct · f60cb4d4
      Paul E. McKenney 提交于
      This commit adds a perf_type of "srcud", which species that rcuperf
      test SRCU on a dynamically initialized srcu_struct.
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      f60cb4d4
    • P
      rcuperf: Add ability to performance-test call_rcu() and friends · 881ed593
      Paul E. McKenney 提交于
      This commit upgrades rcuperf so that it can do performance testing on
      asynchronous grace-period primitives such as call_srcu().  There is
      a new rcuperf.gp_async module parameter that specifies this new behavior,
      with the pre-existing rcuperf.gp_exp testing expedited grace periods such as
      synchronize_rcu_expedited, and with the default being to test synchronous
      non-expedited grace periods such as synchronize_rcu().
      
      There is also a new rcuperf.gp_async_max module parameter that specifies
      the maximum number of outstanding callbacks per writer kthread, defaulting
      to 1,000.  When this limit is exceeded, the writer thread invokes the
      appropriate flavor of rcu_barrier() to wait for callbacks to drain.
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      [ paulmck: Removed the redundant initialization noted by Arnd Bergmann. ]
      881ed593
    • P
      rcuperf: Defer expedited/normal check to end of test · 9683937d
      Paul E. McKenney 提交于
      Current rcuperf startup checks to see if the user asked to measure
      only expedited grace periods, yet constrained all grace periods to be
      normal, or if the user asked to measure only normal grace periods, yet
      constrained all grace periods to be expedited.  Useless tests of this
      sort are aborted.
      
      Unfortunately, making RCU work through the mid-boot dead zone [1] puts
      RCU into expedited-only mode during that zone.  Which happens to also
      be the exact time that rcuperf carries out the aforementioned check.
      So if the user asks rcuperf to measure only normal grace periods (the
      default), rcuperf will now always complain and terminate the test.
      
      This commit therefore moves the checks to rcu_perf_cleanup().  This has
      the disadvantage of failing to abort useless tests, but avoids the need to
      create yet another kthread and the need to do fiddly checks involving the
      holdoff time.  (Yes, another approach is to do the checks in a late-stage
      init function, but that would require some way to communicate badness
      to rcuperf's kthreads, and seems not worth the bother.)
      
      [1] https://lwn.net/Articles/716148/Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      9683937d
  9. 02 3月, 2017 1 次提交
  10. 23 8月, 2016 1 次提交
  11. 15 6月, 2016 3 次提交
  12. 01 4月, 2016 7 次提交