From patchwork Fri Mar 21 17:37:23 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sourav Panda X-Patchwork-Id: 14025840 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 B78E1C36000 for ; Fri, 21 Mar 2025 17:38:01 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id AE36928000A; Fri, 21 Mar 2025 13:37:59 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A6B8F280009; Fri, 21 Mar 2025 13:37:59 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 90D3328000A; Fri, 21 Mar 2025 13:37:59 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 6A770280009 for ; Fri, 21 Mar 2025 13:37:59 -0400 (EDT) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 8DF6E1404A3 for ; Fri, 21 Mar 2025 17:38:00 +0000 (UTC) X-FDA: 83246266320.10.3183888 Received: from mail-pj1-f73.google.com (mail-pj1-f73.google.com [209.85.216.73]) by imf04.hostedemail.com (Postfix) with ESMTP id 3A7C94000D for ; Fri, 21 Mar 2025 17:37:32 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b="Bbx5X3f/"; spf=pass (imf04.hostedemail.com: domain of 32qPdZwsKCN0RNTQ9UO9MC9FNNFKD.BNLKHMTW-LLJU9BJ.NQF@flex--souravpanda.bounces.google.com designates 209.85.216.73 as permitted sender) smtp.mailfrom=32qPdZwsKCN0RNTQ9UO9MC9FNNFKD.BNLKHMTW-LLJU9BJ.NQF@flex--souravpanda.bounces.google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1742578652; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding:in-reply-to: references:dkim-signature; bh=new5S1nMzv3MFC9Lhvlf36S7TQeIlfuvNpqYoNp8gjU=; b=Vo8eFrelvp8G5Izszq81i2mn26RTDlXaLlqo/6OTDyUZ0ywXI3zYbi1KASvHx+OMj5Q6b/ 2RByAm0GfD3HBaWhCT/1voDlIvrT5iYrImMWRoOcYwZeHpgNiG/ROtOIZJc0WdaU9ITChh 04GjjedMymkpgz6nOawIwvqLBvBJyTU= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1742578652; a=rsa-sha256; cv=none; b=tyUsopufhHLfo0JPnePsp2+zFg8cqfo6HrgIJ3/aV4D3mM+xrBnoMNQNcbt1OLhXfZ8ohC oGx5gFgPsBeBSXzgsElPhJqbootHz0CvdSmKutgiZhul7ZjkooxIQ+kUnAVg+vN6kOc3CO p4zb5v0/dg7NewQCBC1mfXtV5iGlm9g= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b="Bbx5X3f/"; spf=pass (imf04.hostedemail.com: domain of 32qPdZwsKCN0RNTQ9UO9MC9FNNFKD.BNLKHMTW-LLJU9BJ.NQF@flex--souravpanda.bounces.google.com designates 209.85.216.73 as permitted sender) smtp.mailfrom=32qPdZwsKCN0RNTQ9UO9MC9FNNFKD.BNLKHMTW-LLJU9BJ.NQF@flex--souravpanda.bounces.google.com; dmarc=pass (policy=reject) header.from=google.com Received: by mail-pj1-f73.google.com with SMTP id 98e67ed59e1d1-2ff798e8c93so3515010a91.2 for ; Fri, 21 Mar 2025 10:37:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1742578651; x=1743183451; darn=kvack.org; h=to:from:subject:message-id:mime-version:date:from:to:cc:subject :date:message-id:reply-to; bh=new5S1nMzv3MFC9Lhvlf36S7TQeIlfuvNpqYoNp8gjU=; b=Bbx5X3f/OYeNwItxNxm/bMyyIkc0MmuHQUql6351b8/1kUEKmPYUkZtly8KGjwzucz 3WlRX2QXPGhyweyHuXTQExQ94TStMhjvZIe+Ggx5hKcigobs9v8m+W3OTBwrYqluTp1d 7KTCYj65G2rYFWdNQ9Q6/nvFpMUnkd5pZnpyHzukJMbLB4+Ji90HUOsMeeF+9UgaB3Mh Sv3SYBhJqqoZg/1klVzAtDZJk36i3hvAG8YPwzc/ak31IIDrb1SwpS8tq+EY+PW2STf/ owC3A3BiwLLn+Y3L6Tc9epQp1IVtUPF04s6m0UM6k+JuFcUfSDOjIfsa6B3Zu+tcuKha cJwg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742578651; x=1743183451; h=to:from:subject:message-id:mime-version:date:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=new5S1nMzv3MFC9Lhvlf36S7TQeIlfuvNpqYoNp8gjU=; b=GiyDXrmV17VALqaPkC9heEkAzTh5tAXAyC7ngQMhqwu9dtsPmeCu9c964aacb29Y4s +/kBa5eH9WWC01l5Cz5N9iB+Qf5lXM4tsJHD+dL/l/iEYIO4HIs3DP8rl/eByLUVmen/ TxZVXQ4W1BY/9PXXuaXs4toDKd3UNOFdxcvK1FeO3hn88zavJY8NgKClcpv8lGqGeBdt c8uIKbCbYEY258AsHHWqR5deUN1q5KOWZyE26hM7PbivskLSzHFZhJtLqUIA5BnDuFpP P7F8DsyI/gQ0FvC97MbMlD3uUizVVMQdbYPJQhU+mYFE8ZkzCK7sci+UkHpFzQtTrEDB Xwlg== X-Forwarded-Encrypted: i=1; AJvYcCUt/chy9ZWycxwl4gz5k/wO3aeAriWXUiLX75poQHfrF/xuixty3wih0zRvNAr4ZbekVIF4OUY4VQ==@kvack.org X-Gm-Message-State: AOJu0YxMmsg9eMjFDLx1NXuPYzYnfxYLjjHlO1wAJzGev/BPGMAt7/HA xdXl7OM93vGVj4nx0a0q4duotXajTx4kaQbnVddE4Wfr4LQXwvXwfZ276CxwRcqT15B9UGVodrj sb01xpsJCe/4gpm2hr300eQ== X-Google-Smtp-Source: AGHT+IGHhtTojGv8YFf90lw5A7F5CexmsTodNJrY0VjEC/J1ZIUyYROFOXLfY8osVyXkaDsh2QYRjh6elkmiFvPr+Q== X-Received: from pjbpw8.prod.google.com ([2002:a17:90b:2788:b0:2fa:15aa:4d2b]) (user=souravpanda job=prod-delivery.src-stubby-dispatcher) by 2002:a17:90b:2743:b0:2ff:4a8d:74f8 with SMTP id 98e67ed59e1d1-3030fe721dfmr5757256a91.6.1742578650927; Fri, 21 Mar 2025 10:37:30 -0700 (PDT) Date: Fri, 21 Mar 2025 17:37:23 +0000 Mime-Version: 1.0 X-Mailer: git-send-email 2.49.0.395.g12beb8f557-goog Message-ID: <20250321173729.3175898-1-souravpanda@google.com> Subject: [RFC PATCH 0/6] Selective KSM: Synchronous and Partitioned Merging From: Sourav Panda To: mathieu.desnoyers@efficios.com, willy@infradead.org, david@redhat.com, pasha.tatashin@soleen.com, rientjes@google.com, akpm@linux-foundation.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, weixugc@google.com, gthelen@google.com, souravpanda@google.com, surenb@google.com X-Rspam-User: X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: 3A7C94000D X-Stat-Signature: tunpqac3i4fwg1gpskmyk65cc78i987d X-HE-Tag: 1742578652-131874 X-HE-Meta: U2FsdGVkX19pjSLiwmudH8+Z+9+H1Wof+kp3dLIGsEIBO+M0uNSpQ9CT7ShcOH+DDjtXnysEuPdmnRvrnAA+hTF7fcRQfUXfDCtY1SAlCsIHkn0yVEXu4arWINPIt4Ve91lxH9j1q06um4vehy9VNczrJTC/Y16kC+p85BARfIs/v2igmB4e3EwM1Tz0hv9KsvEVgxFKAvXZGQYsKiCX6KBxFf1bnu8BR+yFXl1ySiKllSIdhHFMuIIKr1rwD8bDZ5MxSZMoCaoIgj0pmWAFk5IQ0QChPKwvGFf2A9TZ0m+qnazDUUdOlPO2zzijrNRm3T9cJqo9ZzLqN3Z70I+y5SqCLDVR9zLbJa+WtHlUSUfP/PaTla1Qr6BwEoXAgvBuruj8N/fAANOMmEYIIo8IgRsMStpXPNW4mXzVBBJOeIntKzGiXe8032EsjgZNZM4NiTxKj6956sN9DOqzNZvLd4yhRACievbXHnJVy5qGqIRfkxEtySLcAv4DkauU6H36uP3MT0JVBRpCstaOjHKk1pBr/z7kGhiiBG0lsooRWVb/uhw4wINW5ySz6pIiKmojPUOqDUZN/rbVDA5jdGXkLPAh1R7c8bNkEF6Aq5+ApvM6HBViRUW8BQQph9coLjZWM8zs/A4amvCvRoPcO0prmVmPt8zUUUINN9OsjvKzO1h6/MoC5pevAJPn5XzLTplZtXkUddzrtG1p0W2tXSZxC3+zdCQWULjn4ZWZyoar/fWUvFhyXFp1oC+Ke69bSkPOue4L42hatIcVKRo3x+YKkpf1Y8x+b9qau8Ed+E4oyACOYq4HVpd9kKiVOxyKl1JuiWbr9dvkvqMNcrc3JtvkgeUxoWFzKr0GpyM45OLrcrFvIxKcGtMIaZ7/lAZ16u5rqnNA10SjfNNaKDgSEEdE57f6DgFrjBOGNuCeHxh5d3S0qBsoGCY5x/wWZXxb24UFuCuLaa/QN15xMVgfLg5 L/a9fxdc ai2F2vgA+1DQAOLNbTa1L+anTKBKUoFnxFVNUacaiRUQ7VnzwAXI4bRNNVPSvN6b8GkbsQguXR24NCnYMzUvYzMsmng73rdDQrTMRURGhBpV/rpEfG5d5onWVlXXOAAo+9zajJN/sCLJg/ukCNaNHt82ClAuvACY3ISQhw/u14qH56qXt+19E6USQ5AY1lZufE8O//YXYN+xqXgA6GZEi7hW0tjAuwkM16zUeXyU2uun22IwkwrQszDm2ffrpY0gw7kcQik5dDyzDiMjIkGFOR/pJcAeD0o0GpTaudtMyxIY+R/0+PeDtw2fGqUCNyn0gulVhvSgm5P3nA003/VxEamFOc9x/8jAcy5JNdbzS4na2TLlFrcX94fznIkzWKx3WaysB7u4PBt7lxUom2HzGbCTjl0jBTXzR0ecq71bPiqN067dr/YfdWjXwXpSzT0b3ZphFDprP95mLuw86VeKMMcBhZvGTm+4NvdcETt8hT2+VQke7rcazNdVmHlJJFDrrC96OYZ4nleep+nj4Uqz5k5UVsXWDascUGZ3wO0j2WBHB0m2VqjSC2lMe+BUAVto114XZfaCcpXQ/ADhE/xs+jVb5gBP94y9erxlXKxo849c/mGIJGqiKOC4hBW80WSXkKjRu5qBs/fwj35vraemJocHOsnQqJFt3VtKiUzcjW/z/Ryc= 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: The purpose of this RFC is to supplement our discussion in LSF/MM-25. This is sent as a proof of concept. It applies on top of v6.14-rc7. With the goal of increasing security and improving CPU efficiency, we would like to propose making KSM synchronous and partitioned. The synchronous aspect eliminates the need of ksmd running in the background. Instead, userspace can trigger merging on the specified memory region synchronously. Contrary to SKSM [1], which uses MADV_MERGE, we also propose sysfs and syscall based alternatives. The partitioned aspect divides the merge space into security domains. Merging of pages only takes place within a partition, improving security. Furthermore, trees in each partitioning becomes smaller, improving CPU efficiency. Proposal 1: SYSFS Interface KSM_SYSFS=/sys/kernel/mm/ksm echo "part_1" > ${KSM_SYSFS}/ksm/control/add_partition ls ${KSM_SYSFS}/part_1/ pages_scanned pages_to_scan sleep_millisecs ... echo "pid start_addr end_addr" > ${KSM_SYSFS}/part_1/trigger_merge Proposal 2: SYSCALL Interface Partition can be created or opened using: int ksm_fd = ksm_open(ksm_name, flag); name specifies the ksm partition to be created or opened. flags: O_CREAT Create the ksm partition object if it does not exist. O_EXCL If O_CREAT was also specified, and a shared memory object with the given name already exists, return an error. Trigger the merge using: ksm_merge(ksm_fd, pid, start_addr, size); [1] https://lore.kernel.org/linux-mm/20250228023043.83726-1-mathieu.desnoyers@efficios.com/ Sourav Panda (6): mm: introduce SELECTIVE_KSM KConfig mm: make Selective KSM synchronous mm: make Selective KSM partitioned mm: create dedicated trees for SELECTIVE KSM partitions mm: trigger unmerge and remove SELECTIVE KSM partition mm: syscall alternative for SELECTIVE_KSM arch/x86/entry/syscalls/syscall_64.tbl | 3 +- include/linux/ksm.h | 4 + mm/Kconfig | 11 + mm/ksm.c | 823 ++++++++++++++++++++++--- 4 files changed, 751 insertions(+), 90 deletions(-)