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

JuliaLang / julia / 1559
78%

Build:
DEFAULT BRANCH: master
Ran 07 Jun 2026 12:38PM 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.805% (-0.008%) from 77.813%
1559

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%)

79 existing lines in 9 files now uncovered.

65997 of 84824 relevant lines covered (77.8%)

23257072.47 hits per line

Coverage Regressions

Lines Coverage ∆ File
24
85.45
-2.14% Compiler/src/typeinfer.jl
20
68.27
-9.62% base/strings/annotated_io.jl
11
66.48
-3.13% base/shell.jl
11
87.57
0.0% base/task.jl
8
24.53
-5.03% base/special/log.jl
2
69.81
-0.19% base/precompilation.jl
1
89.47
-0.44% base/cmd.jl
1
83.23
-0.13% base/stream.jl
1
85.29
-0.03% Compiler/src/abstractinterpretation.jl
Jobs
ID Job ID Ran Files Coverage
1559 windows-coverage - 1559 07 Jun 2026 07:21PM UTC 319
75.85
1559 macos-coverage - 1559 07 Jun 2026 12:38PM UTC 352
76.5
1559 linux-coverage - 1559 07 Jun 2026 04:54PM UTC 351
76.39
Source Files on build 1559
  • Tree
  • List 352
  • Changed 104
  • Source Changed 0
  • Coverage Changed 104
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • a8f97b19 on github
  • Prev Build on master (#1558)
  • Next Build on master (#1560)
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