From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-3.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 01E8DC2BA19 for ; Mon, 13 Apr 2020 13:01:00 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id C34222072C for ; Mon, 13 Apr 2020 13:00:59 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C34222072C Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 716258E0111; Mon, 13 Apr 2020 09:00:59 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 6C6248E0104; Mon, 13 Apr 2020 09:00:59 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 5DBAC8E0111; Mon, 13 Apr 2020 09:00:59 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0251.hostedemail.com [216.40.44.251]) by kanga.kvack.org (Postfix) with ESMTP id 43B618E0104 for ; Mon, 13 Apr 2020 09:00:59 -0400 (EDT) Received: from smtpin30.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay01.hostedemail.com (Postfix) with ESMTP id 0AE9C180AD80F for ; Mon, 13 Apr 2020 13:00:59 +0000 (UTC) X-FDA: 76702841838.30.hat36_7ced8a8d60a60 X-HE-Tag: hat36_7ced8a8d60a60 X-Filterd-Recvd-Size: 2848 Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by imf37.hostedemail.com (Postfix) with ESMTP for ; Mon, 13 Apr 2020 13:00:58 +0000 (UTC) IronPort-SDR: y9JF7pn9gbpWpJl/PzZ3eDrEdYvdsa+BcPpTPB4G4tg5+LekldT8mXiuOQBXAFQDIQUkTNZz8b 4EeYS/LddYaw== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Apr 2020 06:00:56 -0700 IronPort-SDR: VIcIbSHG1U1ojTmjU3Gns1TngHKd+Zk0VvGgpSvkGn3lxcOsCA0rU12GeAo6KBY0vFeGJwlHhI opTS5Yg1g8/w== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.72,378,1580803200"; d="scan'208";a="276896082" Received: from yhuang-dev.sh.intel.com (HELO yhuang-dev) ([10.239.159.23]) by fmsmga004.fm.intel.com with ESMTP; 13 Apr 2020 06:00:55 -0700 From: "Huang\, Ying" To: Andrea Righi Cc: Andrew Morton , Minchan Kim , Anchal Agarwal , , Subject: Re: [PATCH v2] mm: swap: use fixed-size readahead during swapoff References: <20200413111810.GA801367@xps-13> Date: Mon, 13 Apr 2020 21:00:34 +0800 In-Reply-To: <20200413111810.GA801367@xps-13> (Andrea Righi's message of "Mon, 13 Apr 2020 13:18:10 +0200") Message-ID: <87a73f7d71.fsf@yhuang-dev.intel.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=ascii X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: Andrea Righi writes: [snip] > diff --git a/mm/swap_state.c b/mm/swap_state.c > index ebed37bbf7a3..c71abc8df304 100644 > --- a/mm/swap_state.c > +++ b/mm/swap_state.c > @@ -20,6 +20,7 @@ > #include > #include > #include > +#include > #include > > #include > @@ -507,6 +508,14 @@ static unsigned long swapin_nr_pages(unsigned long offset) > max_pages = 1 << READ_ONCE(page_cluster); > if (max_pages <= 1) > return 1; > + /* > + * If current task is using too much memory or swapoff is running > + * simply use the max readahead size. Since we likely want to load a > + * lot of pages back into memory, using a fixed-size max readhaead can > + * give better performance in this case. > + */ > + if (oom_task_origin(current)) > + return max_pages; > > hits = atomic_xchg(&swapin_readahead_hits, 0); > pages = __swapin_nr_pages(prev_offset, offset, hits, max_pages, Thinks this again. If my understanding were correct, the accessing pattern during swapoff is sequential, why swap readahead doesn't work? If so, can you root cause that firstly? Best Regards, Huang, Ying