博客
关于我
Linux方案级ROM/RAM优化记录
阅读量:794 次
发布时间:2023-02-04

本文共 1566 字,大约阅读时间需要 5 分钟。

ROM/RAM优化实践指南:从量化到裁剪的全流程

在嵌入式系统开发中,优化ROM和RAM占用是降低系统成本、提升性能的重要环节。本文将从量化分析到优化实施的全流程,结合实践经验,提供一套系统化的解决方案。

一、量化存储空间

1.1 获取文件系统尺寸

通过遍历文件系统,统计各文件的大小,尤其是bin文件和库文件的占用情况。rootfs的大小可以通过分析rootfs.cpio等镜像文件获取。

1.2 分析ELF文件

使用sizereadelf -S工具,分析ELF文件的text、data、bss段占用情况。例如:

size vmlinuxreadelf -S vmlinux

输出结果如下:

4680576    3596750     247304    8524630     821356    vmlinux

1.3 内核子系统分析

通过find -name built-in.o | xargs size,分析内核中各模块的大小。排序结果可以帮助识别内核中占用空间最大的子系统。

1.4 符号分析

使用nm --size -r vmlinux,按占用空间排序,查看text、data、bss段的占用情况。例如:

nm --size -r vmlinux | head -100

1.5 Bloat-o-meter工具

用于检测编译间符号尺寸变化,例如:

./scripts/bloat-o-meter vmlinux.old vmlinux

输出结果如下:

add/remove: 11/6598 grow/shrink: 687/15668 up/down: 18226/-1662970 (-1644744)

二、RAM量化

2.1 内核Reserved内存

通过cat /sys/kernel/debug/memblock/reserved,查看内核预留内存的具体分配情况。

2.2 动态内存分析

使用/proc/meminfo,获取内存使用情况:

cat /proc/meminfo | grep "MemTotal:\|MemFree:\|Slab:\|VmallocUsed:\|PageTables:\|KernelStack:\|HardwareCorrupted:\|Bounce:\|Active:\|Inactive:\|Unevictable:\|HugePages_Total:\|CmaTotal:\|CmaFree:"

2.3 应用内存分析

通过/proc/[0-9]*/smapsprocrank,分析应用进程的内存使用情况。

三、优化策略

3.1 使用buildroot

在buildroot中,通过strip工具移除调试信息,选择-Os优化等级,降低编译结果的体积。

3.2 内核配置

在内核配置中,选择Optimize for size,通过-Os优化等级降低内核的体积。

3.3孤立库删除

通过readelf -d分析依赖关系,删除不依赖的孤立库。

3.4 删除冗余功能

根据实际需求,删除不必要的文件系统、硬件驱动、网络协议等。

3.5 使用busybox替代功能

通过配置CONFIG_USE_BB_PWD_GRP,移除不必要的库文件。

3.6 内置dtb文件

将dtb文件内置到vmlinux中,通过early_init_dt_scan函数解析dtb。

3.7 优化uboot加载流程

通过修改CONFIG_EXTRA_ENV_SETTINGS,优化uboot的加载方式。

四、持续优化

优化是一个持续的过程,需结合实际使用场景反馈调整。通过脚本化量化、自动化验证,提升优化效率。

通过以上方法,可以系统化地实现ROM和RAM的低成本裁剪,显著降低嵌入式系统的资源占用。

转载地址:http://yjkfk.baihongyu.com/

你可能感兴趣的文章
Linux学习总结(16)——CentOS 下 Nginx + Tomcat 配置负载均衡
查看>>
Linux学习总结(20)——Linux 文件夹结构和作用
查看>>
Linux学习总结(21)——CentOS7环境下FTP服务器的安装和配置
查看>>
Linux学习总结(26)——Shell常用命令总结
查看>>
Linux学习总结(28)——Linux主机加固
查看>>
Linux学习总结(2)——linux常用命令大全
查看>>
Linux学习总结(38)——Linux超实用的30个命令
查看>>
Linux学习总结(39)——系统管理员应该知道的 20 条 Linux 命令
查看>>
Linux学习总结(42)——Linux之Bash脚本入门学习
查看>>
Linux学习总结(44)——Linux操作系统基础知识
查看>>
Linux学习总结(45)——Linux服务器出现卡慢的基本解决方法
查看>>
Linux学习总结(51)——25个Linux服务器安全小贴士
查看>>
Linux学习总结(52)——主流 Linux 发行版性能对比
查看>>
Linux学习总结(56)——如何处理阿里云服务器上入侵的kdevtmpfsi 挖矿病毒
查看>>
Linux学习总结(5)——CentOS常用的目录文件操作命令
查看>>
Linux学习总结(5)——CentOS常用的目录文件操作命令
查看>>
Linux学习总结(62)——什么是堡垒机?为什么需要堡垒机?
查看>>
Linux学习总结(65)——Linux 服务器安全强化的七个步骤
查看>>
Linux学习总结(66)——CentOS7操作系统SSH安全加固
查看>>
Linux学习总结(69)——Linux 生成随机数的6种方法
查看>>