> > 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 ��.n������g����a����&ޖ)���)��h���&������梷�����Ǟ�m������)������^�����������v���O��zf������