mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-11-07 01:53:24 +09:00
[Docs] (P12): the first-use confirmation measured on the device - 43,232 waits to 25,176, 221.5 s to 134.4 s, op 47 gone and every other row identical
This commit is contained in:
@@ -194,6 +194,31 @@ params probe: first=1 same-again=1 changed=2 (deltas 1/0)
|
||||
所以设备上那 18,056 条 `SetTextureParams` 是**真实的状态变化**,不是重复;`ResourceRespecify`/`ResourceCreate` 同理(respecify 的 `unchanged` memcmp 去重早就在了,`TextureEmit.h:838/858/865`)。
|
||||
**结论:客户端侧没有"少发记录"的空间**——剩下的唯一杠杆是「同样多的记录,更少的往返」,也就是把等待批起来(同一条 row 每 K 条等一次)或把单次往返的成本降下来(数据面 stream 的 syscall/wake 路径),
|
||||
不是继续找冗余。顺带确认:`TCP_NODELAY` 已经在 `SocketTransport.cpp:100` 设了,5 ms 不是 Nagle 造成的。
|
||||
### 2.11 首次使用确认落地后的真机 A/B:那一帧 221.5 s → 134.4 s
|
||||
|
||||
按「确认推迟到该对象首次被使用」实现(提交 `b6270960`):发射端在发送参数前查发布闩,未发布就先补一次**阻塞的** create
|
||||
(`HealUnpublishedRecord`,即把原来"被拒后才跑"的那段抽出来前移);对象一旦确认,参数记录全部 fire-and-forget,
|
||||
调用方读到的是 accept-by-construction(与 B 的 `resource_subdata` 同形)。wire 端读**同一个闩**决定要不要开回复槽,
|
||||
所以两半不会对"是否欠一次等待"给出不同答案。
|
||||
|
||||
同一台设备(GSI,出厂省电策略、服务端 spin 默认 50 µs、Wi-Fi LAN),同一份工作量:
|
||||
|
||||
| | 那一帧 waits | `by_op` | staged | 墙钟 |
|
||||
|---|---|---|---|---|
|
||||
| 改动前(frame 12) | **43,232** | `2=4536, 3=20633, 5=6, 9=1, `**`47=18056`** | 101,421,396 B | 221.5 s |
|
||||
| 改动后(frame 25) | **25,176** | `2=4536, 3=20633, 5=6, 9=1` | 101,421,396 B | **134.4 s(−39%)** |
|
||||
|
||||
**`47`(`SetTextureParams`)整条从等待里消失,其余每一行一个不差**,staged 字节也完全相同——所以这 87 秒是"少买了 18,056 次往返",
|
||||
不是别的什么变了;帧内 `rtt_mean` 5,040 → 5,176 µs(单次成本没动),正是"次数变了、单价没变"的形状。
|
||||
|
||||
**为什么不需要周期性金丝雀**:确实"服务端是否持有这个 handle"客户端本来就知道——`MGPipeHandleIsPublished` 在 create **被接受**时才置位,
|
||||
而 applier 跨 make-current 保留纹理记录(`PipeFill.cpp:3756-3759`,这条注释直接否掉了"在 applier_reset 清闩"的做法:那会让每次 make-current 都无谓重发)。
|
||||
所以确认只在**首次使用**付一次(那一次 create 本来就要发),之后每条记录都不必再问。兜底仍是老路径:
|
||||
create 被拒 → 闩不置位 → 下一条参数记录照样阻塞取真答案 → 原来那段 one-retry 自愈照跑。
|
||||
|
||||
**下一个 20,633**:`ResourceRespecify` 仍逐条等(在 frame 25 里占 20,633/25,176 = 82%)。它与 params 同形(答案只用于 `NoteRespecified` 与自愈),
|
||||
"对象已确认"这个前提同样成立——按同一条规则处理,估算落在 **~4.5k waits ≈ 24 s** 量级(create 那 4,536 是确认本身,应当保留)。
|
||||
|
||||
## 3. 剩余(下一轮的直接入口)
|
||||
|
||||
1. **把记录数压下来(新的头号项)**。§2.5 的真机数字说:那一帧剩下的 43,232 次等待全在「必须等」的三条 row 上,
|
||||
|
||||
Reference in New Issue
Block a user