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
>
next prev parent 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