]> git.kaiwu.me - haproxy.git/commitdiff
MINOR: sched: do not punish self-waking tasklets anymore
authorWilly Tarreau <wtarreau@haproxy.com>
Sat, 21 Mar 2026 16:40:59 +0000 (16:40 +0000)
committerWilly Tarreau <w@1wt.eu>
Mon, 23 Mar 2026 05:55:31 +0000 (06:55 +0100)
Nowadays due to yield etc, it's counter-productive to permanently
punish self-waking tasklets, let's abandon this principle as it prevent
finer task priority handling.

We continue to check for the TASK_SELF_WAKING flag to place a task
into TL_BULK in case some code wants to make use of it in the future
(similarly to TASK_HEAVY), but no code sets it anymore. It could
possible make sense in the future to replace this flag with a one-shot
variant requesting low-priority.

src/task.c

index 08de79f4f97d007a90156a150bf28e0e4e3976ae..4761e7b7adce0ee8ac6f90fb02a53226f4ceff47 100644 (file)
@@ -148,7 +148,6 @@ void __tasklet_wakeup_on(struct tasklet *tl, int thr)
                        th_ctx->tl_class_mask |= 1 << TL_BULK;
                }
                else if ((struct task *)tl == th_ctx->current) {
-                       _HA_ATOMIC_OR(&tl->state, TASK_SELF_WAKING);
                        LIST_APPEND(&th_ctx->tasklets[TL_BULK], &tl->list);
                        th_ctx->tl_class_mask |= 1 << TL_BULK;
                }
@@ -187,7 +186,6 @@ struct list *__tasklet_wakeup_after(struct list *head, struct tasklet *tl)
                        th_ctx->tl_class_mask |= 1 << TL_BULK;
                }
                else if ((struct task *)tl == th_ctx->current) {
-                       _HA_ATOMIC_OR(&tl->state, TASK_SELF_WAKING);
                        LIST_INSERT(&th_ctx->tasklets[TL_BULK], &tl->list);
                        th_ctx->tl_class_mask |= 1 << TL_BULK;
                }