From nobody Mon Mar 31 18:35:52 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 4ZRKZc4wW7z5sP5Z; Mon, 31 Mar 2025 18:35:52 +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 4ZRKZc34qqz44N4; Mon, 31 Mar 2025 18:35:52 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743446152; 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=3AxXQrSsi2FDFSULG3KnccdOwnK6G/g7FMroDxTLicQ=; b=iCQyRIKMLvnWomAb9B1UW7NiDQm1tfjst42burrBaJC0ZD/pPaiBEGT8mcRVGqFM/KXpLX oES30LN+SLf/9dXbprwJLAKJjfARvQQkdwFHSioh+lhRvjweL8l3z7JHek6cYJy6Mx+q3E EzO2FwXdNRsAwe5XmXC8QQ9GOLLFTeXBCAHQ9mQfbVVuPWUUyc8gyRf9NXV+Qh7Q0eyr+n bQt3tIJS/Gwq0d2/n9MG/QInsJkXbDgVp/dsIUJhEiiY+dhYRgSYUAqm/ySJ67bsw3NlIK SutDyokXj+WExwCVNqrozKbF6l5Wg/ow5VUUMTRsLghrN3VXkl/dmDV+IJbSrA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743446152; a=rsa-sha256; cv=none; b=qFBhHBUsIn9DY9Cb/q4SpqCG1yFUATUtawFmuVo1CssKp3c+BTdFPxhxBhhkztnFlfPVZF 1srp2cp6VCiZNwRTopfUVqsJghJPvPBRsIAZyw/YBB6FXo0t39Ih5vunRZEHiB7URw2fFS OOUnjL84P3ljy4kMiwicnRJC/X+aW/6OnzTSx62ROKgBVT2fYGM0mGhUlQR6Zfd6kyp7/O 7tJBQEh8mPYVRI7Ot+ZcygiY19aEbvZQYHrw3oGgBeRdZ6XPD5i9ZsFoyd/Fstaf/EQqTp C2zXgM9jXfHQa9ig9LF60dHEIK0eBBkANo2b2Cg9iwp6/mnS6X9tx7NG9B+BMg== 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=1743446152; 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=3AxXQrSsi2FDFSULG3KnccdOwnK6G/g7FMroDxTLicQ=; b=ehMm/lFUaOCjIaqjEMZ1WSNvjh2B7eUSJldnU2hSvRoY7hxdLu4iJtixgHLuNpeRFyeP+C ygRu1LDwnWrXE9tRLdAJXh6u3tu4kZKJKam6ytGuKNXqC/RNLMRhlOcO2Q1GA/9x2SC6dn nHR6GTYqAQ8aB/gM/g98Zz8lu6KhhlRFHmZvzfDZwjRKk8KedQaAZpHTXxXmjvFIGfbl9m +NhFmBmXiuUF+1tUqzQ+7xTHmh2qfVSWFp86rpnKX7FVRd7VpAkx6vQ7G+DyWntp6ViXKx MxRZA0AmQOE7ZRhSZS0bpmmvc85ydqIOSTdgA7WJ5teFx7L7t2bgZEj0hEsywQ== 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 4ZRKZc2YwYzwkq; Mon, 31 Mar 2025 18:35:52 +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 52VIZq4n056952; Mon, 31 Mar 2025 18:35:52 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52VIZqPB056949; Mon, 31 Mar 2025 18:35:52 GMT (envelope-from git) Date: Mon, 31 Mar 2025 18:35:52 GMT Message-Id: <202503311835.52VIZqPB056949@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: 910535a82a29 - stable/13 - 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/13 X-Git-Reftype: branch X-Git-Commit: 910535a82a29d71eb3951b2368aef358a207f18d Auto-Submitted: auto-generated The branch stable/13 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=910535a82a29d71eb3951b2368aef358a207f18d commit 910535a82a29d71eb3951b2368aef358a207f18d Author: Mark Johnston AuthorDate: 2025-03-17 19:12:58 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2025-03-31 18:36:01 +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 2236df90dfc0..7334db2a9bbd 100644 --- a/sys/vm/uma_core.c +++ b/sys/vm/uma_core.c @@ -5198,6 +5198,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);