Future Thread Pool Eviction Timing in Racket 8.6: Unresolved Decision on Dynamic Idle Timeout
20K reputation · 20 Oct 2022, 00:53 UTC
Goal
Reduce latency spikes that appear only when many concurrent future calls are made in Racket 8.6.
Background
The future library shares a thread pool whose idle threads are evicted after a period specified by the --thread-evict flag (default 60 s). The Racket manual provides no runtime API to query or change this timeout, so the eviction period is fixed for the process.
Unresolved Decision
It is unclear whether Racket should keep a static eviction timeout or adopt a dynamic, workload‑aware policy. The lack of a queryable setting makes it difficult to tune performance for bursty workloads.
Questions
- Does Racket provide any runtime mechanism to inspect or adjust the thread‑pool eviction timeout beyond the command‑line flag?
- What would be the impact of introducing a dynamic eviction policy that adapts to current concurrency levels?
- How does the eviction timeout interact with other thread‑pool options such as
--thread-pool-sizeand--thread-pool-evict-timeacross different OS platforms?