From patchwork Wed May 8 11:35:42 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chengming Zhou X-Patchwork-Id: 13658606 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 CD66CC04FFE for ; Wed, 8 May 2024 11:38:00 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 59A636B0158; Wed, 8 May 2024 07:38:00 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 4D4776B0159; Wed, 8 May 2024 07:38:00 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 37FC16B015A; Wed, 8 May 2024 07:38:00 -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 1412E6B0158 for ; Wed, 8 May 2024 07:38:00 -0400 (EDT) Received: from smtpin21.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id C8FBE141011 for ; Wed, 8 May 2024 11:37:59 +0000 (UTC) X-FDA: 82095029478.21.7247CC9 Received: from out-186.mta0.migadu.com (out-186.mta0.migadu.com [91.218.175.186]) by imf12.hostedemail.com (Postfix) with ESMTP id EAA914000A for ; Wed, 8 May 2024 11:37:57 +0000 (UTC) Authentication-Results: imf12.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b="sGyqLmc/"; dmarc=pass (policy=none) header.from=linux.dev; spf=pass (imf12.hostedemail.com: domain of chengming.zhou@linux.dev designates 91.218.175.186 as permitted sender) smtp.mailfrom=chengming.zhou@linux.dev ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1715168278; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=Rv7ODi3h9Zv4dLUYCuePOTA6Hl0snrx6MrZvSACKHJk=; b=rYoHgAedc6C5aNcbCZ3rM60rOFfaLy1+1gZoEbrqHxdhkL3dhXAB+IvCI2nS++e0Uwm1i4 Zfmr2MkPv4K4Riprx02yu72cHP598nGVQ8C4sSnklg3ExTmPftoeYgMS0MpPz4RIy/fV9U 0Qd41M0oaUnDYSPrvoUurd+D3j5l18c= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1715168278; a=rsa-sha256; cv=none; b=Grh7gLYTYcwJI7HCKPGalR6Ssf6O92eaggYJQIGN3lnGmzlF0iO/z82OuhQZMF9Y3vXxu/ DrkgrOWwdEYadZG9uZgl3jLz3L5TKSUOJgovvOL4kmq+1H6p1gNHmhdBMfxHaL3/6RrPgJ HJoXGhjJkQJDWmLqEOOYtzHdCYlbVtM= ARC-Authentication-Results: i=1; imf12.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b="sGyqLmc/"; dmarc=pass (policy=none) header.from=linux.dev; spf=pass (imf12.hostedemail.com: domain of chengming.zhou@linux.dev designates 91.218.175.186 as permitted sender) smtp.mailfrom=chengming.zhou@linux.dev X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1715168276; h=from:from: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:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Rv7ODi3h9Zv4dLUYCuePOTA6Hl0snrx6MrZvSACKHJk=; b=sGyqLmc/ob4XobogabL2rrSlIMRKjg02+S9SDgwIWAeXY/S/Y4fNO+7AdahFYG1gt5nQMc FeOWgfKlTl/AWHPM5vJ5XSyb188vtNSzd5Gu2Awtw/JK01WBl1bAn4LwP2W6jnFzFQpCzV 8X6rdSZp8/58VgZd6vhLG0JiDVXmkYw= From: Chengming Zhou Date: Wed, 08 May 2024 19:35:42 +0800 Subject: [PATCH 2/2] mm/ksm: flush out migrated rmap_item to insert our rmap_item MIME-Version: 1.0 Message-Id: <20240508-b4-ksm-unstable-insert-v1-2-631cdbc2b77f@linux.dev> References: <20240508-b4-ksm-unstable-insert-v1-0-631cdbc2b77f@linux.dev> In-Reply-To: <20240508-b4-ksm-unstable-insert-v1-0-631cdbc2b77f@linux.dev> To: Andrew Morton , David Hildenbrand , Andrea Arcangeli , Stefan Roesch , Hugh Dickins Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, zhouchengming@bytedance.com, Chengming Zhou X-Developer-Signature: v=1; a=ed25519-sha256; t=1715168266; l=1806; i=chengming.zhou@linux.dev; s=20240508; h=from:subject:message-id; bh=DfKRZMh+MWM/THv2xlN2nkqm18FgyrnKseZDpyL0ZnQ=; b=6PGv6hC8/MH+G6VHFjqPstHrk9XZsLDwOyKos4BGRZ6lxZ4an2xDm65nTC4XcJaq5kAVlo4W2 KhIGkkMPYrPAoNo3pgoyAzIgk8bBd2a0sC8o7yToiFqxOUBz2+i6ZkG X-Developer-Key: i=chengming.zhou@linux.dev; a=ed25519; pk=kx40VUetZeR6MuiqrM7kPCcGakk1md0Az5qHwb6gBdU= X-Migadu-Flow: FLOW_OUT X-Rspamd-Queue-Id: EAA914000A X-Rspam-User: X-Rspamd-Server: rspam03 X-Stat-Signature: rxdh4yjxnrt98umf86aox4b3x3nntfub X-HE-Tag: 1715168277-867395 X-HE-Meta: U2FsdGVkX1/3HsMfOfUDqvMd4VuJJMTGNdVSskW4m8N37xu/4mGlZafvHwVZiIZHV1wg+MxSyw41D4xKgKSA3W63XkrKFzr/+393asTL8k+78qhJAcV3JaToebnKpk79C3oSBcMOZ8ILUCpHuFrTTAdVGTeIV7tOVz81FUqCwlwVmNgaYnqB2360Uxp8ba/ACXrIFbSEQA1IJLJDkAH1WdXmv/8hsApCNhYQKRvNVerI+TvAUJlb2BOCaaRqQEXrK/WUnXV7kENe4ish+Xe4Qa+fVVE1RSMP68mqYLdbcc+kMa44osc4XReO7fANJjjRUtDCOD31bP3pRlK/QJuKD0pImepT7hpcBu7Cd9lN78rF1yqn0mQbwb08xP0y6cayvbQMLqjVJcYcwVeqAPyd13WEQR3UvX2c6gUKe29XXiRP7lL98IQdaJDom8URIc/mAIcUZ6jI8ocOfC4cz8ZBUWFPQfpmZqdW/97VbSxiPp49dN/R0ZAWUNDXvo72k7GEd3nw9SVXwREgJGrW/lG46Cfv8WnvenMGG7chK7IWcjqIShnh8Up2KOu/ZgNnPnVrVnpBfiuQ5q+B0mzfyx8dQS1pvPJ8TUS/4YxG1vk+QF4g+EU/GqVCLKVLgR89mq+gjGUnpOp2RsrMHtHFxgeI0BHjFF9z2LuDtW8wLAIl5XjyRYJUy1PEX8eneZJWnGyIrvCBBkbpkGnVUIGBEqF4ZsZZxgJjbnrNqtIUg5aTxWVDGywEBHhJtCEZyNr+y3TyCAlptNJYjgYWkoZqgzq/EOSrfeR8tUpT3uczjUmBIIGmCMElxa4KKnpm55GHzGglaEyEkknmq+EqvPRa10JqRThUsH+d0GtiL4+efmFuZfuBm8veu/dCBp0X7Es60x7xTe94FP/iINweB92R9BKtENti4vfjn3eNrQ4oy9lNmBRGEAGplCh2ySQdva9Db8lXPc6nkO5LOL6igvUIv4Z dirTSpWr C0W5+074BkHzN+lrPipaqAg3ABROVSGNccTAlxloZ4H8lIqFrxrdz50qO2x3OY7ZOJxKMqd9rZ6oWb2ZmHNVC7Lam6U38KF+WUbu4smAP4BnAj9IqsSokAiMAMPpS5vaSP1drHE9/68u3/eaRTQ/Syt1+UqWVRGRM6sPfu1zoExbh0PxDFkD8Rs08r+RvILfZXmEg 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: From: Chengming Zhou If tree_page has been migrated to another NUMA node and across_nodes disabled, flush it out immediately and it will be put in the right unstable tree when next time. The good point is that we can retry to insert our rmap_item successfully to increase the merge possibility, and we don't need to bother to memcmp_pages() in this case. Signed-off-by: Chengming Zhou --- mm/ksm.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/mm/ksm.c b/mm/ksm.c index 66219983eb3a..b840fb55e1f4 100644 --- a/mm/ksm.c +++ b/mm/ksm.c @@ -2226,6 +2226,18 @@ struct ksm_rmap_item *unstable_tree_search_insert(struct ksm_rmap_item *rmap_ite return NULL; } + /* + * If tree_page has been migrated to another NUMA node and + * across_nodes disabled, flush it out here and it will be + * put in the right unstable tree next time. So we can retry + * to insert our rmap_item successfully. + */ + if (!ksm_merge_across_nodes && + page_to_nid(tree_page) != nid) { + remove_rmap_item_from_tree(tree_rmap_item); + goto again; + } + ret = memcmp_pages(page, tree_page); parent = *new; @@ -2235,15 +2247,6 @@ struct ksm_rmap_item *unstable_tree_search_insert(struct ksm_rmap_item *rmap_ite } else if (ret > 0) { put_page(tree_page); new = &parent->rb_right; - } else if (!ksm_merge_across_nodes && - page_to_nid(tree_page) != nid) { - /* - * If tree_page has been migrated to another NUMA node, - * it will be flushed out and put in the right unstable - * tree next time: only merge with it when across_nodes. - */ - put_page(tree_page); - return NULL; } else { *tree_pagep = tree_page; return tree_rmap_item;