Android15 试图推的 16K 内存页究竟能有多少收益 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jim9606
V2EX    Android

Android15 试图推的 16K 内存页究竟能有多少收益

  •  
  •   jim9606 2024-09-16 01:49:38 +08:00 9044 次点击
    这是一个创建于 443 天前的主题,其中的信息可能已经有所发展或是发生改变。

    虽说目的是提升性能,但感觉为了这个提升(Google 自己的数据都没 10%)修改的代价有点大啊:

    1. 原生库需要重新编译,可能需要修改代码以支持动态页大小,代码段需要 16K 对齐
    2. 16K 页表只能全局启用,不允许 4K 页应用与 16K 页应用混合运行,因为 Linux 不支持
    3. 只有高版本 NDK 和 AGP 支持,版 NDK 不一定能通过改链接选项实现兼容

    考虑下收益,感觉完全看不到能推下去的可能性,哪怕有是 Play 市场来推,要求升级 NDK 可比升级 Target 难多了。

    16 条回复    2024-09-20 10:59:46 +08:00
    seers
        1
    seers  
       2024-09-16 01:54:13 +08:00
    应该是为了匹配越来越大的 ram ,不然怎么看都像是小马拉大车,只能说战未来了
    kenvix
        2
    kenvix  
       2024-09-16 02:08:15 +08:00 via Android   2
    难评,x86 高性能计算这么多年来了还是 4K 页,不知道为什么嵌入式反而这么积极
    billccn
        3
    billccn  
       2024-09-16 02:45:16 +08:00   3
    @seers 应该和内存大小无关,服务器是手机几十倍内存还不都是 4k page 。因为 page table 是多层的,所以可容纳的页面数量一般超过 CPU 的硬件寻址限制。


    Android 推这个应该是处于功耗的考虑,因为页面变成 4 倍大,那 page fault 可能就会变成原来的 1/4 概率。另外大多数 Android 设备的 swap 不是硬盘,而是 zRAM ,压缩解压也挺费电的,操作次数越少越好咯。我想 16K 的压缩比可能也比 4K 好一点
    ziseyinzi
        4
    ziseyinzi  
       2024-09-16 06:07:44 +08:00
    就是实验性支持一下吧,为 Android 25 做铺垫。
    ysc3839
        5
    ysc3839  
       2024-09-16 06:42:17 +08:00 via Android
    感觉是跟苹果的风
    imluvian
        6
    imluvian  
       2024-09-16 08:41:35 +08:00 via Android   1
    这是给汽车用的。汽车上要开 inline ecc ,能差很多。
    lumyx
        7
    lumyx  
       2024-09-16 12:47:48 +08:00
    面向未来,15 也不是强制打开的。开发者模式才能打开,估计至少得 5 年-8 年才能慢慢强制。可以参考 32 位- 64 位 app 的过度时间
    Flyfish233
        8
    Flyfish233  
       2024-09-16 18:04:20 +08:00 via Android
    我有个应用虽然东西多,但是用的都是开源库,自己扒拉扒拉已经可以正常使用 16k page ,有个开发者问我怎么搞不了,我让他发 Libchecker ,一看用了一个华为闭源库。我认为国内会很难推广,而且这个不一定像 64 位这么好推了
    jim9606
        9
    jim9606  
    OP
       2024-09-16 18:47:58 +08:00   2
    @seers
    大页的好处是提高 TLB 命中率和减小页表,坏处是可能加剧伪共享和碎片内存浪费(这会导致某些假定 4K 页的多线程优化变成负优化),是个有 tradeoff 的选择

    @Venjer
    这跟迁移 64 位不太一样,现在迁移 64 位态度强硬是因为上游 ARM 的新公版 IP 核去掉了 AArch32 支持,在这之前迁移态度并不强硬,所以不算是 google 自己决定的,虽然肯定是跟 ARM 在 roadmap 上通过气。而这个 16K 页并不需要硬件支持,纯是 google 自己决定了。
    国内迁个 arm64 都那么费劲,别说这种不影响可用性的调整了。
    V28a19cc
        10
    V28a19cc  
       2024-09-17 00:29:19 +08:00   1
    目前是零收益,因为目前切换 4K/16K 需要格式化 data 。
    Metre
        11
    Metre  
       2024-09-17 10:12:12 +08:00   1
    这几年 arm 的 linux 的 64K page_size 已经把我适配吐了
    R4rvZ6agNVWr56V0
        12
    R4rvZ6agNVWr56V0  
       2024-09-17 15:43:13 +08:00
    一方面为了匹配更大的内存需求,另一方面提升内存管理效率:16KB 页面大小比 4KB 大 4 倍, 意味着内存管理单元(MMU)需要处理的页面表项减少了 4 倍,Android 性能和效率方面将会获得显著提升。
    Rorysky
        13
    Rorysky  
       2024-09-18 12:26:52 +08:00
    @billccn 那为什么不直接搞 64k
        14
    billccn  
       2024-09-18 21:31:44 +08:00 via Android
    @Rorysky 我也想知道,因为 16K 确实有点鸡肋。

    我唯一能想到的是苹果 M 系列芯片用的是 16K ,算是 Arm 生态里面的可借鉴的经验?
    billccn
    jim9606
        15
    jim9606  
    OP
       2024-09-19 12:49:46 +08:00 via Android
    @Metre 这玩意难处在哪?我看的文章说有源码的话改掉硬编码 4k 的部分然后重新编译就行。
    Metre
        16
    Metre  
       2024-09-20 10:59:46 +08:00
    @jim9606 #15 arm linux chromimum 64K 的你找找 说白了生态不行
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1170 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 23:37 PVG 07:37 LAX 15:37 JFK 18:37
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86