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

61 天前
 Yadomin

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

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

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

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

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1083766

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX