|
|
欢迎注册论坛,享受更多奶昔会员权益!
您需要 登录 才可以下载或查看,没有账号?注册
×
内存优化:核心是不用,少用,快速使用。
不用:这个没啥讲的。砍业务砍功能就可以不用了。
少用:一个是减少加载到内存的数据。一个是加载到内存的数据占更少的空间
快速使用:一个是快速分配,避免关键路径耗时卡顿,一个是快速释放,别占着茅坑让给更紧急更重要的场景。
当然,上面的都可以通过业务功能角度进行拆解提优化方案。功能不同方案不同,思路类似:提前/并行/延后;降品质/降精细度;。。。
说下更通用的几个方案思路:
一般文件读写都要进page cache。 page cache 要走类似lru方式释放。 行业里面有提出针对 Android /data 等可读写分区 F2FS 文件系统 使用 uncached buffer io方案。 针对只读一次的数据,直接打标签稍后直接可以优先回收。
那能否不走page cache呢?
针对Android /system只读文件系统 EROFS 也在研发 direct io方案。减少page开销,提高读取速度。
如果要走page cache呢?
又有个方案:对干净的page cache 走 zcache 内存池压缩方案。减少内存占用。释放也能直接释放, 没有回写问题。
提到压缩,也有方案。
针对zram ,Android提供了多压缩算法选择。可以根据负载等场景动态选择压缩算法。
压缩也有方案,比如卸载到GPU做压缩。
zram后的swap也有优化方案,就是彻底重构swap代码。
上面提到的方案绝大部分都能在Linux kernel提交记录里面发现。感兴趣的可以去翻一翻。 |
|