图库: 修 M31 评审 P1(两档共存峰值 + 换清晰挤掉预取)与三个 P2(r2)
P1-1 内存账没算全:高档解码时低档还占着槽,但门控/预留只按新图算。 - 高档请求携带发起时的常驻快照(page_req.resident),解码前按 「常驻 + reader_estimate_peak()」算这次操作的总峰值,上限 MR_TIER_TOTAL_CAP (12MB,与 page_source 的绝对上限同值;常态 3MB 只约束 stb 回退路径, 后端页本来就超 3MB 且已被 M27 放行),超了跳过高档、保留低档(skip=coexist)。 - 峰值本身靠调度压回基线:分页模式焦点页还是低档时不预取邻居(预取来会被 换清晰腾掉),换清晰前 slots_reserve 腾掉非可见页,高档只与焦点低档共存。 B8(--wrap malloc,两实例并行):max_live_delta 3250KB→550KB, 绝对峰值 5279KB→3932KB(基线 3929KB)。 P1-2 换清晰挤掉预取:换清晰后不重跑窗口,邻居洞留到下次翻页(0/8 命中、4 次/页)。 - 新增每页 in-flight 去重(g_req_inflight):请求被 worker 取走后不再被窗口刷新重排, 这是重复解码/挤掉邻居的根因之一。 - 高档落位后按最近一次翻页方向补回邻居(sharpen_refill);反方向不补(3MB 常驻 上限下放不下,必然再被挤掉)。 - 真机几何探针(480×720,1280×2275 JPEG,8 次 700ms/页):0/8→8/8 命中, 4→1.5 次解码/页。B8 顺序 100 页:100/100 命中、149 次解码(1.49/页)。 P2-1:B8 改成 101 页册顺序前翻 100 次(每页都是不同的下一页),4MP/12MP 夹具 真正成为焦点页;断言最后一页=100、命中率 ≥90%、解码 ≤2/页+余量。 P2-2:B10 去掉恒真的 slot_kb 比较,改断言「总常驻不增加」+「高档操作增量 ≤3MB」+ 「两档共存绝对峰值有界」;补双击放大后换清晰不重置缩放/平移、条漫滚动位置不变。 P2-3:B10 整串生命周期解码次数 ≤12(实测 7);B8 解码次数上限。 夹具用硬链接(同文件系统),避免多页册真拷贝几百 MB。 顺带:MR_SHARPEN_MS 200→150(任务允许 150–300ms,给「换清晰→补邻居」留翻页余量); 新增宿主观察口 flip_hits/misses、zoom/pan/woff(只读)。
This commit is contained in:
1 parent
62826e1d13
commit
e896a28fba
3 files changed
+269
-57
No files matched your search
@@ -64,7 +64,13 @@ int mr_reader_ui_low_decodes(void); /* 低档解码次数 */
|
||||
int mr_reader_ui_high_decodes(void);/* 目标档位解码次数 */
|
||||
int mr_reader_ui_high_canceled(void);/* 被取消(拖动/换页/未停稳)的高档请求数 */
|
||||
int mr_reader_ui_sharpen_idx(void); /* 当前允许升级的页;-1=拖动/未停稳/无需升级 */
|
||||
/* 改写「停稳」窗口(默认 MR_SHARPEN_MS=200ms):0=立刻允许高档,很大=冻结高档。 */
|
||||
int mr_reader_ui_flip_hits(void); /* 翻页时目标页已在槽(预取命中,不用等解码)次数 */
|
||||
int mr_reader_ui_flip_misses(void); /* 翻页时目标页还没解好(要等解码)次数 */
|
||||
int mr_reader_ui_zoom_pct(void); /* 当前缩放档(100=未放大) */
|
||||
int mr_reader_ui_pan_x(void); /* 当前平移(px) */
|
||||
int mr_reader_ui_pan_y(void);
|
||||
int mr_reader_ui_woff(void); /* 条漫滚动偏移(px) */
|
||||
/* 改写「停稳」窗口(默认 MR_SHARPEN_MS=150ms):0=立刻允许高档,很大=冻结高档。 */
|
||||
void mr_reader_ui_test_set_sharpen_ms(int ms);
|
||||
/* 绕过停稳判定强排一个「换清晰」请求(验证拖动中会被 M22 的取消通道作废)。 */
|
||||
void mr_reader_ui_test_queue_high(int idx);
|
||||
|
||||
Reference in new issue
Block a user