嵌入式 linux性能问题

这篇文章主要主要记录下我对 linux 开发板的一些性能工具的使用和各问题定位的学习和应用, 分4大块,基础知识,内存泄露的定位,cpu 性能的定位, 还有 coredump 文件分析。 主要是内存泄露的定位。不过,我觉得在定位这些问题首先应该对相关的代码有一定了解,因为对代码了解可以帮助我们更快的定位问题。

一. 基础知识


1.1 Linux 内核的 OOM 机制

Linux内核内存管理使用 OOM killer(Out-Of-Memory killer)机制,在系统内存不足时,选择性杀死一些进程以释放内存,以使系统继续运行。内核会通过特定的算法给每个进程计算一个分数来决定杀哪个进程,每个进程的 oom 分数可以 /proc/PID/oom_score 中找到。
防止重要的系统进程触发(OOM)机制而被杀死:可以设置参数 /proc/PID/oom_adj 为-17,可临时关闭 linux 内核的 OOM 机制。

1.2 glibc 内存管理
  • 理解 glibc malloc

    glibc 内存管理机制:为每个程序的每个线程维护一块内存,称为 arena,随着线程的增加会动态的增加 arena 的数量,arena 申请不回收,并且每次申请大块的内存,自己管理,进程释放并不会立马还给系统而是自己管理,只有当堆顶的内存大于 M_TRIM_THRESHOLD 的值 glibc 才会真正的还给系统。

  • 建议

  1. 对长期驻留的程序,并且会存在一瞬间猛增很多个线程的程序会出现内存爆增的现象,建议使用内存池的方式管理内存
  2. 建议后申请的内存尽量先释放,利于堆顶内存的合并释放,也会相应的会减小内存碎片
  3. glibc 的默认阈值是根据类似 pc 这样的设备设置的,并不适用于小内存的开发板,我们需要根据自己内存的大小和进程的线程数设置合适的阈值。
1.3 linux 的 proc 目录详解

https://www.cnblogs.com/DswCnblog/p/5780389.html

1.4 基础工具的使用

linux 常用的基础工具有 nm,readlf,file,
gdb,gdbserver,strace,pstrace</

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值