mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Mike Galbraith <umgwanakikbuti@gmail.com>
To: paulmck@linux.vnet.ibm.com
Cc: Peter Zijlstra <peterz@infradead.org>,
	linux-kernel@vger.kernel.org, mingo@kernel.org,
	laijs@cn.fujitsu.com, dipankar@in.ibm.com,
	akpm@linux-foundation.org, mathieu.desnoyers@efficios.com,
	josh@joshtriplett.org, tglx@linutronix.de, rostedt@goodmis.org,
	dhowells@redhat.com, edumazet@google.com, dvhart@linux.intel.com,
	fweisbec@gmail.com, oleg@redhat.com, bobby.prani@gmail.com
Subject: Re: [PATCH RFC tip/core/rcu 1/9] rcu: Add call_rcu_tasks()
Date: Wed, 30 Jul 2014 15:23:39 +0200	[thread overview]
Message-ID: <1406726619.5889.17.camel@marge.simpson.net> (raw)
In-Reply-To: <20140729180656.GY11241@linux.vnet.ibm.com>

On Tue, 2014-07-29 at 11:06 -0700, Paul E. McKenney wrote: 
> On Tue, Jul 29, 2014 at 07:33:32PM +0200, Peter Zijlstra wrote:

> > FWIW its _the_ thing that makes nohz_full uninteresting for me. The
> > required overhead is insane. But yes there are people willing to pay
> > that etc..
> 
> It would indeed be good to reduce the overhead.  I could imagine all sorts
> of insane approaches involving assuming that CPU write buffers flush in
> bounded time, though CPU vendors seem unwilling to make guarantees in
> this area.  ;-)
> 
> Or is something other than rcu_user_enter() and rcu_user_exit() causing
> the pain here?

Border guards stamping visas.  Note native_sched_clock().

echo 0 > sched_wakeup_granularity_ns
taskset -c 3 pipe-test 1

    CONFIG_NO_HZ_FULL=y 604.2 KHz           CONFIG_NO_HZ_FULL=y, nohz_full=3 303.5 KHz
    10.45%   __schedule                     8.74%   native_sched_clock
    10.03%   system_call                    5.63%   __schedule
     4.86%   _raw_spin_lock_irqsave         4.75%   _raw_spin_lock
     4.51%   __switch_to                    4.35%   reschedule_interrupt
     4.31%   copy_user_generic_string       3.91%   _raw_spin_unlock_irqrestore
     3.50%   pipe_read                      3.35%   system_call
     3.02%   pipe_write                     2.73%   context_tracking_user_exit
     2.76%   mutex_lock                     2.30%   _raw_spin_lock_irqsave
     2.30%   native_sched_clock             2.08%   context_tracking_user_enter
     2.27%   copy_page_to_iter_iovec        1.94%   __switch_to
     2.16%   mutex_unlock                   1.88%   copy_user_generic_string
     2.15%   _raw_spin_unlock_irqrestore    1.80%   account_system_time
     1.86%   copy_page_from_iter_iovec      1.77%   rcu_eqs_enter_common.isra.42
     1.85%   vfs_write                      1.60%   pipe_read
     1.67%   new_sync_read                  1.58%   pipe_write
     1.61%   new_sync_write                 1.39%   mutex_lock
     1.49%   vfs_read                       1.37%   enqueue_task_fair
     1.47%   fsnotify                       1.25%   rcu_eqs_exit_common.isra.43
     1.43%   __fget_light                   1.14%   get_vtime_delta
     1.36%   enqueue_task_fair              1.11%   flat_send_IPI_mask
     1.28%   finish_task_switch             1.07%   tracesys
     1.26%   dequeue_task_fair              1.03%   dequeue_task_fair
     1.25%   __sb_start_write               1.01%   copy_page_to_iter_iovec
     1.22%   _raw_spin_lock_irq             1.01%   int_check_syscall_exit_work
     1.20%   try_to_wake_up                 0.97%   vfs_write
     1.16%   update_curr                    0.94%   __context_tracking_task_switch
     1.05%   __fsnotify_parent              0.93%   mutex_unlock
     1.03%   pick_next_task_fair            0.88%   copy_page_from_iter_iovec
     1.02%   sys_write                      0.87%   new_sync_write
     1.01%   sys_read                       0.86%   __fget_light
     1.00%   __wake_up_sync_key             0.85%   __sb_start_write
     0.93%   __wake_up_common               0.85%   int_ret_from_sys_call
     0.92%   copy_page_to_iter              0.83%   syscall_trace_leave
     0.90%   check_preempt_wakeup           0.78%   new_sync_read
     0.90%   __srcu_read_lock               0.78%   account_user_time
     0.89%   put_prev_task_fair             0.76%   update_curr
     0.88%   copy_page_from_iter            0.74%   fsnotify
     0.82%   __sb_end_write                 0.73%   try_to_wake_up
     0.76%   __percpu_counter_add           0.71%   finish_task_switch
     0.74%   prepare_to_wait                0.70%   _raw_spin_lock_irq
     0.72%   touch_atime                    0.69%   __wake_up_sync_key
     0.71%   pipe_wait                      0.69%   __tick_nohz_task_switch

