Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753580AbdHQUSs (ORCPT ); Thu, 17 Aug 2017 16:18:48 -0400 Received: from mga04.intel.com ([192.55.52.120]:6426 "EHLO mga04.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753326AbdHQUSr (ORCPT ); Thu, 17 Aug 2017 16:18:47 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.41,389,1498546800"; d="scan'208";a="301545724" From: "Liang, Kan" To: Linus Torvalds CC: Tim Chen , Peter Zijlstra , Ingo Molnar , Andi Kleen , Andrew Morton , "Johannes Weiner" , Jan Kara , linux-mm , Linux Kernel Mailing List Subject: RE: [PATCH 1/2] sched/wait: Break up long wake list walk Thread-Topic: [PATCH 1/2] sched/wait: Break up long wake list walk Thread-Index: AQHTFWNBYSKZKyu5OE6Y+fM96SxNwqKEIDEAgASaOPD//398AIAAsKCA Date: Thu, 17 Aug 2017 20:18:43 +0000 Message-ID: <37D7C6CF3E00A74B8858931C1DB2F0775378761B@SHSMSX103.ccr.corp.intel.com> References: <84c7f26182b7f4723c0fe3b34ba912a9de92b8b7.1502758114.git.tim.c.chen@linux.intel.com> <37D7C6CF3E00A74B8858931C1DB2F07753786CE9@SHSMSX103.ccr.corp.intel.com> In-Reply-To: Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiZjU2YTg2ZDYtOTllMC00OWQ5LWEyZWEtOTllNzc3YTI5ZjRkIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX0lDIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE2LjUuOS4zIiwiVHJ1c3RlZExhYmVsSGFzaCI6InNxQ1ZXSEQwdXQyK0xnXC9kdjBBNTVXYWlsVWJiclUwR1lwTkRzK1B6NG1zPSJ9 x-ctpclassification: CTP_IC dlp-product: dlpe-windows dlp-version: 10.0.102.7 dlp-reaction: no-action x-originating-ip: [10.239.127.40] Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from base64 to 8bit by nfs id v7HKIscI001935 Content-Length: 2347 Lines: 75 > > 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