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

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

3天内不再提示

嵌入式linux综合性能评估

嵌入式应用研究院 来源:嵌入式应用研究院 2023-01-04 15:04 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

嵌入式项目预研前期阶段,我们常常需要对某个平台进行资源和性能方面的评估,以下是最常见的一些评估指标:
1、内存评估

系统内存空间通过free、cat /proc/meminfo或者top,查看内存情况。一般有这样一个经验公式:

  • 应用程序可用内存/系统物理内存>70%时,表示系统内存资源非常充足,不影响系统性能;

  • 20%<应用程序可用内存/系统物理内存<70%时,表示系统内存资源基本能 满足应用需求,暂时不影响系统性能;

  • 应用程序可用内存/系统物理内 存<20%时,表示系统内存资源紧缺,需要增加系统内存;

$free
totalusedfreesharedbuff/cacheavailable
Mem:123496215127513211322685263416
Swap:000

$cat/proc/meminfo
MemTotal: 123496 kB //所有可用的内存大小,物理内存减去预留位和内核使用。系统从加电开始到引导完成,firmware/BIOS要预留一些内存,内核本身要占用一些内存,最后剩下可供内核支配的内存就是MemTotal。这个值在系统运行期间一般是固定不变的,重启会改变。
MemFree: 75132 kB //表示系统尚未使用的内存。
MemAvailable:63400kB//真正的系统可用内存,系统中有些内存虽然已被使用但是可以回收的,比如cache/buffer、slab都有一部分可以回收,所以这部分可回收的内存加上MemFree才是系统可用的内存
Buffers:5644kB//用来给块设备做缓存的内存,(文件系统的metadata、pages)
Cached:19040kB//分配给文件缓冲区的内存,例如vi一个文件,就会将未保存的内容写到该缓冲区
SwapCached:0kB//被高速缓冲存储用的交换空间(硬盘的swap)的大小
Active:20356kB//经常使用的高速缓冲存储器页面文件大小
Inactive:12628kB//不经常使用的高速缓冲存储器文件大小
Active(anon):9412kB//活跃的匿名内存
Inactive(anon):20kB//不活跃的匿名内存
Active(file):10944kB//活跃的文件使用内存
Inactive(file):12608kB//不活跃的文件使用内存
Unevictable:0kB//不能被释放的内存页
Mlocked:0kB//系统调用mlock
SwapTotal:0kB//交换空间总内存
SwapFree:0kB//交换空间空闲内存
Dirty:0kB//等待被写回到磁盘的
Writeback:0kB//正在被写回的
AnonPages:8300kB//未映射页的内存/映射到用户空间的非文件页表大小
Mapped:11480kB//映射文件内存
Shmem:1132kB//已经被分配的共享内存
KReclaimable:2132kB//内核内存,内存压力时内核尝试回收
Slab:8240kB//内核数据结构缓存
SReclaimable:2132kB//可收回slab内存
SUnreclaim:6108kB//不可收回slab内存
KernelStack:568kB//内核消耗的内存
PageTables:516kB//管理内存分页的索引表的大小
NFS_Unstable:0kB//不稳定页表的大小
Bounce:0kB//在低端内存中分配一个临时buffer作为跳转,把位于高端内存的缓存数据复制到此处消耗的内存
WritebackTmp:0kB//FUSE用于临时写回缓冲区的内存
CommitLimit:61748kB//系统实际可分配内存
Committed_AS:58568kB//系统当前已分配的内存
VmallocTotal:1048372kB//预留的虚拟内存总量
VmallocUsed:1288kB//已经被使用的虚拟内存
VmallocChunk:0kB//可分配的最大的逻辑连续的虚拟内存
Percpu:32kB//percpu机制使用的内存
2、磁盘评估

获取磁盘空间

$df-h
FilesystemSizeUsedAvailableUse%Mountedon
/dev/root6.0M6.0M0100%/rom
tmpfs60.3M1.1M59.2M2%/tmp
/dev/mtdblock623.8M9.0M14.8M38%/overlay
overlayfs:/overlay23.8M9.0M14.8M38%/
tmpfs512.0K0512.0K0%/dev
  • Filesystem:代表该文件系统时哪个分区,所以列出的是设备名称。
  • 1K-blocks:说明下面的数字单位是1KB,可利用-h或-m来改变单位大小,也可以用-B来设置。
  • Used:已经使用的空间大小。
  • Available:剩余的空间大小。
  • Use%:磁盘使用率。如果使用率在90%以上时,就需要注意了,避免磁盘容量不足出现系统问题,尤其是对于文件内容增加较快的情况(如/home、/var/spool/mail等)。
  • Mounted on:磁盘挂载的目录,即该磁盘的内容可以在挂载目录下面找到。
$cat/proc/partitions
majorminor#blocksname

