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 69406C3ABC0 for ; Wed, 7 May 2025 11:23:17 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 072DC6B0089; Wed, 7 May 2025 07:23:16 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 022836B008A; Wed, 7 May 2025 07:23:15 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E2C926B008C; Wed, 7 May 2025 07:23:15 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id BCE8E6B0089 for ; Wed, 7 May 2025 07:23:15 -0400 (EDT) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 5DC38CCC87 for ; Wed, 7 May 2025 11:23:16 +0000 (UTC) X-FDA: 83415875592.06.CF9E5AB Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.14]) by imf11.hostedemail.com (Postfix) with ESMTP id 05C7940003 for ; Wed, 7 May 2025 11:23:13 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=fiWDgeS0; dmarc=pass (policy=none) header.from=intel.com; spf=pass (imf11.hostedemail.com: domain of yu.c.chen@intel.com designates 192.198.163.14 as permitted sender) smtp.mailfrom=yu.c.chen@intel.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1746616994; a=rsa-sha256; cv=none; b=mEDf0Sf2ux6PJXJmz+AenW3uJQj0LVF+iZ0Ao4OlOYPTDP1KXFPxfYuw5YO9JU3ixmMy/9 sAJ8PK2NjVnZR5k0E7KCaWOXzTPWt6c6LtKxd0F5P+qop5kZUm3bUxWkz+3TYuYR/gmZbt msDZfKvLACLMBPYXYQsnhGZwTYL0CWY= ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=fiWDgeS0; dmarc=pass (policy=none) header.from=intel.com; spf=pass (imf11.hostedemail.com: domain of yu.c.chen@intel.com designates 192.198.163.14 as permitted sender) smtp.mailfrom=yu.c.chen@intel.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1746616994; 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:in-reply-to:references:references:dkim-signature; bh=GcM+cCTbkfHgqQsNsOwDSScLeTjv/LfAHos33rqXGzI=; b=HkAASOQbcGWfz8hUa/JkO206YtorqyH6/sjDIm1SHaVfXw1LQDEV3VXG16/91JI1c4ywvm rZvnVxJPJcMJ68eWXYya03laEVHeUqJ1PVBUA+jRg1pDGFNkgoshDWM27efWlDZ8BvKE/g HyjQig8wHmHsYWRBMhpkaGpIfqTUAuk= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1746616994; x=1778152994; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=3C2GGR5aDfk5vm3bQx1+6DND+kJFPluApajlM6kBr2w=; b=fiWDgeS0lP7JF13bWMiPBI9gKxjZsg32pqx81/Uphx4d2l2qWd65fHHu u/UHmsO4+TAMuhpBm7xaOBDv6Ll2elyN7uVbvX6K9edJc47oo8BCK+TH2 ZXsyBPC+ZO8QvLCC2rSuP//DGFFhou8hr/+Y89QGTBWkoZb8rSXJKdrKL 99MK+TO4NKNtSPh5IR0HaxCm+Jb3DJTzwr/CPtM9TwyYaV4Lz1oBv4BAz MNENGRooKfEREZvkkvo32F+N5ujNuYh9Jk7zzDy88hMG0wO5V2u0klthh RNJ48nZsuVcpmeqNjbAUm4W/vQFxFI9s3kxuxOOGK5a4rNj1mJZYHDrtI A==; X-CSE-ConnectionGUID: RmiJfQHLS72/+cN62f7A1A== X-CSE-MsgGUID: YQouJ4sdRMu2HnWY26SY3A== X-IronPort-AV: E=McAfee;i="6700,10204,11425"; a="48454956" X-IronPort-AV: E=Sophos;i="6.15,269,1739865600"; d="scan'208";a="48454956" Received: from fmviesa007.fm.intel.com ([10.60.135.147]) by fmvoesa108.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 May 2025 04:23:12 -0700 X-CSE-ConnectionGUID: Lxr333HGQUmEx+v4KF9rBg== X-CSE-MsgGUID: DXV75fmtQkO0Fd77C9xtFw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.15,269,1739865600"; d="scan'208";a="135946734" Received: from chenyu-dev.sh.intel.com ([10.239.62.107]) by fmviesa007.fm.intel.com with ESMTP; 07 May 2025 04:23:07 -0700 From: Chen Yu To: Peter Zijlstra , Andrew Morton Cc: mkoutny@suse.com, Ingo Molnar , Tejun Heo , Johannes Weiner , Jonathan Corbet , Mel Gorman , Michal Hocko , Muchun Song , Roman Gushchin , Shakeel Butt , "Chen, Tim C" , Aubrey Li , Libo Chen , K Prateek Nayak , Madadi Vineeth Reddy , Venkat Rao Bagalkote , "Jain, Ayush" , cgroups@vger.kernel.org, linux-doc@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Chen Yu , Ayush Jain , Chen Yu Subject: [PATCH v4 1/2] sched/numa: fix task swap by skipping kernel threads Date: Wed, 7 May 2025 19:17:15 +0800 Message-Id: X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: 05C7940003 X-Stat-Signature: t9d17jhnojzd9wq9iq45geemq5tmd9cu X-Rspam-User: X-HE-Tag: 1746616993-533821 X-HE-Meta: U2FsdGVkX1/1MH7BkJb8rELO6VNAV920oY3nO0bskRwqXRrf0vzU7mTo3KRP5/8VVjg8XA9alBPwSOQBdQ1qwRIgnRup3doRs2r6X/Ix3TXIuOr7EEQNiKoDv6GGS+LsAS6pLwsx0ZHKxeopJ3gF3ay2ohbuNLTWD599IcKw601jcLCVgRs6soTNuYWd/1tdBOBd0QyW541EIhzABMcQFhXeBILwk0WkbnlWDlmZt5/M3JM5LdaFs3h7ueR0YpsWOXKfvO6kh0ic5nBTNO2iWddvgrjRVT9rPmvKsxKV6sO2Dla+1nY+/ydrLD8p1+w67jv2wGQuSVdfBo7ky5WrwWLk8tGO33ANHPpemq/oB6nUdaekKu467Ts621iFK2lgT90GtG01lquYrv+j4Egv3F6zvZ6znVK9BYlmFexXkKYT7TjZNW4cbevTTmdTd6N/xVWC6PR72z5DIAGBYYlWf0ZTIbgNp100QTPHBt8Qn01Z5qQq5rnRrs6X+ztSK2DIDqhGSmhdaDc1O2ra827OkgK4OnBf7A3wDNVVRR7abBibd4XaeZvCIdKx/rWagMqNqoCHg8uhk4ZWBZoh3fAZmEragSneCNaKsEMk/egewK93GZGO8lidVju4QwWcKKHTgHWGRiyYK14fLfh0PEw9ocqjgsDtCQ0OzrVkj6JEFAtP2M7iphYbx19ixqVfI5RIikLXiV5WRvwHpRqeE80CJMelkyDxgShCC4XD93RTBjwWRPyoRo0zuobR2hwrMeiLpxTm1XCtoTBxrTPNIDgpvf9yLz3+YC8VCk979WYr0qM4IqhfmItm+0qpDYT3jphU3uoc1JfGhSqlQLo/bfWYzJO0XWO9K4BHGqmOT+KMlGiO64gSvxLwr29BjigPNff/DZ5wxt4aLcNlzhhTjNysh/W/r2A4ZIl7HTDiLK7PSqxKdrRw36Y7PbUOXKWC5KYq+oXJ9BcQklzFd/1KTIE LmoW27DQ I2taLYENHFms2VX6PzPNcmqSNMMMQHNAxe/Oy363RtgphxbXbzx9orHrUQrEJkMtny7rYEIC8rVio9WUO2xPCzY0gSZ7F3sBzPzXm/pI+MWJ7J73XHkz7CTyhHPzVH5DjmJLdYT6sGdnMum/i72gu4RqFnZiQPN/2qIpbLyyWPtV4uGF3FplXWwOz+67iMJhmkh6glcIFShz2amLlzyy210lDQaAvfxhXEGTbZhbRLZNyT545ORoO/9zOH/iuCeZ/38oL19ra0yPqxgVHvGpahn9A3OOVBYXXPuGl 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: Libo Chen Task swapping is triggered when there are no idle CPUs in task A's preferred node. In this case, the NUMA load balancer chooses a task B on A's preferred node and swaps B with A. This helps improve NUMA locality without introducing load imbalance between nodes. In the current implementation, B's NUMA node preference is not mandatory, and it aims not to increase load imbalance. That is to say, a kernel thread might be chosen as B. However, kernel threads are not supposed to be covered by NUMA balancing because NUMA balancing only considers user pages via VMAs. Fix this by not considering kernel threads as swap targets in task_numa_compare(). This can be extended beyond kernel threads in the future by checking if a swap candidate has a valid NUMA preference through checking the candidate's numa_preferred_nid and numa_faults. For now, keep the code simple. Suggested-by: Michal Koutny Tested-by: Ayush Jain Signed-off-by: Libo Chen Signed-off-by: Chen Yu --- kernel/sched/fair.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 0fb9bf995a47..d1af2e084a2a 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -2273,7 +2273,8 @@ static bool task_numa_compare(struct task_numa_env *env, rcu_read_lock(); cur = rcu_dereference(dst_rq->curr); - if (cur && ((cur->flags & PF_EXITING) || is_idle_task(cur))) + if (cur && ((cur->flags & PF_EXITING) || is_idle_task(cur) || + !cur->mm)) cur = NULL; /* -- 2.25.1