From nobody Mon Mar 31 18:35:50 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZRKZb5pvwz5sPGV; Mon, 31 Mar 2025 18:35:51 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZRKZZ6n01z44T9; Mon, 31 Mar 2025 18:35:50 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743446151; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=P3Sn1n9+uLkQA7LbOyMJzy0+Nfhxw8ND6fELLA5tojc=; b=kTF3Y6uBtlaCSzU7dkglrpPHlo5xN1tdx4hnislMjBQLy9s+7nBCHpWd6mHpnpriK2YPIX Q+MHJEVUmLOWfJX5Chp73Yj+S/QFP+wsB3bsvTvlMw4a2Hojatdk7EZ5a8wspowF8S0zew wT469HvxUeMFxk1rSeflfQDiics6/1ZpT9WVLmbJr4vY+LSyLNVu0uCwRZFUVRT3l3eOyp YttrmsAbIaMQbmq6TP7hlMG1cT6RmBDJE4FQ8AXDMVnoFqxi4duoW+eqoMGu9oysWpVd8u sD/x6ueyk85DvuoqhbnDqngCFAOUkYigUl1FFWMLTENQddMZNaITee8llhNxEQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743446151; a=rsa-sha256; cv=none; b=ezvybUZtuogdU/rMWuOctfvocArVAqszb8P6C0Eyi+bi8mSSaukkn+2D46UaNpqFmiD8eS zkgVCdr8EUD2aOgFlGyfWZJ9V/nZYqRk/rUTbVMHIeyNlcZwak+kwKnvaKQetvci0ZUHQn QD3K+qkE9XteDNFypX0RMoY+Ga4lUFbrjKdHep2ZHLMk0pBk+ISam+MVCQdNY0VUMvz62W Qy5zGvPoAe6vybyFjw4AF9QXa3I0v1kW7dg54X/y0c94oFRRREOLvvCycmFBQCdpE64PPW I6s/sjS2lBbUN7cvVHpWs4je2OAMJIewy/iYOURkLrcfrmtauv2Qeb6u9USazw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743446150; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=P3Sn1n9+uLkQA7LbOyMJzy0+Nfhxw8ND6fELLA5tojc=; b=n1tbPWd629iBUwuiH7MZaKT6MRcQoHdrDyzpBDz4yE3tWsmN1Ytg73f+OsZqpgk3Pu94x/ WncfDn0CoOlxpYk8IG42KAHeDPGHdM2rrdQAzvZWETq1kzUXwei74kcIBFbetKqT4yw3Ch i0f5ej5n+pRYCJXDEMN8MW4Oz1b9ecyzKdkUK5i6EtEBXZunt5qlwSuZ24d1Cb7LVmc1dU Nve7jg+mheWz70nB8aHjL1e5G7Y9roEiUcpy692VBRL1nZAE5jwepFsOjJxy11VBekiWQV WYv+AQlm+CaPoBDLATplzexWA/GIqD99MFA0Zu8b5NI+v3QPiCrdhRwObymBQA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZRKZZ6GVhzxCb; Mon, 31 Mar 2025 18:35:50 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 52VIZojK056791; Mon, 31 Mar 2025 18:35:50 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52VIZovc056788; Mon, 31 Mar 2025 18:35:50 GMT (envelope-from git) Date: Mon, 31 Mar 2025 18:35:50 GMT Message-Id: <202503311835.52VIZovc056788@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling =?utf-8?Q?Sm=C3=B8rgrav?= Subject: git: 02324ae8279a - stable/14 - uma: Avoid excessive per-CPU draining List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 02324ae8279a977e4fd4a8d05e136ec8a471d5ce Auto-Submitted: auto-generated The branch stable/14 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=02324ae8279a977e4fd4a8d05e136ec8a471d5ce commit 02324ae8279a977e4fd4a8d05e136ec8a471d5ce Author: Mark Johnston AuthorDate: 2025-03-17 19:12:58 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2025-03-31 18:35:33 +0000 uma: Avoid excessive per-CPU draining After commit 389a3fa693ef, uma_reclaim_domain(UMA_RECLAIM_DRAIN_CPU) calls uma_zone_reclaim_domain(UMA_RECLAIM_DRAIN_CPU) twice on each zone in addition to globally draining per-CPU caches. This was unintended and is unnecessarily slow; in particular, draining per-CPU caches requires binding to each CPU. Stop draining per-CPU caches when visiting each zone, just do it once in pcpu_cache_drain_safe() to minimize the amount of expensive sched_bind() calls. Fixes: 389a3fa693ef ("uma: Add UMA_ZONE_UNMANAGED") MFC after: 1 week Sponsored by: Klara, Inc. Sponsored by: NetApp, Inc. Reviewed by: gallatin, kib Differential Revision: https://reviews.freebsd.org/D49349 (cherry picked from commit f506d5af50fccc37f5aa9fe090e9a0d5f05506c8) --- sys/vm/uma_core.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/sys/vm/uma_core.c b/sys/vm/uma_core.c index 661c98b272da..56b7cc601754 100644 --- a/sys/vm/uma_core.c +++ b/sys/vm/uma_core.c @@ -5296,6 +5296,13 @@ uma_reclaim_domain(int req, int domain) zone_foreach(uma_reclaim_domain_cb, &args); break; case UMA_RECLAIM_DRAIN_CPU: + /* + * Reclaim globally visible free items from all zones, then drain + * per-CPU buckets, then reclaim items freed while draining. + * This approach minimizes expensive context switching needed to + * drain each zone's per-CPU buckets. + */ + args.req = UMA_RECLAIM_DRAIN; zone_foreach(uma_reclaim_domain_cb, &args); pcpu_cache_drain_safe(NULL); zone_foreach(uma_reclaim_domain_cb, &args);