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 A1737E95A82 for ; Sun, 8 Oct 2023 09:59:45 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C8DE66B0287; Sun, 8 Oct 2023 05:59:44 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C160B6B0289; Sun, 8 Oct 2023 05:59:44 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A8FD06B028C; Sun, 8 Oct 2023 05:59:44 -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 949096B0287 for ; Sun, 8 Oct 2023 05:59:44 -0400 (EDT) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 623561A017F for ; Sun, 8 Oct 2023 09:59:44 +0000 (UTC) X-FDA: 81321847488.10.CE142E6 Received: from mail-pf1-f177.google.com (mail-pf1-f177.google.com [209.85.210.177]) by imf12.hostedemail.com (Postfix) with ESMTP id 95E7340005 for ; Sun, 8 Oct 2023 09:59:42 +0000 (UTC) Authentication-Results: imf12.hostedemail.com; dkim=pass header.d=transsion-corp-partner-google-com.20230601.gappssmtp.com header.s=20230601 header.b="cL9/svXT"; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf12.hostedemail.com: domain of lincheng.yang@transsion.corp-partner.google.com designates 209.85.210.177 as permitted sender) smtp.mailfrom=lincheng.yang@transsion.corp-partner.google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1696759182; 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=XrAvSbwr4PKpLCcR91dzcYyXIYaLONFqumRQMBJ+XXI=; b=MhY112sEGc99bWnNRTUz8xl7uy4obttKyb5yVOlua0UbsXif12MFCdpGAm50E/EKOWLg+h kbKAifhHha6A7xs/tsX9/a0SflszjKquBgGICgvoN2y8UdiQdL3U0BWj/u7E3mniJX/g27 hz+5pj6hNWu4mY7TZmr822gVW9qlP+I= ARC-Authentication-Results: i=1; imf12.hostedemail.com; dkim=pass header.d=transsion-corp-partner-google-com.20230601.gappssmtp.com header.s=20230601 header.b="cL9/svXT"; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf12.hostedemail.com: domain of lincheng.yang@transsion.corp-partner.google.com designates 209.85.210.177 as permitted sender) smtp.mailfrom=lincheng.yang@transsion.corp-partner.google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1696759182; a=rsa-sha256; cv=none; b=LMQE3GHPaABg7BbVdHdBSFCfyu0bywyPF69X29krffxV/s2t4D3YZzrzzjdO6J2albJure SdsQYTkalDpjN6wzORudYJjCL62aWbZQo/+6sEr22yKJ5nnkSriUO441palFEUUbFYmORd sEBgjB1p2q7B8Q7OtT2u2NEp7LY13+8= Received: by mail-pf1-f177.google.com with SMTP id d2e1a72fcca58-69101d33315so2683985b3a.3 for ; Sun, 08 Oct 2023 02:59:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=transsion-corp-partner-google-com.20230601.gappssmtp.com; s=20230601; t=1696759181; x=1697363981; darn=kvack.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=XrAvSbwr4PKpLCcR91dzcYyXIYaLONFqumRQMBJ+XXI=; b=cL9/svXTWSBNAYNfSjblGnV2kyVDCplyI5HyZsM4UgpZ903DBZW6gezgQhGB8DqjWn ZKalvgrZca5pCG5x8BvK6wxPpOy+O27emhKYbasmhNelL/CDqUas5vNnQgEW7UwSF9fO 6MBuYgTYmO+TU6sTi8kQNuom5CfeOGzGpgCecMQPYM920pa2fnW1tSoUyoPKR9ynKUBP U4jH4aKHdm1fL8/gQPkNWRSBza3oezlzVb/bQk5r7S/tQsieGBa53sIvssbF0W2dzQLm 61zkSwJQTz6vARoeaA4AFzVsHhk4qmNjYlybJ8HXa8AZ3IymZtgWC0+/spr5P10HhkqH WuPA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1696759181; x=1697363981; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=XrAvSbwr4PKpLCcR91dzcYyXIYaLONFqumRQMBJ+XXI=; b=sRAGURMpdyXB7Ixm/E1sKRYPPlGe5Wg4F3UiyInp+u6FMtWOnm+c3d5swWM3Rhki58 4LiVdOAwy384/OSz9Vp1D8I+3JXzZlHXkzbCnkZ1/ps06Lw9F5GcOYRiTQcWMYTrTS53 dtMmN/4xx6rjLedB5FYcFvl42mrk4JfOTFw6fnf+ofBqABc5Xi6nv7tF856ZtEzGIZVk gyX7ceQXUM5fYBqMHHPY5D6/iST9mGZLFhTvSm5o6Rk/GApntOF13sY7dskUbkMrfqr9 x15anz0r0+H/zTnJsy5MdCutXRwD4oBSD48GGTPwn8aKst91Eg52NV9E1ZB5PtaX8Jyo heZA== X-Gm-Message-State: AOJu0YwNeNArjzEjt9uIbq3aAg7IWw2IzQBjaOib8bAiKVrofZARELqH H5uOvtYSw8KiHzQgnwvjaVBU6w== X-Google-Smtp-Source: AGHT+IEAjG9z5Y35VZX6FXVsxQD1NfgeRUoa48YfmjKw7ltsyfiSU1+kzTvRDjsQQBdX/+v6eGIMzQ== X-Received: by 2002:a05:6a21:2716:b0:16b:75a6:4102 with SMTP id rm22-20020a056a21271600b0016b75a64102mr4501636pzb.46.1696759181330; Sun, 08 Oct 2023 02:59:41 -0700 (PDT) Received: from linchengyang-VB.. ([103.40.76.4]) by smtp.gmail.com with ESMTPSA id u9-20020a17090282c900b001c72c07c9d9sm7126343plz.308.2023.10.08.02.59.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 08 Oct 2023 02:59:41 -0700 (PDT) From: Lincheng Yang X-Google-Original-From: Lincheng Yang To: akpm@linux-foundation.org, rostedt@goodmis.org, mhiramat@kernel.org, willy@infradead.org, hughd@google.com, peterx@redhat.com, mike.kravetz@oracle.com, jgg@ziepe.ca, surenb@google.com, steven.price@arm.com, pasha.tatashin@soleen.com, kirill.shutemov@linux.intel.com, yuanchu@google.com, david@redhat.com, mathieu.desnoyers@efficios.com, dhowells@redhat.com, shakeelb@google.com, pcc@google.com, tytso@mit.edu, 42.hyeyoo@gmail.com, vbabka@suse.cz, catalin.marinas@arm.com, lrh2000@pku.edu.cn, ying.huang@intel.com, mhocko@suse.com, vishal.moola@gmail.com, yosryahmed@google.com, findns94@gmail.com, neilb@suse.de Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, wanbin.wang@transsion.com, chunlei.zhuang@transsion.com, jinsheng.zhao@transsion.com, jiajun.ling@transsion.com, dongyun.liu@transsion.com, Lincheng Yang Subject: [RFC PATCH 0/5] hot page swap to zram, cold page swap to swapfile directly Date: Sun, 8 Oct 2023 17:59:19 +0800 Message-Id: <20231008095924.1165106-1-lincheng.yang@transsion.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: 95E7340005 X-Stat-Signature: nxgcnc459s4o4jrbattcbq1ohpod8j7n X-Rspam-User: X-HE-Tag: 1696759182-865551 X-HE-Meta: U2FsdGVkX18T0cTpu0DlQtNmkD37T7CyDybHQbDARLIg3YtYue04x07KyXUfani6ZEasrUnOrEkLmIH3OOyR2UtZhBhRNc5hAqdt/qMYtnCGKoMeZ5by0pKI9L/vDYEyJAMxvL1ftnEuFAPiew1FQ4p4y8iQgZ4g5eV6btIA47+6wuoE7XBx0ScJfmHq8e8gIgNqQJPLjF07r0807ZbbJVhzIYVQgKAL9eO5MhDLJvtL7KRYrOGHIkBzB7i1a/7mMbGrX0+ppUWJAenwlJpMRadOb7nb8Gm9zKZHgF8M238cQLX6Xwd1pjzO3olJDIK3+V9ntTQ/nzbWkDWq3579nIaZ85wvPeiY2IKh7ySNkmQekOyaf7Zs5Pqpja5N8vrFoTjRdveWRR+bOQxOJFuozxBzM/eURSzcDituCjheUI7CJolsMN3fwJd5xh2v/azsAgkSD7S/bm7yABxaO74pRrmnp4Kn9jPUDsMwLgBOtw3rienks7EHCa6v46dV7CUdInFElf9295NjT5OzOpSUSMLgvlEud1IBUch4pBlYGUfLwcZIpqFS9uE+jeUMarjC5BkCMXXM2OOZJkMHrDyY+lwAnCuVTCAE/u00OW/xDmYHI8Y8yNQ+wjQQbjv7iIX2bGCBHbDQ297vJyZVTItkTWqWwifEmDwr9tizRPkHoC+pOO8vK4d2i/mCOA6cYDAiyhY/QVEVqF5ElXRaGV/JXTdKcseSqgtOmy8w5ozxFeQLq/mCKzfrm8nHNruQ9CMKp3ewG50k/yGw7nvAKQj7CBNdPDzVxU3LiyREY/gSoFf0Viy37cSHmbt+Ari0KliHdErf8JtTJ9vMSwvchNmH2gryO4qpR/wXAkMmpOecvj7dReWlVWTOcAb1Ed4bWOspJ/urn9cSNsYA8h0QXIXU8VSMWjusI54OXV0FCNEIeRofScRD+yO6HxOog1/DUH5XsRGNEvqABEiSUcrcd0C MiguNQQ6 DIQkUb7c/SHONpRudlhtCdxyIp1qSBOoAgGDI7ElLJApX84fLYUBbJl1QFlPN5rGXJC59zN/D2N58yCnhhilQTE6ZDjvmlkwQ5o0DyMgzbx7KmzZHqo3qR2v93fOiKl2O6aZKex38wlevbIiu6/6bNrUZ5cRf5eSpRNYfeDdx0MpR46e3CyXW3WsaqrR46n1Kip2UY0imN9OrV5OfiYcaSPCOlYv77lCd2sSwFIWVvy5b71CeWDscmplUfaHEEb0F4BiH0zTx2k+nc7EQQPwXt95hd51zSEkuL2M3GK+u+95Mcll/tBxIaLplk/uHx++l2mUBU+Y+5NrJ84IMsbl6gCYvSqlA33HP4hObzZooZx0PbJFNQoQiU9k62cl1+GgohXgwR4hctTk510hR4QMxjg7g/7AL/ULUGt5a9lSl4nVkE87Cm99JBUVbC2SPYQrrF4IGTqz/Zw7PqY2Q6iZXSe9jaiGITWmogx2oIoNRmPtb4dGJ5GxAepNenA== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000722, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: Hi All, We team developed a feature in Android linux v4.19 that can directly swapout cold pages to the swapfile device and hot pages to the ZRAM device. This can reduce the lag when writing back cold pages to backing-dev through ZRAM when there is a lot of memory pressure, saving the ZRAM compression/decompression process. Especially for low-end Android devices, low CPU frequency and small memory. Currently, Android uses the GKI strategy. We cannot directly modify the Linux kernel to support this feature. We can only support it through the hook vendor. However, this feature involves too many modifications. Google TAM suggested that we push this feature to the Linux community. The main changes are as follows: [PATCH 2/5]: Set the hot and cold status for each page. If it is a cold page, it is swapout to the swapfile directly. If it is a hot page, it is swapout to the ZRAM device. [PATCH 3/5]: When a VMA has many hot pages, predict that the VMA is hot, so that all anonymous pages of this VMA are hot and are only swapout to the ZRAM device. [PATCH 4/5]: When user space uses madvise/process_madvise(MADV_PAGEOUT), swapout to the swapfile device directly. [PATCH 5/5]: When the storage life of the external storage device is too low or the amount of daily writes to swapfile is too high, the user turns off swapout hot/cold page to the swapfile device and can only swapout to the ZRAM device. This series is based on linux v6.5, this is just porting the core function to linux v6.5. If similar function already exists in the kernel, please let me know and give it a shout, also comments and suggestions are welcome. Thanks, Lincheng Yang Lincheng Yang (5): mm/swap_slots: cleanup swap slot cache mm: introduce hot and cold anon page flags mm: add VMA hot flag mm: add page implyreclaim flag mm/swapfile: add swapfile_write_enable interface fs/proc/task_mmu.c | 3 + include/linux/mm.h | 32 +++++++ include/linux/mm_types.h | 2 + include/linux/mm_types_task.h | 10 +++ include/linux/mmzone.h | 1 + include/linux/page-flags.h | 9 ++ include/linux/swap.h | 8 +- include/linux/swap_slots.h | 2 +- include/trace/events/mmflags.h | 6 +- mm/filemap.c | 2 + mm/madvise.c | 7 +- mm/memory.c | 44 ++++++++++ mm/migrate.c | 6 ++ mm/rmap.c | 3 + mm/shmem.c | 2 +- mm/swap.h | 4 +- mm/swap_slots.c | 133 +++++++++++++++++----------- mm/swap_state.c | 4 +- mm/swapfile.c | 153 +++++++++++++++++++++++++++++++-- mm/vmscan.c | 22 ++++- 20 files changed, 384 insertions(+), 69 deletions(-) -- 2.34.1