Repository navigation
Replies: 3 comments
|
Additional lead from a local investigation (2026-11-08):
|
|
每次 机制
if (import.meta.main) {
const selection = consumeRunnerSelection()
...
void runSelectedSubprocessRunner(selection)
}也就是说,一次 spawn 不是"直接 exec git",而是起一个 Node 进程( 所以 28 × 7 不是"28 次 git",是 196 个 Node 进程(再乘几次刷新)。即使每个只在几百毫秒内退出,峰值也够把 swap 打穿。 这笔账该记在谁头上
先做的一件事:把 只读了 master |
|
Thanks — this matches our measurements. We removed Current state after restart (PID 283947, 0.2.2-rc.1): still running, but dsh RSS is around 2.0 GB and swap is around 1.0 GB; the subprocess count since restart is still nontrivial (though part of it is our own diagnostics). We are rolling back to 0.2.1-rc.5 for the SIGSEGV and will report the result. |
Uh oh!
There was an error while loading. Please reload this page.
Environment
Symptom
The VM freezes repeatedly and becomes unreachable (SSH down, QEMU guest agent stops responding). After one freeze, the next boot's
journalctl -b -1shows:Started dsh-subprocess-...scopeentries in 27 minutes (~20/min)git rev-parse --show-toplevelgit symbolic-ref --quiet --short HEADgit remote -vgit rev-parse --path-format=absolute --git-common-dirgit rev-parse --short HEADgit rev-parse --abbrev-ref --symbolic-full-name @{upstream}dsh-subprocesslaunches a separatenode .../dsh-subprocess-local/lib/runner.jsprocess (~140 MB RSS each)Memory state at freeze time (QEMU monitor / guest agent before it stopped responding):
mem_swapped_out: ~94 GB cumulative,mem_swapped_in: ~32 GBKernel side (on 7.0.0-38 and 7.0.0-42, before upgrading to 43):
After upgrading to 7.0.0-43 and setting
transparent_hugepage=never+vm.compaction_proactiveness=0, the soft lockup no longer appears, but memory exhaustion still recurs under load.Questions
runner.jsprocess for every short git command expected in 0.2.2-rc.1? Could git status detection reuse a persistent runner instead?dsh-subprocesson memory-constrained hosts?Additional context
workspaceStorage), with many sessions.All reactions