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 90F1AC35FE3 for ; Tue, 17 Sep 2024 06:04:50 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A39626B0088; Tue, 17 Sep 2024 02:04:49 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 9E8806B0089; Tue, 17 Sep 2024 02:04:49 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8AF936B008A; Tue, 17 Sep 2024 02:04:49 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 6D9856B0088 for ; Tue, 17 Sep 2024 02:04:49 -0400 (EDT) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 18A2F1A015D for ; Tue, 17 Sep 2024 06:04:49 +0000 (UTC) X-FDA: 82573191498.13.60E27AF Received: from mail-wm1-f53.google.com (mail-wm1-f53.google.com [209.85.128.53]) by imf23.hostedemail.com (Postfix) with ESMTP id 16EC214001A for ; Tue, 17 Sep 2024 06:04:46 +0000 (UTC) Authentication-Results: imf23.hostedemail.com; dkim=pass header.d=suse.com header.s=google header.b=ELaMMxZb; dmarc=pass (policy=quarantine) header.from=suse.com; spf=pass (imf23.hostedemail.com: domain of mhocko@suse.com designates 209.85.128.53 as permitted sender) smtp.mailfrom=mhocko@suse.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1726553078; a=rsa-sha256; cv=none; b=NeQUGfA0hdTODnVGWAA3qZt3ccYdNVhRUuS25CiN+MWEseAPzjjf17UGjLbu5kN0ByceZz KZD4I9CsGgz0jl4CRW5LsOtYdsJ8KzV0rCJS0UN2q4vh5L1AniQsGJzbJWH34+vJNt2Mcu maX/xUjlDW7bFs+u+iRwazA4/fQp7fQ= ARC-Authentication-Results: i=1; imf23.hostedemail.com; dkim=pass header.d=suse.com header.s=google header.b=ELaMMxZb; dmarc=pass (policy=quarantine) header.from=suse.com; spf=pass (imf23.hostedemail.com: domain of mhocko@suse.com designates 209.85.128.53 as permitted sender) smtp.mailfrom=mhocko@suse.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1726553078; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=G+QHYq7633zmakbskovpL4u4ejDhGKehunkMUdAo+20=; b=O5XLF4ibtjydMnv6kUPNZPqLMAZRtzrev/LSuqL9MQiHF/N3HEgQJPQRSeAlDTdH0CnVWG XXKyQ+Z8ztf8BmQKxvHjGeUD4K5mYZ+bGuUR/irmcjI5fvsXfsKuxyEI0iNQSeXtAWzDC/ 5uH1MxRtftA0tjfbzDZmLo/B1XdgCKA= Received: by mail-wm1-f53.google.com with SMTP id 5b1f17b1804b1-42cd46f3a26so32879415e9.2 for ; Mon, 16 Sep 2024 23:04:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1726553085; x=1727157885; darn=kvack.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=G+QHYq7633zmakbskovpL4u4ejDhGKehunkMUdAo+20=; b=ELaMMxZbUv01iZx+JgTJIo7SxkL1cM7BUdy/upAePOeRU05ahIKk6sEVR6sxgTJ+hX 90yfaiL+0940nRl4eFhrQPIn+iBWPLC1xBJ8xOdGJnu54ClEUUVGkfSiLVgVoWKM9NfY 9t4qBW42W76ap/SEwIeiT8ntoZDVIKUKt18XBxb5xDSJjnlVrVclSp523tV/H0/WAhvD 8VxCz+Pq1nYHPXvTkqM2uW0/4amiU1HC1TVGC/T/Z5T6OP1QsSGcnv+wJqitRJSUsQjy FA6tq2cj3oJY3lQUCV/1LRymeEE3rgUKCFrHJvk9Uodn6KHsXG7Q2cfGP+tJXFoy74x6 Rskg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1726553085; x=1727157885; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=G+QHYq7633zmakbskovpL4u4ejDhGKehunkMUdAo+20=; b=TJPWUEWcDcivSp6Hd3tmP3Sy5q7kICamf/7b2Ome86YgeNT9Yd2MWlk/tOh86c3kRk ah/bcBpzwWXnbkVj2WGwFOe5QRRuADSuOV/33QQQLJ3n5Kz+ljOxX7YCo5uE4srTDLA1 qAC8dVA0MMgfLrcMmQl/j5tfcUfvN5+YSjykwBfQSerEoxF8nGlRgY5ojQFwsuDxS2jg 2o7w+LQX1/Ka+aHPB5xaMQ5fp2NWLi3KwYu+q/9Q8UxHNJ1Pcd8ZC02NkbFJ7BKqpZY5 AsvzUcamAkGIPCVQdOiZrWpl217FBiTF6XWu0sQkhJXx9NLWx31AZ7AmXJlLR6d4o4aS 9F3Q== X-Forwarded-Encrypted: i=1; AJvYcCXAqgIjm5sPN4AQSt3kICjWdkirakmw0tjApWva3eJZS7mvOb/I1O449S1j0P/Q1dO7MV+WjvyaoA==@kvack.org X-Gm-Message-State: AOJu0Yz5APUUnsEY1WOeOHUv9ifRmKNmnPGZYi8Ge/9bH7sy+DSeJUAl dlZ3A4GdolXSH6pVj4In99kXaRwflcRQy36CoK5YmAp9Qiq9ZjGTw6beMOBJMIA= X-Google-Smtp-Source: AGHT+IHETGMgx1Yh32zfGXj9vccCNdLbPLd/l1Gn7bQOQ4puEMDXLSWmyvdFQeTf4t7KbDZsWtv0Dg== X-Received: by 2002:a05:600c:4e8c:b0:42c:c37b:4d53 with SMTP id 5b1f17b1804b1-42d86cdba37mr83900355e9.0.1726553085295; Mon, 16 Sep 2024 23:04:45 -0700 (PDT) Received: from localhost (109-81-84-13.rct.o2.cz. [109.81.84.13]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-42d9b054f97sm127329025e9.4.2024.09.16.23.04.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 16 Sep 2024 23:04:45 -0700 (PDT) Date: Tue, 17 Sep 2024 08:04:44 +0200 From: Michal Hocko To: Frederic Weisbecker Cc: LKML , Vlastimil Babka , Andrew Morton , linux-mm@kvack.org, Peter Zijlstra , Thomas Gleixner Subject: Re: [PATCH 13/19] mm: Create/affine kcompactd to its preferred node Message-ID: References: <20240916224925.20540-1-frederic@kernel.org> <20240916224925.20540-14-frederic@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20240916224925.20540-14-frederic@kernel.org> X-Rspam-User: X-Stat-Signature: sth3fc78ri9h4bhrnkwpzqxpgoi8w848 X-Rspamd-Queue-Id: 16EC214001A X-Rspamd-Server: rspam02 X-HE-Tag: 1726553086-428949 X-HE-Meta: U2FsdGVkX1/WBLdGBWwPabAVyTZSpyv82SaMbSmbYzXVHSeFIIgr+1MtbB0OAk5xGbbofQMJF5p6xxucpEto4benVI8uSlSK2OmYNDL0JZuvO3pDVSp0ESNgF9ZS9zzysMTEDOj2oQpu39KXfeSeiYj6m2dqi+8MeXZodEe59P1j8ryxV86RxU8F0kO2u6aO5yQNTkCrX3Z01PYURVLCIYSAjlb2Nz7syFDezNc/pqlzRCnbqIiX889soGOROKLVSAQHeq+NDHM6anIUucveT3MSvVGwRB+YXY9CVBzBt/jyJkOIKZDgtg8Dz8dOzEbrfDRsrHtegjbVlbJmj0kVKaaeYznkHZS6Hq0LYKiVZXgdf5thU17HexQYApENFCReNoP6ic/xScQtmf0TXV/fzeTE7CE3YXK+QnMP6KaxOv1TD7Vr08p2wQWUtjrOWT+/rtPH8BqAvMm8nHFIEG7jN5bMwY4IGmaDX0tZNTTv8hBY5QKM9iIsZ9rcQ3byyVITy6zOv1/ISrtLpkGLwJ2Ft2lv7/Y+hDpY5rXx9q/EYXkTUBnzliT/SHf3eJsT+87zuT3ROa7hHvjv1bsHNtjlLCZDobHTfj5vmk8c0yEikwQOu+qIEBJ51JD85nEOXEjN+oKpYpB0Fmu4NhNOmW+NLyq6yoHDOMdt0iAXvFd/2smISQMoZ7l949oaq5f6dhjJJQNKNduSqKlZGb7LoWDg5rEkU9yNr5O4FOzCtlw4Vz1q0NR5tp6excoA9wwZNzAni7Blm4TIvFX5mlIDmkP9Ipric9IufBkra6tT8IY/Je6ZUfsER1SneV3hHD4P3jO6Gm+R/ADW/jB1YJIqAn0mdqPX1dEodiZlZM/wU3zyAHqAo6gsK/HSLQoJQoYkRVkqEOF4WaFpVY8UHubIiE1PxmPvlk2m85sFu7SwLQ9BysQg3VpGveUIoZSsUr7q+lrNgzRSe8B2lvk1QeVpza9 asv55KuG PQd+lmpglRqEL1sH02TuSnnhPD179mOpHtuzpUfX+yocFwrbEuTWeNZ26afuIEQswrmAecELiELuDjj9Au9hmKOTsyWdDEpvRvT8JDcA9BnrEyGmwjwBKbR00xXYkUIzvgF1qQC/w+G4l02htu6/Oat3mj4PoWciXVgHpBBxMX63i+Y4AoRsyXb29Mk9taHsIRSifXnj0rBCMTEWUkCQrAlzMJiaSCB06nSzkYioFOckHYVOOgCK3k3bkGC3JFkbGpvE3d+pMyawaIdfitbqP6X9JjgpET44Tk01xc5EsA2t6COmzum8h9o8lSCTtX4hsZrY4XTc4WAKT2orD9nhAOMfmFNsrRHdtLngT5/MbK5gHiefaVay4bAzoI0D/TWvMpfqvSIkKkZ8QNnY= 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 Tue 17-09-24 00:49:17, Frederic Weisbecker wrote: > Kcompactd is dedicated to a specific node. As such it wants to be > preferrably affine to it, memory and CPUs-wise. > > Use the proper kthread API to achieve that. As a bonus it takes care of > CPU-hotplug events and CPU-isolation on its behalf. > > Acked-by: Vlastimil Babka > Signed-off-by: Frederic Weisbecker Acked-by: Michal Hocko Clear simplification, thanks! > --- > mm/compaction.c | 43 +++---------------------------------------- > 1 file changed, 3 insertions(+), 40 deletions(-) > > diff --git a/mm/compaction.c b/mm/compaction.c > index eb95e9b435d0..69742555f2e5 100644 > --- a/mm/compaction.c > +++ b/mm/compaction.c > @@ -3179,15 +3179,9 @@ void wakeup_kcompactd(pg_data_t *pgdat, int order, int highest_zoneidx) > static int kcompactd(void *p) > { > pg_data_t *pgdat = (pg_data_t *)p; > - struct task_struct *tsk = current; > long default_timeout = msecs_to_jiffies(HPAGE_FRAG_CHECK_INTERVAL_MSEC); > long timeout = default_timeout; > > - const struct cpumask *cpumask = cpumask_of_node(pgdat->node_id); > - > - if (!cpumask_empty(cpumask)) > - set_cpus_allowed_ptr(tsk, cpumask); > - > set_freezable(); > > pgdat->kcompactd_max_order = 0; > @@ -3258,10 +3252,12 @@ void __meminit kcompactd_run(int nid) > if (pgdat->kcompactd) > return; > > - pgdat->kcompactd = kthread_run(kcompactd, pgdat, "kcompactd%d", nid); > + pgdat->kcompactd = kthread_create_on_node(kcompactd, pgdat, nid, "kcompactd%d", nid); > if (IS_ERR(pgdat->kcompactd)) { > pr_err("Failed to start kcompactd on node %d\n", nid); > pgdat->kcompactd = NULL; > + } else { > + wake_up_process(pgdat->kcompactd); > } > } > > @@ -3279,30 +3275,6 @@ void __meminit kcompactd_stop(int nid) > } > } > > -/* > - * It's optimal to keep kcompactd on the same CPUs as their memory, but > - * not required for correctness. So if the last cpu in a node goes > - * away, we get changed to run anywhere: as the first one comes back, > - * restore their cpu bindings. > - */ > -static int kcompactd_cpu_online(unsigned int cpu) > -{ > - int nid; > - > - for_each_node_state(nid, N_MEMORY) { > - pg_data_t *pgdat = NODE_DATA(nid); > - const struct cpumask *mask; > - > - mask = cpumask_of_node(pgdat->node_id); > - > - if (cpumask_any_and(cpu_online_mask, mask) < nr_cpu_ids) > - /* One of our CPUs online: restore mask */ > - if (pgdat->kcompactd) > - set_cpus_allowed_ptr(pgdat->kcompactd, mask); > - } > - return 0; > -} > - > static int proc_dointvec_minmax_warn_RT_change(const struct ctl_table *table, > int write, void *buffer, size_t *lenp, loff_t *ppos) > { > @@ -3362,15 +3334,6 @@ static struct ctl_table vm_compaction[] = { > static int __init kcompactd_init(void) > { > int nid; > - int ret; > - > - ret = cpuhp_setup_state_nocalls(CPUHP_AP_ONLINE_DYN, > - "mm/compaction:online", > - kcompactd_cpu_online, NULL); > - if (ret < 0) { > - pr_err("kcompactd: failed to register hotplug callbacks.\n"); > - return ret; > - } > > for_each_node_state(nid, N_MEMORY) > kcompactd_run(nid); > -- > 2.46.0 -- Michal Hocko SUSE Labs