• 首页
  • 中国
  • OK6410A 开发板 (八) 81 linux-5.11 OK6410A 内存管理存在的问题及解决方案(补丁)总览

OK6410A 开发板 (八) 81 linux-5.11 OK6410A 内存管理存在的问题及解决方案(补丁)总览

2023-11-01 90浏览
百检网是一家专业的第三方检测平台,汇聚众多拥有权威资质的第三方检测机构为你提供一站式的检测服务,做检测就上百检网。百检网让检测从此检测,一份报告全国通用,专业值得信赖。

内存管理存在的问题及解决方案

内核物理内存管理方式 有4种

根据配置选一种

内核虚拟内存管理方式 有5种

4种用于异常/内核线程/用户进程内核态,1种用于进程用户态内存

以上的管理方式,不是**的,会造成很多问题:

问题 : 内存碎片/内存不足/无法申请到连续的物理页/4KB页表导致的内存开销增加与tlb的命中率的降低

方案 : 内存规整/内存释放/CMA/大内存页(hugepages)

注意 : 大内存页 和 传统的 4KB 内存页 是 并存的 。 一部分内存用大内存页管理,另一部分内存还是用4KB内存页管理

内存碎片

内部碎片化和外部碎片化

三种方式可以碎片化整理

1.内存分配时(slowpath)直接进行碎片整理

2.kcompactd后台进程进行碎片整理

3.用户手动触发

echo 1 > /sys/devices/system/node/node0/compact

echo 1 > /proc/sys/vm/compact_memory

4KB页表导致的内存开销增加与tlb的命中率的降低

大内存页(一般是大于1G?) 需要 硬件的支持 :

也就是说 soc 要支持 1GB或大于1GB 的 内存页

应该是 armv8 开始支持的,因为armv7 *多支持4GB

armv8(实现有48bit)可以支持256TB 内存

armv7(32bit) 可以支持 4GB 内存, 因为地址总线的限制,访问不到 第 (4G + 1)B

虽然linux 可以在使用内存的时候才映射,可以将 4G以上的物理空间映射到4G以内的虚拟地址,但是物理上不能访问 4G 以上的物理空间

hugepages

对用户空间不透明

THP (Transparent Huge Pages)

对用户空间透明

页表级数

硬件上有个级数

系统上有个级数

为什么需要多级

多级的时候时候linux的处理过程

一级的时候,要不要填充完毕?

只需要填充完毕**级即可,即需要填充完毕

多级的时候,要不要填充完毕?

只需要填充完毕**级即可,即不需要填充第二级别以及后面的级别

内存释放

释放到硬盘(swap)

清空


百检网秉承“客户至上,服务为先,精诚合作,以人为本”的经营理念,始终站在用户的角度解决问题,为客户提供“一站购物式”的新奇检测体验,打开网站,像挑选商品一样简单,方便。打破行业信息壁垒,建构消费和检测机构之间高效的沟通平台