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 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 904FBC197A0 for ; Mon, 20 Nov 2023 06:07:08 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D3C5C6B03AD; Mon, 20 Nov 2023 01:07:07 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id CEBCA6B03B8; Mon, 20 Nov 2023 01:07:07 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BDA526B03BA; Mon, 20 Nov 2023 01:07:07 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id AE21D6B03AD for ; Mon, 20 Nov 2023 01:07:07 -0500 (EST) Received: from smtpin03.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 87902A0242 for ; Mon, 20 Nov 2023 06:07:07 +0000 (UTC) X-FDA: 81477299694.03.9AFED42 Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.93]) by imf26.hostedemail.com (Postfix) with ESMTP id 4BED0140005 for ; Mon, 20 Nov 2023 06:07:04 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b="AwgnR/Yn"; dmarc=pass (policy=none) header.from=intel.com; spf=pass (imf26.hostedemail.com: domain of ying.huang@intel.com designates 192.55.52.93 as permitted sender) smtp.mailfrom=ying.huang@intel.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1700460425; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=JQjFiuQRjpWrlqlxeXK+B1lzyvUuqZmhFQYGt9rUMiA=; b=Giu2HIdSFjQX+F81worPdRFniJC14hw7Yy5vKq1Yt255yuGMA2ibr5LuMu/w4ycM6zvSIB X7uy5FRiE/sV+lW4XB29H8u/RWAcULkmY7Q40DKkNyor92xQ17CL3Fnz37Pa4bwgnogpOX SwklFIPdyJ6bAG6W9hgS8vrYjRUURw8= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b="AwgnR/Yn"; dmarc=pass (policy=none) header.from=intel.com; spf=pass (imf26.hostedemail.com: domain of ying.huang@intel.com designates 192.55.52.93 as permitted sender) smtp.mailfrom=ying.huang@intel.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1700460425; a=rsa-sha256; cv=none; b=UcpPKwCnNbboLrYydysKaiVYaWILclEcZPYPlNHfk5R6DTBSgPvwi/acS8aByx0J0fC+eX W4bWvoMZ2Gq+80iZGd2Ksmk2yu2htn5UpLESbnAROupWW8jexlE6VYcAiQ9TTdihchgzuS m79i83KlulIbBcV975gOGgCP6+Iec+I= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1700460424; x=1731996424; h=from:to:cc:subject:in-reply-to:references:date: message-id:mime-version; bh=ygHbZcM/uvNSieczXuv006I3lAT+cdiJVfm8O+cxdW0=; b=AwgnR/YnYNRMOmZZ1eEORWAtmsWj14F86OyiZLMjQXgfqCJotM7eRS5u NkNYXj+Qxa4wiZR7Xg16xUwExayxWaNAG1brK470vSsTZNOM6RnZq0sJk LYYculYb3D6vuQWclkhgpEKVCnRUyeH7gGHQQuVePeiKqPkHypdDpSieh 6YUAT7hsP8wIfqDXaeVCcBoLEBIf8K095oEr/2i9WjYItKo096ZsOFPfd 5xkhNpXVtWTNoCrRU1GXBIb+Bz4kc21JCIChUphf/5E3PUo2fB7C0Jv2g 5WTs9ro/p8VUZ6D4TJRWfrHSIGTsOjExDF5VVJKt6c+UmrvoHPH2VmjoM A==; X-IronPort-AV: E=McAfee;i="6600,9927,10899"; a="388699210" X-IronPort-AV: E=Sophos;i="6.04,212,1695711600"; d="scan'208";a="388699210" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 Nov 2023 22:07:02 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10899"; a="769787260" X-IronPort-AV: E=Sophos;i="6.04,212,1695711600"; d="scan'208";a="769787260" Received: from yhuang6-desk2.sh.intel.com (HELO yhuang6-desk2.ccr.corp.intel.com) ([10.238.208.55]) by fmsmga007-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 Nov 2023 22:06:59 -0800 From: "Huang, Ying" To: Kairui Song Cc: linux-mm@kvack.org, Kairui Song , Andrew Morton , David Hildenbrand , Hugh Dickins , Johannes Weiner , Matthew Wilcox , Michal Hocko , linux-kernel@vger.kernel.org Subject: Re: [PATCH 08/24] mm/swap: check readahead policy per entry In-Reply-To: <20231119194740.94101-9-ryncsn@gmail.com> (Kairui Song's message of "Mon, 20 Nov 2023 03:47:24 +0800") References: <20231119194740.94101-1-ryncsn@gmail.com> <20231119194740.94101-9-ryncsn@gmail.com> Date: Mon, 20 Nov 2023 14:04:58 +0800 Message-ID: <87r0klarjp.fsf@yhuang6-desk2.ccr.corp.intel.com> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=ascii X-Rspamd-Queue-Id: 4BED0140005 X-Rspam-User: X-Rspamd-Server: rspam04 X-Stat-Signature: 4z43fhcs968tibomzmgyda9gz8zoptzd X-HE-Tag: 1700460424-831657 X-HE-Meta: U2FsdGVkX19d5TSvDurxwF3xZzj+QGGWbNUGskvqd+poSGPF9ECfjMdinu2AwnIPbuwKcTYDoqcBuzrw1jWCyQ/jxXP0cO4opp52TYqxgzCMI6wPbexsxq6J9t/3qEcrcePRyiMde956FXCuT11HpTvizVQukvdKKr+3mUutUashSh32/fnN7EUuO3VMdVvuwd0WY0BMV8bj6jZhgzp2s3qAiBXJq4I3ZJOWnwvwUoC/5kD31x94eb6eKzGZmPtcpDAvCZyZu1YH745Vq+L0OxZpNlhyWp/HsYh5AlI6zfO3sKIUPx1SZnebht08q8tt/GYpdzbcFXYVzqQC0qlpsWS8YfQJI4QTDWOt5K9mvDcMYMWSaTcOkXMe6OZ3dDU1KcCPiPLhfUfObZudAGyV6cc06+9pbSg2tb9LoX7kqDJqCRxrtpfVNRJH2eykK7u/oVmRfoYKR+qKr0VBHvAP1aB/jvGG8UfZBj1lKShnb1vUjcI6grzPEJBQppXRPtE3bKU/BL00hMjGRFz9mMRoj7kUULZQ9zqAkzT8FSO6ChZKwyErYSVm9TbGvyHovzc5iwxXXHviQgjJCbWT27mputMxHoQqmckdZmr8ejY+a51ejUcFsjblDsct4n94ym/n44HETay5hPSJTrBn4ym/G9vhJtERSc8ZOmxKOx5fPNRDB7T3JQOc3BMux0qIzCm7xSAQtQSQqxRWlWnuf+JY7XZ0KqNJXjz5YBAEfeV2aSdY9myzD2GBKIb8ZussSfQFhQhVlypDVkHM5h9R8yvSbv/F9FJypJuozR7bRy9UQkQIBpkIKCNoIGIRi5o1GUqpezyPPboSQ/AsL5w3twswz/Rh/tcPiGDy7FgdLljzWAJj7HMCYlI/M1yXazqX033uBxkPHlivWzAu0ZOoWCdbvoYhSlS/I3RicDKvj1059WsdWhL8QUvMZvgkPrKvmFlHjWlxUgfZpj/mo5sRsGG l6fmkzbY 2uNQAMxadHOIu+tunXXinncoMB9NBl0XeKAB+Gyk7YI41kTmqH2wZ418FSnFcfCtgexKHGyhNM/j4x1RnopyoU0dtYmPagDZUNZQqMQm8F94rMDICkxY9+AyjbOHdUsVKHL97SNy12nwwVbb1kGAdpsUrXkiLSt+Jo8aPpm7IKgsTwbQN2w7u2CciihQahv2h9FlCVfJ5oD3ds6u7Eg3s6IBTXqtIjWv39grm4lhoLDAGJ0xt9QmwRK9mB8buyDCF0hqW 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: List-Subscribe: List-Unsubscribe: Kairui Song writes: > From: Kairui Song > > Currently VMA readahead is globally disabled when any rotate disk is > used as swap backend. So multiple swap devices are enabled, if a slower > hard disk is set as a low priority fallback, and a high performance SSD > is used and high priority swap device, vma readahead is disabled globally. > The SSD swap device performance will drop by a lot. > > Check readahead policy per entry to avoid such problem. > > Signed-off-by: Kairui Song > --- > mm/swap_state.c | 12 +++++++----- > 1 file changed, 7 insertions(+), 5 deletions(-) > > diff --git a/mm/swap_state.c b/mm/swap_state.c > index ff6756f2e8e4..fb78f7f18ed7 100644 > --- a/mm/swap_state.c > +++ b/mm/swap_state.c > @@ -321,9 +321,9 @@ static inline bool swap_use_no_readahead(struct swap_info_struct *si, swp_entry_ > return data_race(si->flags & SWP_SYNCHRONOUS_IO) && __swap_count(entry) == 1; > } > > -static inline bool swap_use_vma_readahead(void) > +static inline bool swap_use_vma_readahead(struct swap_info_struct *si) > { > - return READ_ONCE(enable_vma_readahead) && !atomic_read(&nr_rotate_swap); > + return data_race(si->flags & SWP_SOLIDSTATE) && READ_ONCE(enable_vma_readahead); > } > > /* > @@ -341,7 +341,7 @@ struct folio *swap_cache_get_folio(swp_entry_t entry, > > folio = filemap_get_folio(swap_address_space(entry), swp_offset(entry)); > if (!IS_ERR(folio)) { > - bool vma_ra = swap_use_vma_readahead(); > + bool vma_ra = swap_use_vma_readahead(swp_swap_info(entry)); > bool readahead; > > /* > @@ -920,16 +920,18 @@ static struct page *swapin_no_readahead(swp_entry_t entry, gfp_t gfp_mask, > struct page *swapin_readahead(swp_entry_t entry, gfp_t gfp_mask, > struct vm_fault *vmf, bool *swapcached) > { > + struct swap_info_struct *si; > struct mempolicy *mpol; > struct page *page; > pgoff_t ilx; > bool cached; > > + si = swp_swap_info(entry); > mpol = get_vma_policy(vmf->vma, vmf->address, 0, &ilx); > - if (swap_use_no_readahead(swp_swap_info(entry), entry)) { > + if (swap_use_no_readahead(si, entry)) { > page = swapin_no_readahead(entry, gfp_mask, mpol, ilx, vmf->vma->vm_mm); > cached = false; > - } else if (swap_use_vma_readahead()) { > + } else if (swap_use_vma_readahead(si)) { It's possible that some pages are swapped out to SSD while others are swapped out to HDD in a readahead window. I suspect that there are practical requirements to use swap on SSD and HDD at the same time. > page = swap_vma_readahead(entry, gfp_mask, mpol, ilx, vmf); > cached = true; > } else { -- Best Regards, Huang, Ying