pinned endless stat("/", &buf)

    CONFIG_NO_HZ_FULL=y                     CONFIG_NO_HZ_FULL=y, nohz_full=3
    17.13%   system_call                    8.78%   system_call
    11.20%   kmem_cache_alloc               8.52%   native_sched_clock
     7.14%   lockref_get_not_dead           6.02%   context_tracking_user_exit
     7.10%   kmem_cache_free                4.53%   kmem_cache_alloc
     6.42%   path_init                      4.46%   _raw_spin_lock
     5.69%   copy_user_generic_string       4.13%   copy_user_generic_string
     5.25%   lockref_put_or_lock            4.01%   kmem_cache_free
     4.14%   strncpy_from_user              3.36%   context_tracking_user_enter
     3.99%   path_lookupat                  3.25%   lockref_get_not_dead
     3.12%   complete_walk                  3.25%   lockref_put_or_lock
     2.91%   getname_flags                  2.86%   rcu_eqs_enter_common.isra.42
     2.88%   cp_new_stat                    2.84%   path_init
     2.79%   vfs_fstatat                    2.56%   rcu_eqs_exit_common.isra.43
     2.59%   user_path_at_empty             2.52%   int_check_syscall_exit_work
     1.93%   link_path_walk                 2.51%   tracesys
     1.81%   generic_fillattr               2.08%   cp_new_stat
     1.75%   dput                           2.00%   syscall_trace_leave
     1.71%   filename_lookup.isra.50        1.75%   complete_walk
     1.66%   mntput                         1.69%   path_lookupat
     1.45%   vfs_getattr_nosec              1.58%   strncpy_from_user
     1.04%   final_putname                  1.56%   get_vtime_delta
     1.02%   SYSC_newstat                   1.34%   int_with_check

     CONFIG_NO_HZ_FULL=y, nohz_full=3
