GUITaboo Async Throughput Root-Cause Audit
APE Step、5 秒预算与吞吐
Step 定义
本轮论文口径的 APE native Step 是归档中每个
SELECTION_DECISION/RUN_FINISHED.step
对应的一次 APE 选择轮次。它包含选择
Epsilon、Local/Remote、Navigation、Probe 等策略;它不是确认
Transition,也不是 ModelAction
Transition。失败输入或未确认输入不会计入确认
Transition;RUN_FINISHED.step 是选择轮次计数。Probe
若产生确认输入,会同时出现在 Probe/Transition 证据中,不能再次加到
Step。
60 分钟总量
| App | Pure Step | StartLux Step | Jev Step | StartLux Step/min | Jev Step/min |
|---|---|---|---|---|---|
| ODK | 2316 | 2069 | 1938 | 34.48 | 32.30 |
| Scarlet | 2432 | 1906 | 1167 | 31.77 | 19.45 |
| Omni | 2597 | 2062 | 1348 | 34.37 | 22.47 |
| Wikipedia | 2307 | 1955 | 2048 | 32.58 | 34.13 |
| ActivityDiary | 2390 | 1952 | 1653 | 32.53 | 27.55 |
| 合计 | 12042 | 9944 | 8154 | — | — |
确认 Transition 仍单列:本轮 StartLux 五条合计 9706,Jev 五条合计
8011;逐 App 原始值见 conclusion.md。Step
下降不能直接换算成覆盖下降或由同步等待单因果解释。
5 秒核查
provider_wait_ns 是 Provider
阻塞预算;elapsed_ns 是完整 semantic review,包含本地
prepare、锁、截图/证据构造、HTTP 等。
| Run | provider_wait >5s | whole review >5s | >5.5s | >6s | 最大 whole review | 最大 Step | 软超时 |
|---|---|---|---|---|---|---|---|
| ODK/StartLux | 0 | 0 | 0 | 0 | 2.451s | 419 | 0 |
| Wikipedia/StartLux | 0 | 0 | 0 | 0 | 3.425s | 1790 | 0 |
| Scarlet/StartLux | 0 | 0 | 0 | 0 | 4.091s | 1704 | 0 |
| Omni/StartLux | 0 | 0 | 0 | 0 | 3.131s | 1696 | 0 |
| ActivityDiary/StartLux | 0 | 0 | 0 | 0 | 3.614s | 1639 | 0 |
| ODK/Jev | 0 | 77 | 0 | 0 | 5.241s | 1307 | 77 |
| Wikipedia/Jev | 0 | 21 | 1 | 1 | 7.610s | 1146 | 21 |
| Scarlet/Jev | 0 | 354 | 0 | 0 | 5.022s | 1138 | 354 |
| Omni/Jev | 0 | 272 | 0 | 0 | 5.409s | 971 | 272 |
| ActivityDiary/Jev | 0 | 44 | 0 | 0 | 5.135s | 1454 | 44 |
所以本轮“5 秒”只严格约束 Provider wait;它没有约束完整 review
elapsed。最大超额案例是
run_92bc55cadd6a40c68f7aad7cef112e6b Wikipedia/Jev、Step
1146、whole review 7.610 s;其 Provider wait 仍未超过 5 s。代码位置是
JevSemanticReview.await() 只累计
providerWaitNanos,而 prepare() 外层
prepare_total 还包含锁、准备、消费和调度。
Jev/Scarlet 与 Omni 的吞吐形状
每 10 分钟选择/同步/异步/Provider wait(秒)如下,来自
SEMANTIC_REVIEW_TIMING 和 JEV_REQUEST_SENT
原始事件:
| Run | 0–10 Step / sync / async / wait | 10–20 | 20–30 | 30–40 | 40–50 | 50–60 |
|---|---|---|---|---|---|---|
| Scarlet/Jev | 387 / 9 / 3 / 35.1 | 196 / 72 / 1 / 349.7 | 146 / 76 / 0 / 364.4 | 157 / 70 / 0 / 331.3 | 120 / 85 / 2 / 407.6 | 161 / 82 / 1 / 342.2 |
| Omni/Jev | 345 / 21 / 1 / 60.4 | 153 / 57 / 2 / 294.4 | 228 / 48 / 6 / 250.2 | 206 / 57 / 3 / 270.8 | 189 / 57 / 7 / 284.0 | 226 / 45 / 21 / 217.4 |
| ODK/Jev | 351 / 12 / 6 / 34.6 | 365 / 30 / 1 / 73.3 | 372 / 17 / 9 / 58.3 | 219 / 63 / 7 / 277.1 | 272 / 49 / 17 / 174.4 | 359 / 10 / 4 / 14.6 |
Scarlet/Jev 在 10 分钟后 Step 明显变慢,且同步包密度、软超时和 Gateway queue 证据同时上升;Omni/Jev 也有相同方向,但队列/软超时与 Step 下降不能单独证明全部因果,因为 State/GUI/self-loop、App crash 和请求重复也同时存在。
可恢复吞吐的边界
可确认的等待节省下界是:把已有同步 Provider wait 变成不阻塞的异步,最多省下各 Run 的 Provider wait 总和;Jev 五条合计 4788.86 s,StartLux 合计 1075.20 s。它不等于必然增加同样秒数的 Step,因为 Step 还受 GUI、导航、App、队列、self-loop 和 APE 策略影响。若异步消费仍不修复,多数决只会把更多请求变成“后台失效”,及时 Probe 收益可能下降。