Skip to content

Lab20先核实际权限与ABI,再接入高频参考 ​

文档类型devlog。基线5d280a31;上一goal turn为progress:1281原编码/回调链分离核同及Mac ifmib64原blob5940B/33接口核同。整体30/66、剩36,发送正式0/5、Gate R未关。同一AI依次承担方案、实施、测试、分离复核,无子代理。Owner持续验收授权覆盖本方案常规实施;不另设Owner逐批审批门。当前Mac192/Lab19不变、手机最后64活动,无正式容量。

1. 目标与边界 ​

当前getifaddrs参考保留,旧原件、公式、失败数字和旧入口不改。先新增Lab20显式ifmib64Probe=true一次性self-owned参考准入探针;不修改目标App、不注入/Hook、不提权。唯一问题是iOS实际sysctl(IFMIB_IFALLDATA,IFDATA_GENERAL)权限、返回ABI、原始64位字段是否成立。一次成功不代替20Hz成本、scope/字节层或正式五轮。新完整参考与公式在此结果之后另定,不以探针替代最终整机指标。

2. 接口、公式与缺失 ​

固定来源Apple XNU commit 1031c584a5e37aff177559b9f69dbd3c8c3fd30a的bsd/net/if_mib.c、if_mib.h及if.c::if_data_internal_to_if_data64,私有SHA沿上一批。MIB六项[CTL_NET,PF_LINK,0,3,0,1];长度→内容最多两次sysctl,newptr=nil/newlen=0,失败/长度变化不重试。不使用rtsock IFLIST2替代本路径,也不由公开源码推导实机权限。

独立snapshot schema perfowl.lab-ifmib64-probe/1、kind sysctl.IFMIB_IFALLDATA.IFDATA_GENERAL.if_data64.candidate/1。记录编译SDK的if_data64实际size/alignment/字段offset/width,ifmib头为name16B+9个UInt32=52B、预期record180/align4、data128。仅全部实际ABI与预期相符才按无对齐load读取字段;bytes/packets/errors/drops均UInt64,直接原整数,无Double转换/截断/求和/差分/速率。flags为record+20的UInt32,type与MTU来自if_data64字段;该ABI不提供ifindex,本探针不伪造索引,不额外调用逐接口API。

Mach absolute begin/end和timebase原numer/denom、每次sysctl状态/errno/请求容量/返回长度及原buffer完整保留。有效原件须两次status0/errno0、内容长=首长度、0<bytes≤64×180、整记录/1–64唯一名称、NUL/UTF8/安全名称、时间与实际ABI成立。读取原件是否完整与解析是否可用分开;失败调用的预分配buffer标明未经认证,不解码成计数、不把未写字节称原始0。拒绝/缺值保持missing/candidate,所有失败先落文件,再以失败终态封口;不存在自动fallback。首点不算差分、无counter-reset修复、无跨接口总量,crossInterfaceSumAllowed=false和metricAccepted=false不变。

3. 最小集成 ​

新增FixtureLabIfMibProbe.swift(纯reader/ABI/snapshot及一次性exclusive附件写入)。沿已有network请求增加可选bool,缺席/false保留旧语义;true仅允许referenceEnabled=false、无stage/无loopback/无cancel、baseline/recovery各0.05秒、byteBudget1、20Hz配置保持既有合法值但不启用原参考。既有endpoint必须通过原验证,但本模式不产生HTTP。

LabNetworkEngine在store prepared及admitted事件后仅调用一次probe,写network-ifmib64-probe.json(≤65536B、O_EXCL/NOFOLLOW/0600、同步与关闭),以新可选ifmib64ProbeFile pin写事件后才按usable决定继续/失败。旧event schema1保留可选字段;手写高频encoder遇到该字段走标准Codable,不吞附件。effective config显式标记probe请求及新kind,不改旧reference字符串/旧shape。record exporter增加此唯一文件/限额/事件action核pin;核心manifest仍固定四源件,附件单独pin,导出typed事件不冒充含有附件原bytes。现有runner实际复制所有源件的纪律沿用。

Lab20构建显式加入第19份Swift源,版本90.21.20,原18份源与legacy-nonstartup集合保持可审计;未改产品无需新Mac包。签名仅Owner已允许的内部Apple Development,校验/独立解包/SHA与旧包回滚私有保全,公证继续暂缓。

4. 软件与分离门槛 ​

新窄控制覆盖64位值跨2^32及2^53/UInt64上界编码精度、ABI/字节宽度、权限拒绝1调用/内容失败2调用/长度漂移/非整记录/超64/重复名/空名/错误UTF8/clock拒绝/未认证buffer不解码、失败文件先保存再封口、附件pin/篡改拒绝、默认旧请求和互斥规则。mock不替代实机;host实际reader仅作host证据。使用原始blob第二Python读法逐字段核与Swift输出及类型,不复用Swift decoder;独立审计唯一probe调用/两次只读sysctl、失败不重试和source pins。

真实规模host比较:旧getifaddrs一次完整read+encode与新probe read+encode,固定各20次/同实际接口规模,记CPU/wall/mean/P95/max/RSS/bytes吞吐;新snapshot含原blob,工作量不同不能仅凭耗时宣称提速。编译与matching tests内120/外135秒512MiB,host运行≤30秒192MiB;新增reader一次O(≤64接口/11520B),文件≤64KiB,预计native<10ms、软件测试<5秒,任何单调用>1ms不掩盖,不视作20Hz开销达门。源级ARM build内180/外195秒512MiB,单编译worker/线程,预计<30秒;分离验证包与源码完整闭包,未E3不称iOS可用。I/O瞬时峰unknown,host≥10GiB且≥预计新增量两倍。

5. 真机后续合同门 ​

本方案先完成软件/签名候选,不直接沿旧run名或现成容量收据启动。实际Lab19→20覆盖升级前另落完整旧文件保全/源SHA/安装前后同树合同,鲜查64集合/128metadata、sealed/released、无pending、产品/App idle、系统/身份/版本;旧观察不当永久空闲。若busy只拒绝,正常退出须单独同生命合同/最多一SIGTERM。新run须将已完整保全且可替代的明确记录保留归位,删除0,再真实枚举≥1准备槽及新名字缺席;准备槽不叫正式五轮容量。

只有上述准入及独立审核通过,才以新前缀执行一次probe run、全源文件/typed export/退出后源SHA及旧metadata核同、失败也保全且不重发。该具体手机执行器、名字、保全范围、资源预算须另以带日期增量先落盘。本次最终根据iOS实际结果决定后续20Hz集成或其他来源,不提前进入193/正式/接收。

Implementation / Validation Update · 2026-10-20 ​

已按本方案实现一次性探针和pin保管,新76/匹配50/58软件控制、33实际host记录/231原字段分离读法核同;19源ARM构建/开发签名/独立解包E2完成,phone0/未安装。新增重复附件事件拒绝;record180/头52是XNU候选布局,实际SDK核if_data64,iOS运行时未验。新完整成本mean/P95=0.660338/0.762208ms较旧0.311435/0.389667ms增加,原blob保管工作量不同,不称提速。首轮测试导出器名称错误、分离脚本nil键错误保留。完整实现、偏差、资源与下一合同。

Perfowl · Performance Observer