From nobody Mon Jul 28 13:31:22 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 4brKBM3t6jz6351Z; Mon, 28 Jul 2025 13:31: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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4brKBL5fxpz3tYk; Mon, 28 Jul 2025 13:31:22 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1753709482; 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=fw2CmIAn2UIawjnwHwD86F/xl3qGAqJ+/kWi7VrnYgA=; b=ML1YGkIhk8C4lFzj7hq0P5eTZq5qtIcjXDCDgmUjYtGEFI/A0uDnBgipgA8lfQqDCVkKgB AN+cquWkuKCk3tcF5mJvkR+7wQ0rNIVe79D4qctUoHghRCgZpBMMz4r62HKvzWCgIVOWNy jbCBMTIII/4BHpAU+/RUpO9XRy5FXb+/Nc8f8rIPsXCz+WN7U35mivJDkNnow1J54YS0z3 34bqLOUDSW+T9Po68cPefekIEI5AIb03wbICqURlT06Zv7bp3JO5x3Yi1t60GtvT7q61en 3WGuRxzwfjZ339HbAp1cJ9y6jmQKbLON0ig2faqZP0yh2fLuT7pbUQBN1HOZWA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1753709482; 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=fw2CmIAn2UIawjnwHwD86F/xl3qGAqJ+/kWi7VrnYgA=; b=oyH+/3m6CU+ugeo1Sa0b9qvcV2y5LDjRDOKu+LMv01QvIP7Wz1igImYDYrinEaBg/TX0Zu 8/FY4jUF+VYryikS65WtAW9Mh3GCDZCeQBB77DKNdMxNJjWcMEC3T+pYDGebs0byih9wm6 mCyulId2gJhuYzQhuRvAFGrc8WSjVtWEXhzeN9CB9wOhQ5uoMpfjlQGDEeLnIeVTIPxnOE 2BTOilGu19rmxkA2Cm3uAUpMHtX7u6wT6v4JohJhhqGZa6XVNCuN55pWR6WXcXdJ/vzFDM ziUSJNhJ30DSiLXXipPu+4WwwzytXdCVEKDNELi2OSuwk5k97CVn2e2Btx2u+Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1753709482; a=rsa-sha256; cv=none; b=hOI6moF08nTK/T5oMeioUQQWHBcTw2PQ1+TP1VtGU9uiv8ga+5wmmQZVEGZqU6MpP0sIqI IdGDYGBOT6pdKlC/083LgUHb+0MzIHS6nYyp66nlCc7CDgttak/zOqzydTdAvE3dWTanl3 gvT6TPf6nYsc41BxX3oyk2ggQsJtXZODt1AhaTuuFAmtxddi5PO5ecOEoIoiXAiB79G9cP GCMdEMrZfDyX5/5YvpXjnqWLkJjOevFdOEvJXDFuj7VdLnPWv7b8sW/hhKR1akD235c1Rt 2XTy3U1qBfQV4VFQd1NF728wM/x+Gk6yVB54bScVSli/DBs/ibZO/ocdhVBdnw== 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 4brKBL5Cc1znfM; Mon, 28 Jul 2025 13:31: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 56SDVMxC080333; Mon, 28 Jul 2025 13:31:22 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 56SDVM1u080330; Mon, 28 Jul 2025 13:31:22 GMT (envelope-from git) Date: Mon, 28 Jul 2025 13:31:22 GMT Message-Id: <202507281331.56SDVM1u080330@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Olivier Certner Subject: git: 0566e750c46c - stable/14 - sched_ule: runq_steal_from(): Suppress first thread special case 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: olce X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 0566e750c46cea02b4fbdda5b31e83dafaeaeb15 Auto-Submitted: auto-generated The branch stable/14 has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=0566e750c46cea02b4fbdda5b31e83dafaeaeb15 commit 0566e750c46cea02b4fbdda5b31e83dafaeaeb15 Author: Olivier Certner AuthorDate: 2024-04-29 06:54:43 +0000 Commit: Olivier Certner CommitDate: 2025-07-28 13:28:18 +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 (cherry picked from commit fdf31d27476968456a8a389d8152370582756ef1) --- 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 2e01cf6c2484..01eaabac3450 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;