mirror of
https://gitcode.com/JianFeeeee/HomeAgent.git
synced 2026-09-21 09:28:14 +00:00
本轮压测是从 /var/tmp 里现写脚本跑的,能复现才能长期用 —— 固化到这。
为什么要有它(与 go test 的分工):单测都在进程内、参数显式给,抓不到集成面问题;
这一轮它抓到了三个只有真二进制才暴露的问题(DataDir 漏接线、插件通道未登记为
inputch、create 后子不开工),以及两处生成器缺陷(旧 SDK 导致生成工程编译失败;
模板工程从不示范通道登记)。
- `launch.sh`:在**私有 netns** 里同时起 mock LLM 与内核实例。
必须隔离的原因:生产实例占着 *:8080/*:9890/*:9876 且插件设了 SO_REUSEADDR,
同机再起一个实例会在 127.0.0.1 上与之并存绑定(首次实测抢到 9890 约 1 分钟);
netns 里只有 lo,结构上不可能碰到生产端口。unix socket 是文件系统对象,
所以驱动脚本在 netns 外照样能连。
- `mockllm.py`:OpenAI 兼容 mock(可控延迟 + SSE 分块 + 按 `!resident`/`!notify`
标记回工具调用),让无外网也能跑、且**流式段可被中断**(压抢占路径的前提)。
注意必须实现 `do_HEAD`:内核探活用 HEAD,501 会被判不可达 → degraded → rollback 循环。
- `stress.py`:多并发连接轰炸(单连接是串行的,造不出队列压力)+ 中断线程 + 峰值采样。
- `kcli.py`:CLI socket 客户端(`/auth` → `/kernel` / 广播)。
- README:前置配置(含探活端点、rollback 关掉)、用法、指标读法、已知坑。
实测结果(详见 6e60351 提交信息):密集 274 任务 executed=274/rejected=0;
稀疏中断下 suspended=resumed=preempted=27;驻留子全链路 + 优雅退出不留孤儿。
18 lines
749 B
Bash
Executable File
18 lines
749 B
Bash
Executable File
#!/bin/bash
|
||
# 在**私有 netns** 里启动:mock LLM + 完整内核实例。
|
||
# 私有 netns 的意义:生产实例占着 *:8080 / *:9890 / *:9876,插件设了 SO_REUSEADDR,
|
||
# 同机再起一个实例会在 127.0.0.1 上与之并存绑定(第一次实测就这么抢到了 9890 约 1 分钟)。
|
||
# netns 里只有 lo,结构上不可能碰到生产端口。
|
||
set -e
|
||
DATA=/var/tmp/gotmp/kstress
|
||
DRIVE=/var/tmp/gotmp/kstress-drive
|
||
DELAY=${MOCK_DELAY_MS:-300}
|
||
CHUNKS=${MOCK_CHUNKS:-8}
|
||
unshare -n bash -c "
|
||
ip link set lo up
|
||
nohup env MOCK_DELAY_MS=$DELAY MOCK_CHUNKS=$CHUNKS python3 $DRIVE/mockllm.py > $DATA/mock.log 2>&1 &
|
||
echo \$! > $DATA/mock.pid
|
||
nohup $1 -data $DATA -webui 127.0.0.1:18080 > $DATA/boot.log 2>&1 &
|
||
echo \$! > $DATA/pid
|
||
"
|