Received: by 2002:ab2:6991:0:b0:1f7:f6c3:9cb1 with SMTP id v17csp435800lqo; Wed, 8 May 2024 04:38:29 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCWV/2jSirNyZD/qnTYiOt7MV0gml4/jg8JEPLSnWLy9a38314+P8SwuEe7/X2f2TCfNnHKejXdIxiUYNx3tAvEOQxfYmE5PYkZS+zs67A== X-Google-Smtp-Source: AGHT+IG+ZOrT3dsgSr5SiHHAOr1gSGMAa63sRf4jaQ6ErrNTlmUCk2DBD3DdWKM9iJKJQGK2VzhN X-Received: by 2002:a05:622a:494:b0:439:d0ed:39e4 with SMTP id d75a77b69052e-43dbebfed0bmr25808071cf.4.1715168309355; Wed, 08 May 2024 04:38:29 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1715168309; cv=pass; d=google.com; s=arc-20160816; b=XBfouaNNnsP44XxLLn+CFZhX9W+W1NAXw5dXi1CJv9aGqcdYBzU9Wyly/44d9lOrPj ds4o62LQrx8PjQTvtVavOK93nVBkBP7jwSpQYBXPBsj+lDZ+hcGheRu4ayUpZiVJ9c6y nYHBeDcD6FiH7s25nlHk0uE7ptBMhbtHzIa26gMxd58Dx7OAipbfcdqvFwuQe6e8QapC 4GHXL5EGSxYk5tjyxjf2UnPKfOX6oqKLKTkc+4t9PsPwzk/mcQ4SQOLbGbcyazmgfuy4 OUJrvKUh4laYRBhHglekPVKt1SbcA+h8Xo61HJnbxO+wDFWT646PrrGUJVa9FeUayhm2 GFkg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:list-unsubscribe:list-subscribe:list-id:precedence :subject:date:from:dkim-signature; bh=Rv7ODi3h9Zv4dLUYCuePOTA6Hl0snrx6MrZvSACKHJk=; fh=UKWJzuM2EmCkwNB2B0ySvj9L6xZOem0cpYJ1p22A+x0=; b=pc9VN5/XfSp91YWG8d43LXh99pA3JJ7kgiQwkOmOwWLBkmQCHyNwgrB2VOkv2eG/3U aEKmGyN5R/gpkmUMJxX1CSb/FNr/He9kf+WkWc5mFYOqQ49CczjQhRhaLu4DtHch0Gyi giFIdp7jDyEhJo7bgf5pXtYsXzSMza8W/ICKUV+PcZl5QWiVcd0m0DokX4nqFnYe179A GOcDO63Idv0QeVxMGQJycvsnZfrA++N4YWVINYtxaVIv7eEvezithaaCjKlBl9Y+waKj 7FTCcE2Mdm89vsmuSazkuubn67qkb6tPM4k88csaWjoZSART+sZxb59rQ0OEhiUV4Lip euSw==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@linux.dev header.s=key1 header.b="sGyqLmc/"; arc=pass (i=1 spf=pass spfdomain=linux.dev dkim=pass dkdomain=linux.dev dmarc=pass fromdomain=linux.dev); spf=pass (google.com: domain of linux-kernel+bounces-173153-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-173153-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.dev Return-Path: Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [147.75.199.223]) by mx.google.com with ESMTPS id hc20-20020a05622a2a1400b00439f0f7c399si12922563qtb.735.2024.05.08.04.38.29 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 May 2024 04:38:29 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-173153-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) client-ip=147.75.199.223; Authentication-Results: mx.google.com; dkim=pass header.i=@linux.dev header.s=key1 header.b="sGyqLmc/"; arc=pass (i=1 spf=pass spfdomain=linux.dev dkim=pass dkdomain=linux.dev dmarc=pass fromdomain=linux.dev); spf=pass (google.com: domain of linux-kernel+bounces-173153-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-173153-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.dev Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id 065FC1C20B43 for ; Wed, 8 May 2024 11:38:29 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 905208248F; Wed, 8 May 2024 11:38:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b="sGyqLmc/" Received: from out-187.mta0.migadu.com (out-187.mta0.migadu.com [91.218.175.187]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 34D1B82D64 for ; Wed, 8 May 2024 11:37:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=91.218.175.187 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1715168279; cv=none; b=JIO1VRbwyFolmERoda849n3Jms5NyrCY423cn4BQVoXmMgdRl/H+bjuWq1zFkBOg8DIcnuZ8vtZ5MsiWHMjyZvzl0J0Q6GEl4nK5lX1T5ayitkVtKpdtrdWaQdfSQg7yW+/NVNeGm7crJoW7Bwzz7L1+cx49/fH3pR2a2EdpBbU= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1715168279; c=relaxed/simple; bh=2EmaZSwe/HzmbILQH+QzgMGxCqa7nYLUApNs+LSZ+CE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Sc6a8sONJR+MI/ip0Rmmidh5Qp8ITlTK4dys0CwPfjcCLNhbwl/T+dBlFnMKxSGAvxsBClZxzFvOJjbg48DpCmoFRGLCg1umhG/oScQg32B+nqx0x1t3UYXyUP8uIyYgxYBHdhsPOfJHye89lOWXsvRj7lvY8rCVyKK/H0B1OYM= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b=sGyqLmc/; arc=none smtp.client-ip=91.218.175.187 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=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 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit 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 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; -- 2.45.0