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

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

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

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

    这不是这几年内存管理最火热的改革方向吗...
    muapyw
        23
    muapyw  
       38 天前
    只要金凡敢开通抖音号,我就信了 hy2 吹的牛逼
    xiuming
        24
    xiuming  
       38 天前
    记得 golang 也是内存分级 将对象分成了三类 8B 到 32KB ,总共 67 种跨度类的大小 还有内存对齐 ,小米后端也是挺多用 Golang 。
    JohnSmith
        25
    JohnSmith  
       38 天前 via Android
    @xiuming 操作系统和程序 runtime 是一个东西吗
    Donaldo
        26
    Donaldo  
       38 天前
    这个东西在系统 framework 层应该是没法动?那如果是修改的 linux 内核,那他应该会开源吧(假设他遵守 GPL ),那到时候就能看到源码了。
    Donaldo
        27
    Donaldo  
       38 天前
    @FightPig #10 错了,以前的 miui 比近些年这个强多了😭
    liyafe1997
        28
    liyafe1997  
       38 天前
    我感觉更倾向吹牛逼,先不说动态页,就算你改变页大小,用户空间的 binary 都要重新编译适配吧?
    12101111
        29
    12101111  
       38 天前
    这个是 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  
       38 天前 via iPhone
    我印象里 Linux 也支持 THP 透明大页,现在手机动辄十几个 G 的内存应该也开启了 THP 吧?感觉他这个视频像为了营销做的
    DylanLiuH2O
        31
    DylanLiuH2O  
       38 天前
    要是小米能发个论文写个专利啥的我就信了,不然可能就只是一些工程上的针对性调优,普适性未知,说起来确实感觉没有鸿蒙内核那么有含金量。
    uriah
        32
    uriah  
       38 天前
    不知道和最新的 Android 15 Beta 2 引入 16KB 内存页面支持。是不是一类
    Stevenv
        33
    Stevenv  
       38 天前 via iPhone
    不信。流畅度可能是处理器更新带来的哈哈
    WizardLeo
        34
    WizardLeo  
       38 天前
    @DefoliationM 如果是供应链技术,应该不止小米一家能接触到吧?应该不会作为主要宣传的内容才对。
    ipcjs
        35
    ipcjs  
       37 天前
    @uriah Android 15 的 16K 分页,不是要重新编译 so 文件吗?应该不同吧
    ffnil
        36
    ffnil  
       37 天前
    linux 是 gpl 的吧,能看到源代码吗?
    Yadomin
        37
    Yadomin  
    OP
       37 天前 via Android   ❤️ 1
    Shaaaadow
        38
    Shaaaadow  
       35 天前
    前内核开发者表示,极客湾讲的可能也有点片面了。小米的内核具体怎么实现的我不了解,但是搞 huge page 的主要目的不是为了降低 page fault 次数,而是降低 TLB miss 频率。
    hwf
        39
    hwf  
       35 天前
    说实话, 小米的 HyperOS 2 大部分优化,性能提升都是处理器带来的, 看看今年各大 OS 都在说性能提升多少多少, 动画多么多么流畅就知道了, 功耗下降多少多少, 都是处理器带来的
    nod32vad
        40
    nod32vad  
       32 天前
    我很好奇 HyperCore 的那个 CPU 空转时间降低也是他们自己搞的吗
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1190 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 18:38 · PVG 02:38 · LAX 10:38 · JFK 13:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.