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 DC05CC54E49 for ; Mon, 26 Feb 2024 13:09:56 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6713744015D; Mon, 26 Feb 2024 08:09:56 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 621D0440147; Mon, 26 Feb 2024 08:09:56 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 474A244015D; Mon, 26 Feb 2024 08:09:56 -0500 (EST) 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 39BF5440147 for ; Mon, 26 Feb 2024 08:09:56 -0500 (EST) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 082D71A07FA for ; Mon, 26 Feb 2024 13:09:56 +0000 (UTC) X-FDA: 81833987592.20.A297863 Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by imf23.hostedemail.com (Postfix) with ESMTP id A82FA140012 for ; Mon, 26 Feb 2024 13:09:52 +0000 (UTC) Authentication-Results: imf23.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=pD55HlzZ; dmarc=pass (policy=none) header.from=ibm.com; spf=pass (imf23.hostedemail.com: domain of donettom@linux.ibm.com designates 148.163.158.5 as permitted sender) smtp.mailfrom=donettom@linux.ibm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1708952992; 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=VfWtWmbtiXwnoVJ0ekIYKJDZKxJUaW6dtIBwoZb8OTs=; b=3fca+vygqBe1e1/8OeV+0l2rmyNYT5ohyHe93zoi5Otc6yUwOSNzVMVx43H6nJsjWzIJRU DQ1qHC+DDB2TefsjjShvUIdCCdjHf98G3LeqN6E84jL/h2KgwA3JCK/+a9JrHxrV/Q8xj5 OMF59IKamyK3HpVydQVXMpDAxLkxJE8= ARC-Authentication-Results: i=1; imf23.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=pD55HlzZ; dmarc=pass (policy=none) header.from=ibm.com; spf=pass (imf23.hostedemail.com: domain of donettom@linux.ibm.com designates 148.163.158.5 as permitted sender) smtp.mailfrom=donettom@linux.ibm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1708952992; a=rsa-sha256; cv=none; b=UXGKJKxusP2frNJ7no2TXU3Js3srgka9DQT3uYBYTWn8oVpfERtbfwPH4NLUFsR/dJ86wS lfrQWdL0Ng+F8825uIWtEpAdyM9lEwX5mx+TZycOaER8V3VvUB9LVsYOph6gtZ9CLkjb49 1Xypb91K8It0+asna38Urkdqb6WNffI= Received: from pps.filterd (m0356516.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 41QCsw90023561; Mon, 26 Feb 2024 13:09:34 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=message-id : date : mime-version : subject : to : cc : references : from : in-reply-to : content-type : content-transfer-encoding; s=pp1; bh=VfWtWmbtiXwnoVJ0ekIYKJDZKxJUaW6dtIBwoZb8OTs=; b=pD55HlzZoKE8GNEreGe8NBja7n1xHXsUz8nIW3ZOjC5WTWHgsG+42mDEjrEjmTjvDLSt d0SKGP6AE7BVOifXeib9SJxcLKmZQOC/JZ9U8MTX8RxWhQmU1JZHrra7Z7Yk3l4/5604 9ChPv4AHjBU8C1scQ5oj484YZSUwWBDmgk7I7jeQZKayxNDWbkoCMUmy2M85ajz1VMID LDSrC7UeG3ZjwRkGeH3Y9w4xNXhLT8Xa6q/4295j5jXYGnJ/m1zqrK120klvdzlZ5f8n mZNxJpqPra/rWlj5U8NYhltlwb3v9HHoJhYl+/KJt9qTsAjN/c4RDpWvpqRm0HpL/2ZY Dw== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3wgdvuqy2b-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 26 Feb 2024 13:09:33 +0000 Received: from m0356516.ppops.net (m0356516.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 41QD1UxN026834; Mon, 26 Feb 2024 13:09:32 GMT Received: from ppma22.wdc07v.mail.ibm.com (5c.69.3da9.ip4.static.sl-reverse.com [169.61.105.92]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3wgdvuqy1j-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 26 Feb 2024 13:09:32 +0000 Received: from pps.filterd (ppma22.wdc07v.mail.ibm.com [127.0.0.1]) by ppma22.wdc07v.mail.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id 41QAmiPe021762; Mon, 26 Feb 2024 13:09:31 GMT Received: from smtprelay04.wdc07v.mail.ibm.com ([172.16.1.71]) by ppma22.wdc07v.mail.ibm.com (PPS) with ESMTPS id 3wfu5ysays-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 26 Feb 2024 13:09:31 +0000 Received: from smtpav02.dal12v.mail.ibm.com (smtpav02.dal12v.mail.ibm.com [10.241.53.101]) by smtprelay04.wdc07v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 41QD9SUo44237468 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 26 Feb 2024 13:09:31 GMT Received: from smtpav02.dal12v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id E288F58071; Mon, 26 Feb 2024 13:09:26 +0000 (GMT) Received: from smtpav02.dal12v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id BCC005805F; Mon, 26 Feb 2024 13:09:18 +0000 (GMT) Received: from [9.109.245.191] (unknown [9.109.245.191]) by smtpav02.dal12v.mail.ibm.com (Postfix) with ESMTP; Mon, 26 Feb 2024 13:09:18 +0000 (GMT) Message-ID: <0e633718-2313-4a0f-9907-b0fa5ffa18bc@linux.ibm.com> Date: Mon, 26 Feb 2024 18:39:16 +0530 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 3/3] mm/numa_balancing:Allow migrate on protnone reference with MPOL_PREFERRED_MANY policy To: Michal Hocko , "Aneesh Kumar K.V" Cc: Andrew Morton , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Huang Ying , Dave Hansen , Mel Gorman , Ben Widawsky , Feng Tang , Andrea Arcangeli , Peter Zijlstra , Ingo Molnar , Rik van Riel , Johannes Weiner , Matthew Wilcox , Mike Kravetz , Vlastimil Babka , Dan Williams , Hugh Dickins , Kefeng Wang , Suren Baghdasaryan References: <9c3f7b743477560d1c5b12b8c111a584a2cc92ee.1708097962.git.donettom@linux.ibm.com> <8d7737208bd24e754dc7a538a3f7f02de84f1f72.1708097962.git.donettom@linux.ibm.com> <25b420aa-3fe6-40a4-8d60-a46ab61ee7b7@linux.ibm.com> <0f0fd8e3-98b2-4001-ba6a-6a8a26a5393f@kernel.org> Content-Language: en-US From: Donet Tom In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-TM-AS-GCONF: 00 X-Proofpoint-GUID: vKlneigSdiNmbAH5ZLTjdnHMAGvwyw3x X-Proofpoint-ORIG-GUID: y8fV19dnBkQNypfuOyDjvBmB4Xeu5cOs X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-02-26_09,2024-02-26_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 spamscore=0 suspectscore=0 clxscore=1015 adultscore=0 mlxlogscore=748 bulkscore=0 phishscore=0 impostorscore=0 lowpriorityscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2311290000 definitions=main-2402260099 X-Rspamd-Queue-Id: A82FA140012 X-Rspam-User: X-Rspamd-Server: rspam02 X-Stat-Signature: dksqzdcuneo34axqgytgooun1fj13kwt X-HE-Tag: 1708952992-31904 X-HE-Meta: U2FsdGVkX1/TGnTGHQp8isZ/iwjc7TbLtTZ1EfP2LEBq0sAAyyNfZac0vHU+UEigc1WF4cM31+iH6pU1CXpYKc857lc8M3zIq+G2h0Fo3fnYMAUOa97bPRYVSgTsQAav6RxJTMJ532dMjzcACIFrMEEH8jvuCXO7zcfgIR3mPSVBJXrw/cjlgIxp+IkDaeCVHpQhXQJU4KLIslMzHUE+L7WqbT+eDCLdbECbt9sLcy5edC8fZ9hvX4R5UBWCUDHV05CRLJBksU+JXDHqsXX3ebVpcVRMgki5arzf8SIwQFO01SL3sed27tx8ZInaJVewbQfP9quKvxFstmJffmdW1TmRIJtOhqtwIPi72Cf03J+mkZYUamajQoNGdACv9wLe8CaOitjO/4IVzAHauEFZyLwxeChwAPC6/Tru6L9QsjWFCsAsQ2fK9cW5sEtlI/LTGBDP7ntlkAOaJ282kS8nr+dN0smJ+T7lLTHkOrUWZt/HFis49hJK4KPH7TDxyYSRCvpTVTPiHvzr8YJdWwr2jtaNxqEZ5eF1WhDw/Ft1eijSo8aMREGuOYFsps+xHEd5u0Yd8fBacfy8pAOn5QG54zjJvoq+wQP58AoeqMNzzlE7E5EF5TpgOP85AhTtF2cjX7BsJzx1EH6nqVmijxNUVKLbZP5hNs0A2oOc0zvvBD5V8+YpBoQ+dVpvkZS8EEHVYP2y4HgXqKs+ATgF6s5ktq7LAYFRSl2PmdLywMLdFt/F4sAF0KjaWZJrBTntrSSzJ+ttDhwtRjX8mFAnG6JPpZ01Z9SOfzCmalcSKpeu4rZkQ7c/w1HjjdTtiCGQU430mGTCTENiQfso0Djpr7rU6CJJlvPZwoo3vqQ2XBZZAPjI2kLHrZp0f5+hJUYSLjydiSDR376f+MyUrluvNNvNn5pKdr57OuacRtsmXIwZMjWqgD8f/5RdJhUr8drLhPhuCaCvWLVjbHbfjoMgnz7 nLhMCkXM 0RyvtziPfnUN2004Q4EU5sq/2dpEQweRzRAbBE6JR+Tg7Ebbb4R+LoE5X+cQRLLrdho+wdlu8rlgMtOzqonacoSbwUmqSS6xcSWriBko7ldmV68pe9cPfgZXmXN5Srr3VBFlbpWpIstgolePbjGbKnhbGEKHWgMhs6/L04bmOWv9DX+W2Xg+gsjcGsJt11AJ6xmhuwDJ2N9U4AUS5A9oyvzVw823IZ/+CKvhYikCxRpQ5FY+qtdnFYsJmUw== 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: On 2/20/24 14:18, Michal Hocko wrote: > On Tue 20-02-24 09:27:25, Aneesh Kumar K.V wrote: > [...] >> case MPOL_PREFERRED_MANY: >> if (pol->flags & MPOL_F_MORON) { >> if (!mpol_preferred_should_numa_migrate(thisnid, curnid, pol)) >> goto out; >> break; >> } >> >> /* >> * use current page if in policy nodemask, >> * else select nearest allowed node, if any. >> * If no allowed nodes, use current [!misplaced]. >> */ >> if (node_isset(curnid, pol->nodes)) >> goto out; >> z = first_zones_zonelist( >> node_zonelist(thisnid, GFP_HIGHUSER), >> gfp_zone(GFP_HIGHUSER), >> &pol->nodes); >> polnid = zone_to_nid(z->zone); >> break; >> .... >> .. >> } >> >> /* Migrate the folio towards the node whose CPU is referencing it */ >> if (pol->flags & MPOL_F_MORON) { >> polnid = thisnid; >> >> if (!should_numa_migrate_memory(current, folio, curnid, >> thiscpu)) >> goto out; >> } >> >> if (curnid != polnid) >> ret = polnid; >> out: >> mpol_cond_put(pol); >> >> return ret; >> } > Ohh, right this code is confusing as hell. Thanks for the clarification. > With this in mind. There should be a comment warning about MPOL_F_MOF > always being unset as the userspace cannot really set it up. > > Thanks! > Hi Michal Sorry For the late reply. If we set  MPOL_F_NUMA_BALANCING from userspace then MPOL_F_MOF and MPOL_F_MORON flags will get set in kernel. /* Basic parameter sanity check used by both mbind() and set_mempolicy() */ static inline int sanitize_mpol_flags(int *mode, unsigned short *flags) {     *flags = *mode & MPOL_MODE_FLAGS; *mode &= ~MPOL_MODE_FLAGS;     if ((unsigned int)(*mode) >=  MPOL_MAX) return -EINVAL;     if ((*flags & MPOL_F_STATIC_NODES) && (*flags & MPOL_F_RELATIVE_NODES)) return -EINVAL;     if (*flags & MPOL_F_NUMA_BALANCING) { if (*mode == MPOL_BIND || *mode == MPOL_PREFERRED_MANY) *flags |= (MPOL_F_MOF | MPOL_F_MORON); else return -EINVAL; } In current kernel it is supported only for MPOL_BIND and we added suppor for MPOL_PREFERRED_MANY also. Why MPOL_F_MOF  flag is required? --------------------------------- For NUMA migration the process memory is unmapped by "task_numa_work" periodically, if unmapped memory got accessed again then NUMA hinting page fault will occur and in page fault handler the pages get migrated. If MPOL_F_MOF is not set then "task_numa_work" will not unmap the process pages and NUMA hinting page fault and migration will not occur. This change has been introduced by commit fc3147245d193b (mm: numa: Limit NUMA scanning to migrate-on-fault VMAs). How new implementation works ---------------------------- MPOL_PREFERRED_MANY is able to set MPOL_F_MOF and MPOL_F_MORON through MPOL_F_NUMA_BALANCING. So NUMA hinting page faults will occur. In mpol_misplaced if we can do numa migration, we select the currently executing node as the target node otherwise we end up returning from the function with ret = NUMA_NO_NODE. So since we are able to set MPOL_F_MOF from userspace through MPOL_F_NUMA_BALANCING, no need to add this comment right? Thanks Donet Tom