V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jim9606
V2EX  ›  Android

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

  •  
  •   jim9606 · 102 天前 · 5732 次点击
    这是一个创建于 102 天前的主题,其中的信息可能已经有所发展或是发生改变。

    虽说目的是提升性能,但感觉为了这个提升(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  
       102 天前
    应该是为了匹配越来越大的 ram ,不然怎么看都像是小马拉大车,只能说战未来了
    kenvix
        2
    kenvix  
       102 天前 via Android   ❤️ 2
    难评,x86 高性能计算这么多年来了还是 4K 页,不知道为什么嵌入式反而这么积极
    billccn
        3
    billccn  
       102 天前   ❤️ 3
    @seers 应该和内存大小无关,服务器是手机几十倍内存还不都是 4k page 。因为 page table 是多层的,所以可容纳的页面数量一般超过 CPU 的硬件寻址限制。


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

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

    我唯一能想到的是苹果 M 系列芯片用的是 16K ,算是 Arm 生态里面的可借鉴的经验?
    jim9606
        15
    jim9606  
    OP
       99 天前 via Android
    @Metre 这玩意难处在哪?我看的文章说有源码的话改掉硬编码 4k 的部分然后重新编译就行。
    Metre
        16
    Metre  
       98 天前
    @jim9606 #15 arm linux chromimum 64K 的你找找 说白了生态不行
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2764 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 13:27 · PVG 21:27 · LAX 05:27 · JFK 08:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.