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:
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user