RE: [PATCH 1/2] sched/wait: Break up long wake list walk

From: Liang, Kan
Date: Thu Aug 17 2017 - 16:18:52 EST




> > 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