310192mtdblock0
31164mtdblock1
31264mtdblock2
31332448mtdblock3
3141962mtdblock4
31530485mtdblock5
31624384mtdblock6
3、磁盘写入速度评估
$timeddif=/dev/urandomof=ranfilebs=1Mcount=1
1+0recordsin
1+0recordsout

real0m0.126s//程序的实际运行时间
user0m0.000s//用户态的时间
sys0m0.110s//内核态的时间
4、CPU评估

获取CPU信息

$cat/proc/cpuinfo
processor:0
modelname:ARMv7Processorrev2(v7l)
BogoMIPS:298.80
Features:halfthumbfastmultvfpedspthumbeeneonvfpv3tlsvfpd32
CPUimplementer:0x41
CPUarchitecture:7
CPUvariant:0x3
CPUpart:0xc08
CPUrevision:2

Hardware:GenericAM33XX(FlattenedDeviceTree)
Revision:0000
Serial:0000000000000000

BogoMIPS Linux操作系统中衡量 计算机处理器

运行速度的一种尺度。Bogo是Bogus(伪)的意思;MIPS是每秒百万条指令。

5、cpu占用情况
$uptime
1601up6:40,loadaverage:1.27,1.27,1.39
  • 1601 :服务器事件
  • 6:40 :当前服务器运行时长
  • load average:这个输出值,这三个值的大小一般不能大于系统CPU的个数,例如,本输出中系统有8个CPU,如果load average的三个值长期大于8时,说明CPU很繁忙,负载很高,可能会影响系统性能,但是偶尔大于8时,倒不用担心,一般不会影响系统性能。相反,如果load average的输出值小于CPU的个数,则表示CPU还有空闲的时间片,比如本例中的输出,CPU是非常空闲的。
6、系统运行情况
$top
Mem:48420Kused,75076Kfree,1132Kshrd,5644Kbuff,19040Kcached
CPU:30%usr68%sys0%nic0%idle0%io0%irq0%sirq
Loadaverage:1.051.141.062/716586
PIDPPIDUSERSTATVSZ%VSZ%CPUCOMMAND
72rootSW00%2%[ksoftirqd/0]
60645894rootS4677238%1%./myAPP

一般 经验

  • user% + sys%< 70%状态良好
  • user% + sys%= 85% 状态报警
  • user% + sys% >=90% 状态糟糕
7、其他参数

系统现在参数

$ulimit-a
corefilesize(blocks,-c)unlimited
datasegsize(kbytes,-d)unlimited
schedulingpriority(-e)0
filesize(blocks,-f)unlimited
pendingsignals(-i)3814
maxlockedmemory(kbytes,-l)64
maxmemorysize(kbytes,-m)unlimited
openfiles(-n)1024
pipesize(512bytes,-p)8
POSIXmessagequeues(bytes,-q)819200
real-timepriority(-r)0
stacksize(kbytes,-s)8192
cputime(seconds,-t)unlimited
maxuserprocesses(-u)3814
virtualmemory(kbytes,-v)unlimited
filelocks(-x)unlimited
8、进程资源

新建一个进程需要最小的内存空间本机为8M,具体可通过ulimit -s查看

$ulimit-s
8192


审核编辑 :李倩


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

    关注

    5188

    文章

    20180

    浏览量

    329276
  • Linux
    +关注

    关注

    88

    文章

    11635

    浏览量

    218107
  • 磁盘
    +关注

    关注

    1

    文章

    394

    浏览量

    26307

原文标题:嵌入式linux综合性能评估

