前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >嵌入式linux综合性能评估

嵌入式linux综合性能评估

作者头像
杨源鑫
发布2023-02-16 14:55:49
9030
发布2023-02-16 14:55:49
举报
文章被收录于专栏:嵌入式开发圈

干货福利,第一时间送达! 在嵌入式项目预研前期阶段,我们常常需要对某个平台进行资源和性能方面的评估,以下是最常见的一些评估指标:

1、内存评估

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

  • 应用程序可用内存/系统物理内存>70%时,表示系统内存资源非常充足,不影响系统性能;
  • 20%<应用程序可用内存/系统物理内存<70%时,表示系统内存资源基本能 满足应用需求,暂时不影响系统性能;
  • 应用程序可用内存/系统物理内 存<20%时,表示系统内存资源紧缺,需要增加系统内存;
代码语言:javascript
复制
$ free
              total        used        free      shared  buff/cache   available
Mem:         123496       21512       75132        1132       26852       63416
Swap:             0           0           0

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

获取磁盘空间

代码语言:javascript
复制
$ df -h
Filesystem                Size      Used Available Use% Mounted on
/dev/root                 6.0M      6.0M         0 100% /rom
tmpfs                    60.3M      1.1M     59.2M   2% /tmp
/dev/mtdblock6           23.8M      9.0M     14.8M  38% /overlay
overlayfs:/overlay       23.8M      9.0M     14.8M  38% /
tmpfs                   512.0K         0    512.0K   0% /dev
  • Filesystem:代表该文件系统时哪个分区,所以列出的是设备名称。
  • 1K-blocks:说明下面的数字单位是1KB,可利用-h或-m来改变单位大小,也可以用-B来设置。
  • Used:已经使用的空间大小。
  • Available:剩余的空间大小。
  • Use%:磁盘使用率。如果使用率在90%以上时,就需要注意了,避免磁盘容量不足出现系统问题,尤其是对于文件内容增加较快的情况(如/home、/var/spool/mail等)。
  • Mounted on:磁盘挂载的目录,即该磁盘的内容可以在挂载目录下面找到。
代码语言:javascript
复制
$ cat /proc/partitions
major minor  #blocks  name

  31        0        192 mtdblock0
  31        1         64 mtdblock1
  31        2         64 mtdblock2
  31        3      32448 mtdblock3
  31        4       1962 mtdblock4
  31        5      30485 mtdblock5
  31        6      24384 mtdblock6
3、磁盘写入速度评估
代码语言:javascript
复制
$ time dd if=/dev/urandom of=ranfile bs=1M count=1
1+0 records in
1+0 records out

real    0m0.126s //程序的实际运行时间
user    0m0.000s //用户态的时间
sys     0m0.110s //内核态的时间
4、CPU评估

获取CPU信息

代码语言:javascript
复制
$ cat /proc/cpuinfo
processor       : 0
model name      : ARMv7 Processor rev 2 (v7l)
BogoMIPS        : 298.80
Features        : half thumb fastmult vfp edsp thumbee neon vfpv3 tls vfpd32
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x3
CPU part        : 0xc08
CPU revision    : 2

Hardware        : Generic AM33XX (Flattened Device Tree)
Revision        : 0000
Serial          : 0000000000000000

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

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

5、cpu占用情况
代码语言:javascript
复制
$ uptime
 16:10:01 up  6:40,  load average: 1.27, 1.27, 1.39
  • 16:10:01 :服务器事件
  • 6:40 :当前服务器运行时长
  • load average:这个输出值,这三个值的大小一般不能大于系统CPU的个数,例如,本输出中系统有8个CPU,如果load average的三个值长期大于8时,说明CPU很繁忙,负载很高,可能会影响系统性能,但是偶尔大于8时,倒不用担心,一般不会影响系统性能。相反,如果load average的输出值小于CPU的个数,则表示CPU还有空闲的时间片,比如本例中的输出,CPU是非常空闲的。
6、系统运行情况
代码语言:javascript
复制
$ top
Mem: 48420K used, 75076K free, 1132K shrd, 5644K buff, 19040K cached
CPU:  30% usr  68% sys   0% nic   0% idle   0% io   0% irq   0% sirq
Load average: 1.05 1.14 1.06 2/71 6586
  PID  PPID USER     STAT   VSZ %VSZ %CPU COMMAND
    7     2 root     SW       0   0%   2% [ksoftirqd/0]
 6064  5894 root     S    46772  38%   1% ./myAPP

一般 经验

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

系统现在参数

代码语言:javascript
复制
$ ulimit -a
core file size          (blocks, -c) unlimited
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 3814
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 3814
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
8、进程资源

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

代码语言:javascript
复制
$ ulimit -s
8192
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-01-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 嵌入式应用研究院 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、内存评估
  • 2、磁盘评估
  • 3、磁盘写入速度评估
  • 4、CPU评估
  • 5、cpu占用情况
  • 6、系统运行情况
  • 7、其他参数
  • 8、进程资源
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档