coli: raise RLIMIT_NOFILE at startup — fixes 'Too many open files' (#147)

The engine opens/mmaps every safetensors shard of the model (144+ files
for GLM-5.2). On macOS the default soft fd limit is 256, so a stock
terminal session fails while loading with:

  <model>/out-00125.safetensors: Too many open files
  the engine exited while loading

Raise the soft limit toward the hard limit (capped at 65536) in the
coli launcher before spawning the engine, so users don't need a manual
'ulimit -n' in every shell. No-op on Windows and on shells whose limit
is already sufficient.

Co-authored-by: Harvad Lee <hongyanab@gmail.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Harvad Li
2026-07-14 14:11:35 +02:00
committed by GitHub
parent 7216992c84
commit bc688a6211
+11
View File
@@ -22,6 +22,17 @@ Configuration through environment variables or flags (also valid after the subco
"""
import os, sys, subprocess, argparse, json, time, signal, shutil, threading, re, codecs, tempfile, textwrap
# The engine mmaps every shard (144+ files); macOS default RLIMIT_NOFILE is 256.
if sys.platform != "win32":
try:
import resource
_soft, _hard = resource.getrlimit(resource.RLIMIT_NOFILE)
_want = min(65536 if _hard == resource.RLIM_INFINITY else _hard, 65536)
if _soft < _want:
resource.setrlimit(resource.RLIMIT_NOFILE, (_want, _hard))
except (ImportError, ValueError, OSError):
pass
# Windows: forza output UTF-8 (console cp1252 tronca Unicode box-drawing/emoji)
if sys.platform == "win32":
for s in (sys.stdout, sys.stderr):