[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <37D7C6CF3E00A74B8858931C1DB2F0775378761B@SHSMSX103.ccr.corp.intel.com>
Date: Thu, 17 Aug 2017 20:18:43 +0000
From: "Liang, Kan" <kan.liang@...el.com>
To: Linus Torvalds <torvalds@...ux-foundation.org>
CC: Tim Chen <tim.c.chen@...ux.intel.com>,
Peter Zijlstra <peterz@...radead.org>,
Ingo Molnar <mingo@...e.hu>, Andi Kleen <ak@...ux.intel.com>,
Andrew Morton <akpm@...ux-foundation.org>,
"Johannes Weiner" <hannes@...xchg.org>, Jan Kara <jack@...e.cz>,
linux-mm <linux-mm@...ck.org>,
Linux Kernel Mailing List <linux-kernel@...r.kernel.org>
Subject: RE: [PATCH 1/2] sched/wait: Break up long wake list walk
> > Here is the wake_up_page_bit call stack when the workaround is running,
> which
> > is collected by perf record -g -a -e probe:wake_up_page_bit -- sleep 10
>
> It's actually not really wake_up_page_bit() that is all that
> interesting, it would be more interesting to see which path it is that
> *adds* the entries.
>
> So it's mainly wait_on_page_bit_common(), but also
> add_page_wait_queue().
>
> Can you get that call stack instead (or in addition to)?
>
Here is the call stack of wait_on_page_bit_common
when the queue is long (entries >1000).
# Overhead Trace output
# ........ ..................
#
100.00% (ffffffff931aefca)
|
---wait_on_page_bit
__migration_entry_wait
migration_entry_wait
do_swap_page
__handle_mm_fault
handle_mm_fault
__do_page_fault
do_page_fault
page_fault
|
|--21.89%--0x123a2
| start_thread
|
|--21.64%--0x12352
| start_thread
|
|--20.90%--_int_free
| |
| --20.44%--0
|
|--7.34%--0x127a9
| start_thread
|
|--6.84%--0x127df
| start_thread
|
|--6.65%--0x12205
| 0x1206d
| 0x11f85
| 0x11a05
| 0x10302
| |
| --6.62%--0xa8ee
| |
| --5.22%--0x3af5
| __libc_start_main
|
|--5.40%--0x1284b
| start_thread
|
|--3.14%--0x12881
| start_thread
|
|--3.02%--0x12773
| start_thread
|
--2.97%--0x12815
start_thread
Thanks,
Kan
Powered by blists - more mailing lists