mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: Mike Galbraith <umgwanakikbuti@gmail.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 07:23:11 -0700	[thread overview]
Message-ID: <20140730142311.GJ11241@linux.vnet.ibm.com> (raw)
In-Reply-To: <1406726619.5889.17.camel@marge.simpson.net>

On Wed, Jul 30, 2014 at 03:23:39PM +0200, Mike Galbraith wrote:
> 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().

Thank you for running this!

So the delta accounting is much of the pain.  Hmmm...

							Thanx, Paul

> 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 14: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
2014-07-30 14:23             ` Paul E. McKenney [this message]
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=20140730142311.GJ11241@linux.vnet.ibm.com \
    --to=paulmck@linux.vnet.ibm.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=peterz@infradead.org \
    --cc=rostedt@goodmis.org \
    --cc=tglx@linutronix.de \
    --cc=umgwanakikbuti@gmail.com \
    /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