0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Gigantic巨页与CMA的完全结合

Linux阅码场 来源:Linuxer 2020-07-01 14:46 次阅读

Facebook的Roman Gushcin发送的这个patch把Gigantic巨页(SIZE:1GB)与CMA进行了一个完美的结合:

https://lkml.org/lkml/2020/3/9/1135

CMA有利于在开机的时候就预留一大片内存,但是这片内存如果不被cma_alloc()申请走,则可被movable的页面复用,并不会造成直接的浪费。

Linux的Gigantic hugepage则要求能够在运行时通过

echo 10 > /sys/kernel/mm/hugepages/hugepages-1048576kB/nr_hugepages

这样的方法能申请一定数量的1GB Gigantic巨页,由于运行时内存碎片化掉了,这种1GB的Gigantic巨页很可能申请不到。通过CMA的方法,则可以让这种申请在运行时成功。

所以整个故事是:

CMA比如预留4GB内存专门供给hugetlb,如果没有人去进行Gigantic巨页设置,则这个4GB就平时被applications的movable页面使用掉了。

如果有人通过

echo 1 > /sys/kernel/mm/hugepages/hugepages-1048576kB/nr_hugepages

拿走1GB,则这1GB就被从CMA拿走,剩下的3GB仍然可以被movable page使用。

用户可以在开机的时候通过hugetlb_cma bootargs来设置CMA的大小,如果是NUMA架构的(假设有4个NUMA NODE),设置hugetlb_cma=4GB大小,则每个NUMA节点会分配到1GB大小的CMA。

从代码看起来,现在申请1GB的gigantic页面的时候,如果有这种CMA区域,是先走CMA区域的:

释放的时候则是也先看有无这种CMA:

如果这种CMA根本不存在,还是会走到老的代码路径:

alloc_contig_pages(nr_pages, gfp_mask, nid, nodemask);

free_contig_range(page_to_pfn(page), 1 << order);

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 内存
    +关注

    关注

    8

    文章

    2767

    浏览量

    72752
  • CMA
    CMA
    +关注

    关注

    0

    文章

    24

    浏览量

    9728

原文标题:Gigantic巨页与CMA的完全结合

文章出处:【微信号:LinuxDev,微信公众号:Linux阅码场】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    loongarch是如何区分大和基本页的?

    在开发loongarch架构的操作系统的时候,我遇到了这样的问题:我不知道硬件是如何区分大和基本页的。 如图,关于基本页和大的格式在手册中是这样的叙述的: 即便手册中阐述了基本页和大的格式差别
    发表于 03-30 12:05

    【产品单】4G IoT开发套件V3

    【产品单】4G IoT开发套件V3 产品单见下方附件*附件:4G IoT开发套件V3--20240318.pdf
    发表于 03-16 14:13

    【产品单】5G AIoT开发套件V2

    【产品单】5G AIoT开发套件V2 产品单见下方附件*附件:5G AIoT开发套件V2--20240316(1).pdf
    发表于 03-15 20:31

    吉安市电子信息产品检验检测中心通过省级CMA资质认定专家现场评审

    3月13日,吉安市电子信息产品检验检测中心顺利通过了CMA(省级)检测资质认定专家现场评审。区党工委委员、管委会副主任戴志敏出席评审座谈会。
    的头像 发表于 03-14 15:01 200次阅读

    STM32MP135使用HAL库驱动2.4寸刷新率低的原因?

    使用STM32MP135 驱动2.4寸 LCD屏幕,刷新率低; 测试条件:(HAL库) 1、硬件SPI;2、IO操作使用寄存器配置;3、SPI时钟达到16M; SPI配置如下: IO操作配置如下: 之前使用MCU操作,刷新率都没有这么低; 实际现象(连拍两张):
    发表于 03-07 07:17

    CMA着手对苹果、谷歌等美科技巨头进行数据披露与开放调查

    针对数码市场份额问题,CMA已筹备设立专门的反垄断团队,构建“战略市场地位”(SMS)标准。据称,此团队将进一步细化分割工作,以便更好地监管个别领军企业。
    的头像 发表于 01-12 11:35 172次阅读

    一文了解刚柔结合制造过程

    一文了解刚柔结合制造过程
    的头像 发表于 12-04 16:22 291次阅读

    谁知道FatFs中代码存在的意义是什么?

    FatFs中代码存在的意义是什么?
    发表于 10-16 07:58

    单片机的块擦除与擦除是一样的吗?

    单片机的块擦除与擦除是一样的么
    发表于 10-10 06:24

    CNAS和CMA是什么意思?两者有什么相同点和区别?

    CNAS是Chinanationalaccreditationserviceforconformityasssment(中国国家认证委员会合格评估)的缩写,和CMA不一样,CNAS是国际认可的通用
    的头像 发表于 08-16 10:28 1798次阅读

    新唐车规应用 完全掌握爱车信息

    新唐车规应用 完全掌握爱车信息
    的头像 发表于 08-11 14:55 226次阅读
    新唐车规应用 <b class='flag-5'>完全</b>掌握爱车信息

    NVIDIA Turing推动VR迈向完全沉浸式体验

    NVIDIA Turing 推动 VR 迈向完全沉浸式体验
    的头像 发表于 08-01 15:05 373次阅读

    请问如何使用UART printf印出不同的缓存器值?

    如何使用 UART printf 印出不同的缓存器值?
    发表于 06-16 06:41

    MCU向量重新映射的问题怎么解决?

    最近用上了新唐的MCU,向量重新映射的问题一直无法解决。 #defineAPPLICATION_START_ADDR(0x6000) __asmINT32UspChange(INT32U
    发表于 06-15 13:23

    PIE-Engine核心产品通过CMA和CNAS双认证!

    近期,PIE-Engine时空数据服务平台和PIE-Engine遥感处理服务平台产品通过 CMA 和 CNAS 双权威认证
    的头像 发表于 06-14 16:54 686次阅读