文章出处:【微信号:嵌入式应用研究院,微信公众号:嵌入式应用研究院】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    从小白到大牛:Linux嵌入式系统开发的完整指南

    从小白到大牛:Linux嵌入式系统开发的完整指南 一、小白入门:搭建 Linux 嵌入式开发的认知地基​ 对于零基础学习者,首先要打破 “嵌入式
    发表于 12-16 10:42

    开源 | 60余套STM32单片机、嵌入式Linux、物联网、人工智能项目(开发板+教程+源码)

    嵌入式实战项目推荐15个嵌入式Linux+Qt综合应用项目,涉及家居、医疗、农业等多种应用领域,案例中使用了嵌入式、物联网、人工智能多技术,
    的头像 发表于 12-04 11:42 215次阅读
    开源 | 60余套STM32单片机、<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>、物联网、人工智能项目(开发板+教程+源码)

    嵌入式与FPGA的区别

    应用。 FPGA的开发是逻辑实现+约束+综合+仿真,嵌入式的开发是编码+编译+调试,如果是对数字电路设计感兴趣,可以考虑FPGA。 ⭕在了解下就业机会哪个多? ✅1、嵌入式的就业机会很多,优点就是就业容易,因为
    发表于 11-20 07:12

    嵌入式Linux新手入门:为什么迅为RK3568+迅为资料是黄金组合

    嵌入式Linux新手入门:为什么迅为RK3568+迅为资料是黄金组合
    的头像 发表于 11-04 14:05 277次阅读
    <b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>新手入门:为什么迅为RK3568+迅为资料是黄金组合

    嵌入式需要掌握哪些核心技能?

    嵌入式需要掌握哪些核心技能? 若想通过学习嵌入式技术提升就业竞争力,需重点掌握C语言、嵌入式硬件架构、RTOS/Linux开发、通信协议四大核心技能,并结合行业需求积累项目经验。
    发表于 10-21 16:25

    Microchip SAMA7G54-EK评估套件:为高性能嵌入式系统打造的全功能平台

    功耗嵌入式微处理器 (MPU),运行频率高达1GHz。该套件由主流Linux发行版、裸机软件框架和RTOS提供支持。这样即可轻松开始开发。该套件包括板载嵌入式调试器,无需外部工具即可进行编程或调试。
    的头像 发表于 10-13 16:38 665次阅读
    Microchip SAMA7G54-EK<b class='flag-5'>评估</b>套件:为高<b class='flag-5'>性能</b><b class='flag-5'>嵌入式</b>系统打造的全功能平台

    AMD 2025.1版嵌入式软件和工具的新增功能

    AMD 2025.1 版嵌入式软件和工具是面向新一代嵌入式系统开发而打造的综合平台,全面加速概念构想到部署落地。
    的头像 发表于 08-15 15:32 1067次阅读

    盘点嵌入式就业所需要的技能有哪些?

    基础,能够进行高性能计算和数据处理。 - 了解自动驾驶技术的基本原理,如传感器融合、路径规划等。 - 具备良好的沟通能力和团队合作精神,能够与不同领域的工程师协作。 2.智能手机行业: - 熟悉嵌入式编程
    发表于 08-11 15:43

    怎么结合嵌入式Linux,和FPGA三个方向达到一个均衡发展?

    嵌入式领域,不少人都怀揣着让嵌入式Linux 和 FPGA 三个方向实现均衡发展的梦想,然而实践中却面临诸多挑战。就像备受瞩目的全栈工程师稚晖君,他从大学玩单片机起步,凭借将智能算法融入
    的头像 发表于 06-25 10:08 666次阅读
    怎么结合<b class='flag-5'>嵌入式</b>,<b class='flag-5'>Linux</b>,和FPGA三个方向达到一个均衡发展?

    Linux嵌入式和单片机嵌入式的区别?

    :成本较低,适合预算有限的项目。 Linux嵌入式 :成本较高,适合对功能和性能有较高要求的项目。 8. 社区和支持 : 单片机嵌入式 :社区和支持相对较小,但也有一些专业的论坛
    发表于 06-20 09:46

    嵌入式开发入门指南:从零开始学习嵌入式

    特定功能的计算机系统,广泛应用于智能家居、工业控制、医疗设备、车载系统等领域。 2. 学习嵌入式开发的前置知识熟悉C语言编程掌握基本的数据结构与算法了解数字电路与微控制器原理熟悉Linux操作系统
    发表于 05-15 09:29

    硬核升级!华清远见STM32MP157驱动开发课程助力嵌入式Linux底层开发入门进阶

    嵌入式Linux系统开发中,驱动程序开发是一项关键技术,它作为硬件与软件之间的桥梁,实现了操作系统对硬件设备的控制。相较于嵌入式Linux应用开发,驱动开发由于涉及底层硬件且抽象程度
    的头像 发表于 04-03 16:40 741次阅读
    硬核升级!华清远见STM32MP157驱动开发课程助力<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>底层开发入门进阶

    怎么嵌入式linux下控制dlp?

    请问怎么嵌入式linux 下控制dlp,有没有支持
    发表于 03-03 07:02

    飞凌嵌入式i.MX8M Mini核心板已支持Linux6.1

    飞凌嵌入式FETMX8MM-C核心板现已支持Linux6.1系统,此次升级不仅使系统功能更加丰富,还通过全新BSP实现了内存性能的显著提升。
    的头像 发表于 01-10 09:56 2825次阅读
    飞凌<b class='flag-5'>嵌入式</b>i.MX8M Mini核心板已支持<b class='flag-5'>Linux</b>6.1

    嵌入式开发必备-RK3562演示Linux常用系统查询命令(上)触觉智能出品

    实用干货!嵌入式开发学习必备-RK3562演示Linux常用系统查询命令(上)关注触觉智能持续为大家带来更多嵌入式开发内容
    的头像 发表于 12-31 10:51 117次阅读
    <b class='flag-5'>嵌入式</b>开发必备-RK3562演示<b class='flag-5'>Linux</b>常用系统查询命令(上)触觉智能出品