Skip to content

LoopExecutor: time jobs and report slow ones by task (0.7.3) - #1

Merged
grepjava merged 2 commits into
mainfrom
garudanx
Oct 10, 2026
Merged

grepjava merged 2 commits into
mainfrom
garudanx

Conversation

@grepjava

Copy link
Copy Markdown
Owner

Adds slowJobMicros, onSlowJob(address, micros) and LoopExecutor.address(of:). Off by default. Used by Garuda's --slow-handler-ms (garudanx branch). This PR is mainly for CI on Linux and macOS: the macOS run confirms that a task's job has the task's own address on the Swift 6.1 runtime.

A job runs with everything else on the loop waiting, so a task that
computes without awaiting holds up every socket and timer the loop has,
and nothing said so. Set slowJobMicros and a drain reads the clock around
each job and hands onSlowJob the address and running time of any that
ran past it. A task's job is the task itself, so address(of:) lets the
loop say which of its tasks it was. Off by default, when a drain pays
one branch per job.
@grepjava
grepjava merged commit 1cf97ba into main Oct 10, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant