perf(tpc): 并行 worker 决策放宽——per_worker_mb 700 降至 350
- 根因:_PickWorkerCount 按可用内存/700MB 决定 worker 数,实测翻译 worker 稳态 ~110MB/峰值 ~300MB,700 过保守——可用内存稍紧即整体降级单 worker 串行(76 文件逐个翻译 1180s vs 并行 ~400s,2-3 倍波动,用户反馈编译不稳定) - 修复:per_worker_mb 700 -> 350(留峰值余量),更多场景走并行
This commit is contained in:
1 parent
c62153a685
commit
d092b4d31f
1 file changed
+6
-1
@@ -37,12 +37,17 @@ def _CachedIsFile(path: str) -> bool:
|
||||
return r
|
||||
|
||||
|
||||
def _PickWorkerCount(n_files: int, per_worker_mb: int = 700) -> int:
|
||||
def _PickWorkerCount(n_files: int, per_worker_mb: int = 350) -> int:
|
||||
"""按可用物理内存动态限制并行 worker 数,避免多进程编译内存峰值 OOM。
|
||||
|
||||
单 worker 预估 per_worker_mb(Python 解释器 + llvmlite module + 共享
|
||||
符号表快照);系统可用内存不足时降为单 worker 串行,内存充足时回落到
|
||||
cpu_count 并行。Windows 用 GlobalMemoryStatusEx 读 ullAvailPhys。
|
||||
|
||||
per_worker_mb=350(2026-08-22 从 700 调低):实测翻译阶段 worker 稳态
|
||||
内存 ~110MB(tasklist 观察)、峰值 ~300MB;原 700MB 过保守——可用内存
|
||||
稍紧(<2.8GB)就整体降级单 worker 串行,76 文件逐个翻译 1180s,并行
|
||||
时 ~400s,时间波动 2-3 倍(用户反馈"编译时间不稳定"的根因之一)。
|
||||
"""
|
||||
base = min(os.cpu_count() or 4, n_files)
|
||||
if base <= 1:
|
||||
|
||||
Reference in new issue
Block a user