Context
Per-handle resource limits exist (max_messages_per_handle, max_bytes_per_handle) but the product max_bytes_per_handle ×ばつ concurrent_handles is the daemon's worst-case inbound-queue memory ceiling. Today this product is unbounded because the handle count is unbounded (see #1).
Once #1 lands, the worst-case ceiling becomes max_bytes_per_handle ×ばつ max_handles. With current defaults that is 64 MiB ×ばつ 64 = 4 GiB of inbound queue per daemon — already large enough to surprise an operator who picked the defaults without thinking about the multiplication.
Proposed change
- Compute the effective ceiling at startup and emit a structured log line:
daemon.queue_ceiling_bytes = X (max_bytes_per_handle=Y ×ばつ max_handles=Z). - Show the same value in
daemon status. - Add
daemon.queue_ceiling_warn_bytesconfig; warn at startup if the computed ceiling exceeds it. Suggest default 1 GiB. - Document the multiplication in README config notes; show the aggregate before the per-handle figures.
This is awareness, not enforcement. The hard cap remains max_bytes_per_handle; this issue surfaces the consequence of the multiplication.
Acceptance
daemon statusshows aggregate ceiling.- Startup log includes the computation.
- Warning logged when ceiling >
queue_ceiling_warn_bytes. - README config section explains the multiplication.
Refs
- Depends on #1
cbcl-runtimedeck slide 17