-    8.53%  [kernel]         [k] native_sched_clock                                                                                                                                                                                        ▒
   - native_sched_clock                                                                                                                                                                                                                    ▒
      - 96.76% local_clock                                                                                                                                                                                                                 ▒
         - get_vtime_delta                                                                                                                                                                                                                 ▒
            - 51.95% vtime_account_user                                                                                                                                                                                                    ▒
                 99.96% context_tracking_user_exit                                                                                                                                                                                         ▒
                    syscall_trace_enter                                                                                                                                                                                                    ▒
                    tracesys                                                                                                                                                                                                               ▒
                    __xstat64                                                                                                                                                                                                              ▒
                    __libc_start_main                                                                                                                                                                                                      ▒
            - 48.05% __vtime_account_system                                                                                                                                                                                                ▒
                 99.96% vtime_user_enter                                                                                                                                                                                                   ▒
                    context_tracking_user_enter                                                                                                                                                                                            ▒
                    syscall_trace_leave                                                                                                                                                                                                    ◆
                    int_check_syscall_exit_work                                                                                                                                                                                            ▒
                    __xstat64                                                                                                                                                                                                              ▒
                    __libc_start_main                                                                                                                                                                                                      ▒
      - 3.23% get_vtime_delta                                                                                                                                                                                                              ▒
           52.96% vtime_account_user                                                                                                                                                                                                       ▒
              context_tracking_user_exit                                                                                                                                                                                                   ▒
              syscall_trace_enter                                                                                                                                                                                                          ▒
              tracesys                                                                                                                                                                                                                     ▒
              __xstat64                                                                                                                                                                                                                    ▒
              __libc_start_main                                                                                                                                                                                                            ▒
           47.04% __vtime_account_system                                                                                                                                                                                                   ▒
              vtime_user_enter                                                                                                                                                                                                             ▒
              context_tracking_user_enter                                                                                                                                                                                                  ▒
              syscall_trace_leave                                                                                                                                                                                                          ▒
              int_check_syscall_exit_work                                                                                                                                                                                                  ▒
              __xstat64                                                                                                                                                                                                                    ▒
              __libc_start_main


  reply	other threads:[~2014-07-30 13:23 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-28 22:55 [PATCH tip/core/rcu 0/9] RCU-tasks implementation Paul E. McKenney
2014-07-28 22:56 ` [PATCH RFC tip/core/rcu 1/9] rcu: Add call_rcu_tasks() Paul E. McKenney
2014-07-28 22:56   ` [PATCH RFC tip/core/rcu 2/9] rcu: Provide cond_resched_rcu_qs() to force quiescent states in long loops Paul E. McKenney
2014-07-29  7:55     ` Peter Zijlstra
2014-07-29 16:22       ` Paul E. McKenney
2014-07-29 17:25         ` Peter Zijlstra
2014-07-29 17:33           ` Paul E. McKenney
2014-07-29 17:36             ` Peter Zijlstra
2014-07-29 17:37               ` Peter Zijlstra
2014-07-29 17:55                 ` Paul E. McKenney
2014-07-28 22:56   ` [PATCH RFC tip/core/rcu 3/9] rcu: Add synchronous grace-period waiting for RCU-tasks Paul E. McKenney
2014-07-28 22:56   ` [PATCH RFC tip/core/rcu 4/9] rcu: Export RCU-tasks APIs to GPL modules Paul E. McKenney
2014-07-28 22:56   ` [PATCH RFC tip/core/rcu 5/9] rcutorture: Add torture tests for RCU-tasks Paul E. McKenney
2014-07-28 22:56   ` [PATCH RFC tip/core/rcu 6/9] rcutorture: Add RCU-tasks test cases Paul E. McKenney
2014-07-28 22:56   ` [PATCH RFC tip/core/rcu 7/9] rcu: Add stall-warning checks for RCU-tasks Paul E. McKenney
2014-07-28 22:56   ` [PATCH RFC tip/core/rcu 8/9] rcu: Make RCU-tasks track exiting tasks Paul E. McKenney
2014-07-30 17:04     ` Oleg Nesterov
2014-07-30 18:24       ` Paul E. McKenney
2014-07-28 22:56   ` [PATCH RFC tip/core/rcu 9/9] rcu: Improve RCU-tasks energy efficiency Paul E. McKenney
2014-07-29  7:50   ` [PATCH RFC tip/core/rcu 1/9] rcu: Add call_rcu_tasks() Peter Zijlstra
2014-07-29 15:57     ` Paul E. McKenney
2014-07-29 16:07       ` Peter Zijlstra
2014-07-29 16:33         ` Paul E. McKenney
2014-07-29 17:31           ` Peter Zijlstra
2014-07-29 18:19             ` Paul E. McKenney
2014-07-29 19:25               ` Peter Zijlstra
2014-07-29 20:11                 ` Paul E. McKenney
2014-07-29  8:12   ` Peter Zijlstra
2014-07-29 16:36     ` Paul E. McKenney
2014-07-29  8:12   ` Peter Zijlstra
2014-07-29  8:14   ` Peter Zijlstra
2014-07-29 17:23     ` Paul E. McKenney
2014-07-29 17:33       ` Peter Zijlstra
2014-07-29 18:06         ` Paul E. McKenney
2014-07-30 13:23           ` Mike Galbraith [this message]
2014-07-30 14:23             ` Paul E. McKenney
2014-07-31  7:37               ` Mike Galbraith
2014-07-31 16:38                 ` Paul E. McKenney
2014-08-01  2:59                   ` Mike Galbraith
2014-08-01 15:16                     ` Paul E. McKenney
2014-07-30  6:52   ` Lai Jiangshan
2014-07-30 15:07     ` Paul E. McKenney
2014-07-30 13:41   ` Frederic Weisbecker
2014-07-30 16:10     ` Paul E. McKenney
2014-07-30 15:49   ` Oleg Nesterov
2014-07-30 16:08     ` Paul E. McKenney

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1406726619.5889.17.camel@marge.simpson.net \
    --to=umgwanakikbuti@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=bobby.prani@gmail.com \
    --cc=dhowells@redhat.com \
    --cc=dipankar@in.ibm.com \
    --cc=dvhart@linux.intel.com \
    --cc=edumazet@google.com \
    --cc=fweisbec@gmail.com \
    --cc=josh@joshtriplett.org \
    --cc=laijs@cn.fujitsu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mathieu.desnoyers@efficios.com \
    --cc=mingo@kernel.org \
    --cc=oleg@redhat.com \
    --cc=paulmck@linux.vnet.ibm.com \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.org \
    --cc=tglx@linutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome