Linux内存分配、内存管理的一点分享

本文分享了作者在Linux内存管理方面的经验,包括ION、DRM GEM、CMA以及DMA HEAP的理解和应用。重点讨论了CMA内存借用与占用的权衡问题,提出CMA inactive的概念以避免借用导致的问题。同时提到了DMA HEAP作为ION的上游版本在内存框架中的作用,以及DRM GEM的优化需求。
摘要由CSDN通过智能技术生成

五年前从待机及功耗中,被迫接触ION(Android的内存分配接口)一直不觉得有资格写分享文档。今天是公司春节假期第一天,我搬回到这十年前位置,公司四周依旧如初那样空无一人,回荡的是键盘的声音。

...先大概写能记得的,年后来完善...

1. ION

最早期的ION我不及的很清楚,开始的时候更多是在适配接口,看到的是内核这部几个heap name,heap id,连框架我都没想明白。

真正认识ION的时候,是内核4.19版本(Android 9?)的时候,ION做大幅度修改,我才从这个删除过程看到ION的那些东西,也是从这个版本开始,ION回归它的最核心最初衷feature,就是内存分配。只是此时ION仍然是Android配套的代码,没有在Linux kernel主线。

2. DRM GEM

接触到DRM GEM也是一个从事该方面的好朋友离职后,公司再没有精通DRM GEM的人员,由于自身工作角色(或者说给其他人印象)就是遇到内核问题,就找‘他’,渐渐的我分析过若干DRM GEM的问题,比如secure video需要分配secure memory,而且不是Android系统,没有ION了,必须要DRM GEM;比如某个芯片调试过程遇到问题怀疑和IOMMU相关,希望跳过IOMMU先用CMA走下去,需要DRM GEM分配出CMA内存;比如某个芯片IOMMU不能用,只能用CMA,等等。

3. CMA

CMA是个很有意思的小模块,如果你看到page_alloc.c,一头雾水,回过头来看CMA

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值