mirror of
https://gitcode.com/JianFeeeee/HomeAgent.git
synced 2026-09-23 10:28:06 +00:00
chore(shm): 补齐 §13 验证项,删除统一区域遗留死代码
三件事,都是 plan.md §13 里未打勾的项:
1. §13.3「Bench: ToolInvoke 延迟对比」补测(bench_test.go)
改造后原有的 BenchmarkToolInvoke 仍走 legacy 内联 Args,已不代表生产
路径。拆成 inline / frame 两个子基准并各测两个尺寸(-count=3 取中位):
payload inline(RPC 报文) frame(共享内存帧) 差
16 B 26.4 µs/op 48.0 µs/op +21.6 µs
32 KiB 695.6 µs/op 391.7 µs/op −303.9 µs
取舍随尺寸翻转:小 payload 多付 ~22µs 帧固定开销,大 payload 省掉整份
JSON 编解码与管道拷贝、快 44%。因为线上工具结果动辄几十 KB 且 22µs
相对 LLM 往返 2-8 秒可忽略,所以统一走帧而不按大小分叉(§13.3 第 4 条)
是对的。
2. 删除 §13.1 遗留死代码(evtring.go)
allocEvtRing 自统一共享区域之后从未被调用——旧版它单独建 memfd + eventfd,
现在只有一个 memfd,事件环只是区内的一个 segment(NewEvtRing 操作区内
切片)。留着会让人误以为事件环还有独立段。
3. 修正误导性注释(plugin.go)
仍写着旧 3-fd 布局「3=StageContext, 4=事件环, 5=通知」,与实现
(procExtraFilesForShm 只返回 memfd+evtfd)和 shmpass_unix.go 的权威
注释互相矛盾。
plan.md:§13.1/13.3/13.4/13.8 的验证项按实测打勾,并注明证据(提交号 /
测试名 / 实测数字),不留无依据的勾。
This commit is contained in:
@ -134,8 +134,9 @@ func (p *Plugin) Start(core CoreSDK) error {
|
||||
proc, err := Spawn(p.name, p.bin, Options{
|
||||
Dir: p.dir,
|
||||
// 共享段的传递机制按平台不同(shmpass_*.go):
|
||||
// Unix 经 ExtraFiles 传继承 fd( 3=StageContext, 4=事件环, 5=通知);
|
||||
// Windows 无 fd 继承语义,改用命名内核对象,名字经环境变量传入。
|
||||
// Unix 经 ExtraFiles 传继承 fd(3=统一共享内存区域 SuperBlock+StageContext+EvtRing,
|
||||
// 4=事件通知 eventfd);Windows 无 fd 继承语义,改用命名内核对象,名字经环境变量传入。
|
||||
// 权威定义在 shmpass_unix.go 的 procExtraFilesForShm,修改时三处必须同步。
|
||||
Env: append(p.env, p.host.procEnvForShm()...),
|
||||
ExtraFiles: p.host.procExtraFilesForShm(),
|
||||
ShmSize: p.host.shmSize,
|
||||
|
||||
Reference in New Issue
Block a user