在极客湾评测小米 15 的视频中,提到了 HyperOS 2.0 对内存管理的优化。
看到这里感觉非常迷惑,印象中 Linux 的页大小是一个固定的值,和 CPU 的支持相关,一般都是用 4K ,Android 15 要改成 16K ,小米是怎么实现动态的页大小的?
另外这么改不会造成兼容性问题吗? Android 15 要改成 16k 页都需要一些应用重新编译,动态的岂不是更难适配?
在极客湾评测小米 15 的视频中,提到了 HyperOS 2.0 对内存管理的优化。
看到这里感觉非常迷惑,印象中 Linux 的页大小是一个固定的值,和 CPU 的支持相关,一般都是用 4K ,Android 15 要改成 16K ,小米是怎么实现动态的页大小的?
另外这么改不会造成兼容性问题吗? Android 15 要改成 16k 页都需要一些应用重新编译,动态的岂不是更难适配?
1
NealLason Oct 26, 2024
其实就是 Huge TLB 技术,ARM MMU 硬件支持的。
https://docs.kernel.org/admin-guide/mm/hugetlbpage.html |
3
Chinsung Oct 26, 2024
OS 要实现动态页的话,OS 在整个页面汰换和分配算法上要做非常巨大并且深入的改变,按照他的这种说法,应用层申请内存的部分大概率也得重写(指定具体大小的页,或者由 OS 经过一定类似学习的算法来改变给这个应用分配的大小),这块其实想做好难度非常大,不然也不会那么多 OS 都还是固定页+大页支持了
|
4
cooltechbs Oct 26, 2024 via Android 2M 超大页不新鲜了,把固定 4K 页改成固定 16K 也不复杂(我记得苹果 M 系列就是用的 16K ),但是要实现 4/8/16/32/64K )自适应,我第一反应是有这个必要吗?
|
5
Victora Oct 26, 2024
@cooltechbs #4 我也觉得必要性不大。只能说好过什么都不做吧,实际性能有个 10%影响就不错了。
|
6
levelworm Oct 26, 2024
所谓动态的话,会不会是根据应用来?能看到源代码吗?
|
7
kingcanfish Oct 26, 2024 其实我更倾向于吹牛逼
|
9
dhb233 Oct 26, 2024
我的理解是,内存少的情况下,动态可以提升使用率的同时,提升性能。内存足够的情况下,全用 2M 页
|
10
FightPig Oct 26, 2024 现在小米的系统每次都吹进步,用起来发现和以前还一样
|
11
bxb100 Oct 26, 2024
不是太熟悉这个, 但是我一直有个疑问, 这种垃圾回收是不是性能地狱
|
12
DefoliationM Oct 26, 2024 用小米这么久了,估计 8 成是供应商技术,感觉小米很少会自己改底层的东西。
|
13
guiyumin Oct 26, 2024
@cooltechbs 有必要,linux 就正在研究怎么干,今天刚才在推特上看的,当然,这个还处于非常早期,因为工程太过于复杂了
|
14
guiyumin Oct 26, 2024
@DefoliationM 就是,这个动态内存技术是 linux 内核级别的优化,我觉得不应该是小米这个级别在搞
|
15
scys Oct 26, 2024
其实没啥小米级别,小米内核也是有很大一部分是 linux ,估计就是改了内核的内存分配方法,只是没有提交到开源社区。毕竟这是商业推动的,十几人,鏖战几个月足够小米弄出来了。
|
17
Yadomin OP 只能等小米开源内核再研究了🤔
|
18
maolaohei Oct 26, 2024 via Android
那个高斯模糊的替代方案简直是天才,同样效果,性能要求很低。
|
20
maolaohei Oct 26, 2024 via Android
@apples01 就是使用 gpu 当前界面生成的多级 mipmap 来合成,实现了近似高斯模糊的效果,而且相比高斯模糊性能要求非常低。
|
21
wuoty Oct 26, 2024
伙伴系统?
|
22
firstlove Oct 26, 2024 |
23
muapyw Oct 26, 2024
只要金凡敢开通抖音号,我就信了 hy2 吹的牛逼
|
24
xiuming Oct 26, 2024
记得 golang 也是内存分级 将对象分成了三类 8B 到 32KB ,总共 67 种跨度类的大小 还有内存对齐 ,小米后端也是挺多用 Golang 。
|
26
Donaldo Oct 26, 2024
这个东西在系统 framework 层应该是没法动?那如果是修改的 linux 内核,那他应该会开源吧(假设他遵守 GPL ),那到时候就能看到源码了。
|
28
liyafe1997 Oct 26, 2024
我感觉更倾向吹牛逼,先不说动态页,就算你改变页大小,用户空间的 binary 都要重新编译适配吧?
|
29
12101111 Oct 26, 2024
这个是 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 |
30
vsomeone Oct 26, 2024 via iPhone
我印象里 Linux 也支持 THP 透明大页,现在手机动辄十几个 G 的内存应该也开启了 THP 吧?感觉他这个视频像为了营销做的
|
31
DylanLiuH2O Oct 26, 2024
要是小米能发个论文写个专利啥的我就信了,不然可能就只是一些工程上的针对性调优,普适性未知,说起来确实感觉没有鸿蒙内核那么有含金量。
|
32
uriah Oct 26, 2024
不知道和最新的 Android 15 Beta 2 引入 16KB 内存页面支持。是不是一类
|
33
infreboot Oct 26, 2024 via iPhone
不信。流畅度可能是处理器更新带来的哈哈
|
34
WizardLeo Oct 26, 2024
@DefoliationM 如果是供应链技术,应该不止小米一家能接触到吧?应该不会作为主要宣传的内容才对。
|
36
ffnil Oct 27, 2024
linux 是 gpl 的吧,能看到源代码吗?
|
37
Yadomin OP |
38
Shaaaadow Oct 29, 2024
前内核开发者表示,极客湾讲的可能也有点片面了。小米的内核具体怎么实现的我不了解,但是搞 huge page 的主要目的不是为了降低 page fault 次数,而是降低 TLB miss 频率。
|
39
hwf Oct 29, 2024
说实话, 小米的 HyperOS 2 大部分优化,性能提升都是处理器带来的, 看看今年各大 OS 都在说性能提升多少多少, 动画多么多么流畅就知道了, 功耗下降多少多少, 都是处理器带来的
|
40
nod32vad Nov 1, 2024
我很好奇 HyperCore 的那个 CPU 空转时间降低也是他们自己搞的吗
|