From patchwork Tue May 21 11:03:10 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Baolin Wang X-Patchwork-Id: 13669300 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 D29EFC25B74 for ; Tue, 21 May 2024 11:03:38 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 3E7236B0085; Tue, 21 May 2024 07:03:38 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 371A16B0093; Tue, 21 May 2024 07:03:38 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 211C76B0095; Tue, 21 May 2024 07:03:38 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id F24366B0085 for ; Tue, 21 May 2024 07:03:37 -0400 (EDT) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 80D49121188 for ; Tue, 21 May 2024 11:03:37 +0000 (UTC) X-FDA: 82142117274.10.E00CBA7 Received: from out30-98.freemail.mail.aliyun.com (out30-98.freemail.mail.aliyun.com [115.124.30.98]) by imf10.hostedemail.com (Postfix) with ESMTP id 3FD1EC0023 for ; Tue, 21 May 2024 11:03:33 +0000 (UTC) Authentication-Results: imf10.hostedemail.com; dkim=pass header.d=linux.alibaba.com header.s=default header.b=ccLVRyup; spf=pass (imf10.hostedemail.com: domain of baolin.wang@linux.alibaba.com designates 115.124.30.98 as permitted sender) smtp.mailfrom=baolin.wang@linux.alibaba.com; dmarc=pass (policy=none) header.from=linux.alibaba.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1716289415; 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-transfer-encoding:content-transfer-encoding: in-reply-to:references:dkim-signature; bh=5PqxFNloiLvIbMcW2Zx5xktZCjoV+unTt+9oQbRXBcI=; b=FXbbTON89mY317kAiq1xkgglto6me5iE1tgXYYbIcZMBkRYVG/hOywZr6F7GnZQ6C/VtsS hXW9offXMrNZqR1WG6TIaXWFI4hfWB3qD4w4VfLolKGDtqv53IopqoRg/6jS4sh2J9621g E2I1yIKMshkSCdHS3DpkYiLju9LTIp0= ARC-Authentication-Results: i=1; imf10.hostedemail.com; dkim=pass header.d=linux.alibaba.com header.s=default header.b=ccLVRyup; spf=pass (imf10.hostedemail.com: domain of baolin.wang@linux.alibaba.com designates 115.124.30.98 as permitted sender) smtp.mailfrom=baolin.wang@linux.alibaba.com; dmarc=pass (policy=none) header.from=linux.alibaba.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1716289415; a=rsa-sha256; cv=none; b=DCdFP4D6Wd8J+zD75MRQ9OijZavYZZrBhratA2J70l2vYKLwkqlkJRkMT0AMw9FNmHxN82 odgGdFFPQcsGXCrWrJdZu2rL2vpa6Lx7nLgPjkzjMel3acx+/44ESPRnI9ZrCnjoRkW7F1 /Jq7zawx+xzn6+ioqkhIa4i578bPa80= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1716289411; h=From:To:Subject:Date:Message-Id:MIME-Version; bh=5PqxFNloiLvIbMcW2Zx5xktZCjoV+unTt+9oQbRXBcI=; b=ccLVRyupPRj6HztIj37Zis5ANz7vw/de3KxbXtdARNX4wikLlzvu0dpicYuQR21hfDjzsldxTwEtRPJ/8mYHMyp0wyFWNDAlVbQAhR4GRFtACq8FRtbxlYB1qN7vE+Niyvsse7QPjpG5B1R7vDfEjXQMYsvN1s8Domc1arENykU= X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R101e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=maildocker-contentspam033037067110;MF=baolin.wang@linux.alibaba.com;NM=1;PH=DS;RN=17;SR=0;TI=SMTPD_---0W6xl93X_1716289408; Received: from localhost(mailfrom:baolin.wang@linux.alibaba.com fp:SMTPD_---0W6xl93X_1716289408) by smtp.aliyun-inc.com; Tue, 21 May 2024 19:03:29 +0800 From: Baolin Wang To: akpm@linux-foundation.org, hughd@google.com Cc: willy@infradead.org, david@redhat.com, ioworker0@gmail.com, hrisl@kernel.org, p.raghav@samsung.com, da.gomez@samsung.com, wangkefeng.wang@huawei.com, ying.huang@intel.com, 21cnbao@gmail.com, ryan.roberts@arm.com, shy828301@gmail.com, ziy@nvidia.com, baolin.wang@linux.alibaba.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [RFC PATCH 0/8] support large folio swap-out and swap-in for shmem Date: Tue, 21 May 2024 19:03:10 +0800 Message-Id: X-Mailer: git-send-email 2.39.3 MIME-Version: 1.0 X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: 3FD1EC0023 X-Stat-Signature: tbzcja15bxswkzyjbso6rrg98xigg3d9 X-Rspam-User: X-HE-Tag: 1716289413-778559 X-HE-Meta: U2FsdGVkX1/yPeLdeZuCPsypu+bxMdbfsv9lP5/1mSIqvpFT8zszIX6l40dkkG9acGci1z7yqyEsnUoe3JGySkpTWyNQE5fJKDFKlItPQYzoHAkXyJ2hFcuUUk3Bo14GlDVDcscNA9XLEqeL3rrHrR3N0mnkh0b6L5ui6hWbTISPRgBfa79dUL79AO4wWmtNZ65Zjhj5ZYxhXoZAUa4hLwfnjnE1a6+86UNEWqaQ7ul1CZqTDbVrzaS1Hg3ZtEPiDCUDvqGfbpZUGeZ8sURmrFw0ewoZKhjiAl9z76Z+CD112NsyflUf4df42+IgytCjQX8bcfiUI0LF+AuicMTghpvavZMJIsDXzyMVNj/vrmc/l6HcFcydylmAvClUOvR5FBBOV9NThS0A5l4EqF2ewjGLfavKXy4/qHQHIVGrpUKRxV9P89F5Zz1gGNYDQflG+7ehcFOWW05CMRp0NZHNyvh6w/6Eeh1cFzIMajgq6L+0W8XznJQ5iRJUy3VOtkLRSyAqWDXp3dIbkveW+LhuQ7jDXu92y5Y/TAZEF6L6/ae38USdvfjcfGSOFekQHeip8riVl2LAXbcWBJz9GYiVSqtgTpAgUla+e8PE5URvyYosbV+qa1i3ARuj9nUA5S+pr3R77h1Aj9CTFeWcw9qV7fks+qd3wTkMGhAN9rCAzYu8ULe7VZ/W/6j4Jklk6Y0cHt292eFR1P/tGNDf532TxU0n5mB0Xzdxy8hxtgIjsjugdHOJ5S5ERg0pkNvDM07oDQX5ERyqfvk2io0xYANIkkgRkk7uJA/HqeU32oXalhldDeM5uGqQdlERk6YznhOENfD4cSWN5IqQiJ/4N8JUNF9r1iBbmRjcqNGGy4bxl5OD0c8NjVnwCX6aGxRNmkdsFb0TSPcl5VsHOD2ibxNkuAKxYzI9k0eMvftL1qXw+nAbOBXLVEyUsQtA+vWF3IiQNGQHatgKmJr3PNDyKbD AhSARUHn zWTPnu4EP7bdG6+O4HIVYAJrUeK7nU37yYKdqbvxQizKlflUMaffwjVyCb3SbUGfrrI16y5RaoCJB5vPVPkyVMbgQzhCA7Gd6szLAwkNrqevc7sOaWoDfMWHDXtV6I4bwLemXk+m2KKk/wOKYnNNInVj6eUzvQ9dBKZVUOVAnhMRf4rB1KmqRXE7qq4YOQUu/3fez5xtEGxDDUFDlUpk1n8i0T/5aITU1ClgmoJ34j4Ng68szzkd62xmg2zrQt/ZbtGCUsVRo4BlQebdgzVPe8spohPBtvL1sPi5a68yQoKkTNVdWutbRi+5mqkPTRez62U1hIrWANfoBGIXHjCRSbkR6vw== 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: Shmem will support large folio allocation [1] [2] to get a better performance, however, the memory reclaim still splits the precious large folios when trying to swap-out shmem, which may lead to the memory fragmentation issue and can not take advantage of the large folio for shmeme. Moreover, the swap code already supports for swapping out large folio without split, and large folio swap-in[3] is under reviewing. Hence this patch set also supports the large folio swap-out and swap-in for shmem. Note: this patch set is currently just to show some thoughts and gather some suggestionsis, and it is based on Barry's large folio swap-in patch set [3] and my anon shmem mTHP patch set [1]. [1] https://lore.kernel.org/all/cover.1715571279.git.baolin.wang@linux.alibaba.com/ [2] https://lore.kernel.org/all/20240515055719.32577-1-da.gomez@samsung.com/ [3] https://lore.kernel.org/all/20240508224040.190469-6-21cnbao@gmail.com/T/ Baolin Wang (8): mm: fix shmem swapout statistic mm: vmscan: add validation before spliting shmem large folio mm: swap: extend swap_shmem_alloc() to support batch SWAP_MAP_SHMEM flag setting mm: shmem: support large folio allocation for shmem_replace_folio() mm: shmem: extend shmem_partial_swap_usage() to support large folio swap mm: add new 'orders' parameter for find_get_entries() and find_lock_entries() mm: shmem: use swap_free_nr() to free shmem swap entries mm: shmem: support large folio swap out drivers/gpu/drm/i915/gem/i915_gem_shmem.c | 1 + include/linux/swap.h | 4 +- include/linux/writeback.h | 1 + mm/filemap.c | 27 ++++++- mm/internal.h | 4 +- mm/page_io.c | 4 +- mm/shmem.c | 59 ++++++++------ mm/swapfile.c | 98 ++++++++++++----------- mm/truncate.c | 8 +- mm/vmscan.c | 22 ++++- 10 files changed, 143 insertions(+), 85 deletions(-)