• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

JuliaLang / julia / 1558
78%

Build:
DEFAULT BRANCH: master
Ran 06 Jun 2026 12:44PM UTC
Jobs 3
Files 352
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

06 Jun 2026 01:08AM UTC coverage: 77.813% (+0.1%) from 77.697%
1558

push

buildkite

web-flow
scheduler: avoid O(nthreads) wake-storm on every `@spawn` (#61826)

Fixes #61820
Fixes #50425

Linux - Ryzen 9 5950X
<img width="1560" height="720" alt="image"
src="https://github.com/user-attachments/assets/e3f667fb-6fed-46ed-837f-dfd1b8dd925a"
/>

Linux - Ryzen Threadripper PRO 7995WX 96-Cores
<img width="1560" height="720" alt="image"
src="https://github.com/user-attachments/assets/359e75b8-1a7e-4596-99a7-e7e5878f1b4d"
/>


Windows - i7-8700
<img width="1560" height="720" alt="image"
src="https://github.com/user-attachments/assets/1f9f4671-3e9a-45a7-b196-04dd779ed2f3"
/>



macOS - M2 Pro 6 p cores
<img width="1560" height="720" alt="image"
src="https://github.com/user-attachments/assets/0a5f7ea3-d443-4b23-a42b-b4ab3ee9940b"
/>







Developed with Claude:

---

`schedule` for a non-sticky task previously broadcast a wake to every
thread via
`jl_wakeup_thread(-1)`, performing a per-thread lock/signal/unlock under
`wakeup_thread`'s loop. Per-insert cost was linear in `jl_n_threads`,
and on
systems where the producer can be preempted (e.g. SMT + oversubscribed
thread
count on Windows/Linux) every iteration hit the kernel park/unpark path,
producing the >100x slowdown reported in #61820.

Add `jl_wakeup_threadpool(tpid)`, which wakes at most one sleeping
thread in the
target pool, with a round-robin start hint to spread wake load. Workers
re-check
the queue before sleeping (the existing store-buffering dance), so
bursty inserts
naturally wake additional consumers across the per-insert calls without
a
broadcast.

Restricting wakes to the task's own threadpool is also a correctness
improvement,
since `Partr.multiq_deletemin` only ever returns tasks from the caller's
pool --
waking out-of-pool threads was pure overhead.

The round-robin start hint is sharded across 64 cache-padded stripes
indexed by
the producing thread's tid. A single global atomic counter became the
dominant
cost of `@spawn` at high producer counts on multi-die parts (e.g. Ryzen
5950X... (continued)

2 of 2 new or added lines in 1 file covered. (100.0%)

482 existing lines in 17 files now uncovered.

66004 of 84824 relevant lines covered (77.81%)

22990385.8 hits per line

Coverage Regressions

Lines Coverage ∆ File
227
79.73
-0.25% Compiler/src/ssair/ir.jl
111
17.72
-0.42% Compiler/src/ssair/show.jl
33
90.89
0.0% base/iterators.jl
29
64.63
-11.79% stdlib/LibGit2/src/callbacks.jl
19
80.41
-0.1% base/stacktraces.jl
11
90.14
-7.75% stdlib/LibGit2/src/gitcredential.jl
10
76.75
-2.19% base/file.jl
8
88.51
-2.7% base/strings/string.jl
7
80.0
1.21% base/strings/lazy.jl
6
72.38
-5.71% base/secretbuffer.jl
5
92.28
-1.95% stdlib/LibGit2/src/types.jl
4
95.42
-3.05% base/asyncmap.jl
4
63.32
-0.41% base/errorshow.jl
4
72.58
0.0% base/reflection.jl
2
89.91
-0.44% base/cmd.jl
1
78.25
-0.04% base/loading.jl
1
38.1
-0.21% stdlib/FileWatching/src/FileWatching.jl
Jobs
ID Job ID Ran Files Coverage
1558 linux-coverage - 1558 06 Jun 2026 05:25PM UTC 346
74.73
1558 windows-coverage - 1558 07 Jun 2026 06:30AM UTC 319
75.87
1558 macos-coverage - 1558 06 Jun 2026 12:44PM UTC 352
76.2
Source Files on build 1558
  • Tree
  • List 352
  • Changed 113
  • Source Changed 7
  • Coverage Changed 113
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • a8f97b19 on github
  • Prev Build on master (#1557)
  • Next Build on master (#1559)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc