From nobody Wed Jun 18 02:13:22 2025 X-Original-To: dev-commits-src-main@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 4bMS2W0dpMz5q6mK; Wed, 18 Jun 2025 02:13:23 +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 "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bMS2V5C9bz41c8; Wed, 18 Jun 2025 02:13:22 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1750212802; 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=kP00KX5iaG1rAE70aKWxsTdfeXWabnRnfVBkkZMi5T0=; b=lwgjphzlakqjMfhf/MiGOhihYCUPJL2IgYFqsSw0cHzLD0hamKKR/KlcqamuhVE3HmU3Ry fEUADiIzuQtmLyOvfZjA2BdANf8EANUHOJ/VkR9Vm5NWM4T99cgDA4hCGjYVLJp9W78Prx 1s8EBxOvJmqm6QUBJMZzY8Dz23OxpzFPniklaJ+rxpGkUyLZIwe1Fu9Tmzsb8kBJpqVWlk qmxgY1449W8CzYzs2mWMe8AH5HM4tgwWs0y7rfzbwxUZb3Qzr/FfqxUl7umx9TLSe0/+n3 DMIBUGE8Sj5qWJbo4Qt5FgQcR/RV+kUjCVw6AveEqSOmISXJGusyrXPGv758+w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1750212802; 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=kP00KX5iaG1rAE70aKWxsTdfeXWabnRnfVBkkZMi5T0=; b=HT9VaSLRo+bqzCeSxACx7Yds3wlGgAuDnOGrUkpHFqfjbRj9ylvQlxBDlZxrMZrkNIM5aQ KeDwuCIMGX90wzIqIzNsfYpwQQto58rJpxV+EMkv0F/Lfc3cAsZQWwDvR5gH1dj/UXG1AU udR/ArOa4oOvmcxCnFtLj/kAuRE8jWU10Gv2cHLENoagHWZVXtcAZNXe6vogDgX6KjWFi8 a1TU6FBYxEn7Y6m6Qyk/ZXOD9kc8LR1EJMz9lCReUSe8KyaTqzSbvw81dacmbiKgQkMpOw LX+jitZYdXbhchb1jwNwhZ7dNQTtEWwipQ8hkdMqlgNsXZguK7SFhmYqkq3xVw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1750212802; a=rsa-sha256; cv=none; b=Pt+yuZtXsfMOUbZMaAuQKe62OF6SjsfUgD3atAcCeuWYxBM5xj4y62SP9sApR79mfd3kqw 5z0QbKD+qlA1pnvfLx6nqMZLtTXRGQ5Cojr0XB3FAo35RlU7vBROLIXzzCM9OGzVaaGxiF 9Dn+HnyIMlWwsJYBKkgrePJZaouQqpGEzbo24nSrCQZzLLlzjzTMhZF0nxEzEUzucwHgGM G0vIkktNuEHRoREFDOMBHmGLB/RzXAjddUoWv84TQqIxfp1Ns2jbGAETwjVIIZ3Xj+SOHn zyvOtFqDnI1F6dTESN2n4jNp5GU/VuYDNUucLaUI8sPOTKrzRXFGvaqHSBV3nw== 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 4bMS2V3grdz18fY; Wed, 18 Jun 2025 02:13:22 +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 55I2DMP9024370; Wed, 18 Jun 2025 02:13:22 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 55I2DMbe024367; Wed, 18 Jun 2025 02:13:22 GMT (envelope-from git) Date: Wed, 18 Jun 2025 02:13:22 GMT Message-Id: <202506180213.55I2DMbe024367@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Olivier Certner Subject: git: fdf31d274769 - main - sched_ule: runq_steal_from(): Suppress first thread special case List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olce X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: fdf31d27476968456a8a389d8152370582756ef1 Auto-Submitted: auto-generated The branch main has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=fdf31d27476968456a8a389d8152370582756ef1 commit fdf31d27476968456a8a389d8152370582756ef1 Author: Olivier Certner AuthorDate: 2024-04-29 06:54:43 +0000 Commit: Olivier Certner CommitDate: 2025-06-18 02:08:01 +0000 sched_ule: runq_steal_from(): Suppress first thread special case This special case was introduced as soon as commit "ULE 3.0" (ae7a6b38d53f, r171482, from July 2007). It caused runq_steal_from() to ignore the highest-priority thread while stealing. Its functionality was changed in commit "Rework CPU load balancing in SCHED_ULE" (36acfc6507aa, r232207, from February 2012), where the intent was to keep track of that first thread and return it if no other one was stealable, instead of returning NULL (no steal). Some bug prevented it from working in loaded cases (more than one thread, and all threads but the first one not stealable), which was subsequently fixed in commit "sched_ule(4): Fix interactive threads stealing." (bd84094a51c4, from September 2021). All the reasons for this mechanism we could second-guess were dubious at best. Jeff Roberson, ULE's main author, says in the differential revision that "The point was to move threads that are least likely to benefit from affinity because they are unlikely to run soon enough to take advantage of it.", to which we responded: "(snip) This may improve affinity in some cases, but at the same time we don't really know when the next thread on the queue is to run. Not stealing in this case also amounts to slightly violating the expected execution ordering and fairness.". As this twist doesn't seem to bring any performance improvement in general, let's just remove it. MFC after: 1 month Event: Kitchener-Waterloo Hackathon 202506 Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D45388 --- sys/kern/sched_ule.c | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/sys/kern/sched_ule.c b/sys/kern/sched_ule.c index 5c7665eb7add..1b780f192352 100644 --- a/sys/kern/sched_ule.c +++ b/sys/kern/sched_ule.c @@ -1185,9 +1185,7 @@ tdq_notify(struct tdq *tdq, int lowpri) struct runq_steal_pred_data { struct thread *td; - struct thread *first; int cpu; - bool use_first_last; }; static bool @@ -1197,11 +1195,6 @@ runq_steal_pred(const int idx, struct rq_queue *const q, void *const data) struct thread *td; TAILQ_FOREACH(td, q, td_runq) { - if (d->use_first_last && d->first == NULL) { - d->first = td; - continue; - } - if (THREAD_CAN_MIGRATE(td) && THREAD_CAN_SCHED(td, d->cpu)) { d->td = td; return (true); @@ -1220,9 +1213,7 @@ runq_steal_from(struct runq *const rq, int cpu, int start_idx) { struct runq_steal_pred_data data = { .td = NULL, - .first = NULL, .cpu = cpu, - .use_first_last = true }; int idx; @@ -1238,9 +1229,6 @@ runq_steal_from(struct runq *const rq, int cpu, int start_idx) } MPASS(idx == -1 && data.td == NULL); - if (data.first != NULL && THREAD_CAN_MIGRATE(data.first) && - THREAD_CAN_SCHED(data.first, cpu)) - return (data.first); return (NULL); found: MPASS(data.td != NULL); @@ -1255,9 +1243,7 @@ runq_steal(struct runq *rq, int cpu) { struct runq_steal_pred_data data = { .td = NULL, - .first = NULL, .cpu = cpu, - .use_first_last = false }; int idx;