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

小米 HyperOS 2 的动态内存页是如何实现的?

  •  2
     
  •   Yadomin · 26 天前 · 5847 次点击

    在极客湾评测小米 15 的视频中,提到了 HyperOS 2.0 对内存管理的优化。

    看到这里感觉非常迷惑,印象中 Linux 的页大小是一个固定的值,和 CPU 的支持相关,一般都是用 4K ,Android 15 要改成 16K ,小米是怎么实现动态的页大小的?

    另外这么改不会造成兼容性问题吗? Android 15 要改成 16k 页都需要一些应用重新编译,动态的岂不是更难适配?

    40 条回复    2024-11-01 16:59:29 +08:00
    NealLason
        1
    NealLason  
       26 天前
    其实就是 Huge TLB 技术,ARM MMU 硬件支持的。
    https://docs.kernel.org/admin-guide/mm/hugetlbpage.html
    Yadomin
        2
    Yadomin  
    OP
       26 天前 via Android
    @NealLason HugeTLB 不是应该大的多吗🤔
    Chinsung
        3
    Chinsung  
       26 天前
    OS 要实现动态页的话,OS 在整个页面汰换和分配算法上要做非常巨大并且深入的改变,按照他的这种说法,应用层申请内存的部分大概率也得重写(指定具体大小的页,或者由 OS 经过一定类似学习的算法来改变给这个应用分配的大小),这块其实想做好难度非常大,不然也不会那么多 OS 都还是固定页+大页支持了
    cooltechbs
        4
    cooltechbs  
       26 天前 via Android   ❤️ 1
    2M 超大页不新鲜了,把固定 4K 页改成固定 16K 也不复杂(我记得苹果 M 系列就是用的 16K ),但是要实现 4/8/16/32/64K )自适应,我第一反应是有这个必要吗?
    Victora
        5
    Victora  
       26 天前
    @cooltechbs #4 我也觉得必要性不大。只能说好过什么都不做吧,实际性能有个 10%影响就不错了。
    levelworm
        6
    levelworm  
       26 天前
    所谓动态的话,会不会是根据应用来?能看到源代码吗?
    kingcanfish
        7
    kingcanfish  
       26 天前   ❤️ 4
    其实我更倾向于吹牛逼
    dhb233
        8
    dhb233  
       26 天前
    @Victora 在性能优化上,10%的优化已经是巨大提升了。。。
    dhb233
        9
    dhb233  
       26 天前
    我的理解是,内存少的情况下,动态可以提升使用率的同时,提升性能。内存足够的情况下,全用 2M 页
    FightPig
        10
    FightPig  
       26 天前   ❤️ 1
    现在小米的系统每次都吹进步,用起来发现和以前还一样
    bxb100
        11
    bxb100  
       26 天前
    不是太熟悉这个, 但是我一直有个疑问, 这种垃圾回收是不是性能地狱
    DefoliationM
        12
    DefoliationM  
       26 天前   ❤️ 5
    用小米这么久了,估计 8 成是供应商技术,感觉小米很少会自己改底层的东西。
    guiyumin
        13
    guiyumin  
       26 天前
    @cooltechbs 有必要,linux 就正在研究怎么干,今天刚才在推特上看的,当然,这个还处于非常早期,因为工程太过于复杂了
    guiyumin
        14
    guiyumin  
       26 天前
    @DefoliationM 就是,这个动态内存技术是 linux 内核级别的优化,我觉得不应该是小米这个级别在搞
    scys
        15
    scys  
       26 天前
    其实没啥小米级别,小米内核也是有很大一部分是 linux ,估计就是改了内核的内存分配方法,只是没有提交到开源社区。毕竟这是商业推动的,十几人,鏖战几个月足够小米弄出来了。
    otakustay
        16
    otakustay  
       26 天前
    @Victora 10%全局性能约等于 SOC 领先一代……
    Yadomin
        17
    Yadomin  
    OP
       26 天前 via Android
    只能等小米开源内核再研究了🤔
    maolaohei
        18
    maolaohei  
       26 天前 via Android
    那个高斯模糊的替代方案简直是天才,同样效果,性能要求很低。
    apples01
        19
    apples01  
       26 天前
    @maolaohei 你说的是哪个替代方案?
    maolaohei
        20
    maolaohei  
       26 天前 via Android
    @apples01 就是使用 gpu 当前界面生成的多级 mipmap 来合成,实现了近似高斯模糊的效果,而且相比高斯模糊性能要求非常低。
    wuoty
        21
    wuoty  
       26 天前
    伙伴系统?
    firstlove
        22
    firstlove  
       26 天前   ❤️ 3
    就是 large folio 呗...
    https://lwn.net/Articles/937239/

    这不是这几年内存管理最火热的改革方向吗...
    muapyw
        23
    muapyw  
       26 天前
    只要金凡敢开通抖音号,我就信了 hy2 吹的牛逼
    xiuming
        24
    xiuming  
       26 天前
    记得 golang 也是内存分级 将对象分成了三类 8B 到 32KB ,总共 67 种跨度类的大小 还有内存对齐 ,小米后端也是挺多用 Golang 。
    JohnSmith
        25
    JohnSmith  
       26 天前 via Android
    @xiuming 操作系统和程序 runtime 是一个东西吗
    Donaldo
        26
    Donaldo  
       26 天前
    这个东西在系统 framework 层应该是没法动?那如果是修改的 linux 内核,那他应该会开源吧(假设他遵守 GPL ),那到时候就能看到源码了。
    Donaldo
        27
    Donaldo  
       26 天前
    @FightPig #10 错了,以前的 miui 比近些年这个强多了😭
    liyafe1997
        28
    liyafe1997  
       26 天前
    我感觉更倾向吹牛逼,先不说动态页,就算你改变页大小,用户空间的 binary 都要重新编译适配吧?
    12101111
        29
    12101111  
       26 天前
    这个是 OPPO 去年最先用到手机上的
    可以看看今年 LPC 上 OPPO 的演讲 Product practices of large folios on millions of OPPO Android phones
    (演讲人的英文口语非常难绷)

    还有去年的 ppt
    https://github.com/ChinaLinuxKernel/CLK2023/blob/main/%E5%88%86%E8%AE%BA%E5%9D%9B1%EF%BC%88%E5%86%85%E5%AD%98%E7%AE%A1%E7%90%86%EF%BC%89/8%20%20%E5%8A%A8%E6%80%81%E5%A4%A7%E9%A1%B5%EF%BC%9A%E5%9F%BA%E4%BA%8EARM64%20contiguous%20PTE%E7%9A%8464KB%20HugePageLarge%20Folios%E2%80%94%E2%80%94%E9%9F%A9%E4%BC%A0%E5%8D%8E.pptx
    vsomeone
        30
    vsomeone  
       26 天前 via iPhone
    我印象里 Linux 也支持 THP 透明大页,现在手机动辄十几个 G 的内存应该也开启了 THP 吧?感觉他这个视频像为了营销做的
    DylanLiuH2O
        31
    DylanLiuH2O  
       26 天前
    要是小米能发个论文写个专利啥的我就信了,不然可能就只是一些工程上的针对性调优,普适性未知,说起来确实感觉没有鸿蒙内核那么有含金量。
    uriah
        32
    uriah  
       26 天前
    不知道和最新的 Android 15 Beta 2 引入 16KB 内存页面支持。是不是一类
    Stevenv
        33
    Stevenv  
       26 天前 via iPhone
    不信。流畅度可能是处理器更新带来的哈哈
    WizardLeo
        34
    WizardLeo  
       26 天前
    @DefoliationM 如果是供应链技术,应该不止小米一家能接触到吧?应该不会作为主要宣传的内容才对。
    ipcjs
        35
    ipcjs  
       25 天前
    @uriah Android 15 的 16K 分页,不是要重新编译 so 文件吗?应该不同吧
    ffnil
        36
    ffnil  
       25 天前
    linux 是 gpl 的吧,能看到源代码吗?
    Yadomin
        37
    Yadomin  
    OP
       25 天前 via Android   ❤️ 1
    Shaaaadow
        38
    Shaaaadow  
       23 天前
    前内核开发者表示,极客湾讲的可能也有点片面了。小米的内核具体怎么实现的我不了解,但是搞 huge page 的主要目的不是为了降低 page fault 次数,而是降低 TLB miss 频率。
    hwf
        39
    hwf  
       23 天前
    说实话, 小米的 HyperOS 2 大部分优化,性能提升都是处理器带来的, 看看今年各大 OS 都在说性能提升多少多少, 动画多么多么流畅就知道了, 功耗下降多少多少, 都是处理器带来的
    nod32vad
        40
    nod32vad  
       20 天前
    我很好奇 HyperCore 的那个 CPU 空转时间降低也是他们自己搞的吗
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1231 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 18:01 · PVG 02:01 · LAX 10:01 · JFK 13:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.