嵌入式技术
在嵌入式项目预研前期阶段,我们常常需要对某个平台进行资源和性能方面的评估,以下是最常见的一些评估指标:
1、内存评估
系统内存空间通过free、cat /proc/meminfo或者top,查看内存情况。一般有这样一个经验公式:
应用程序可用内存/系统物理内存>70%时,表示系统内存资源非常充足,不影响系统性能;
20%<应用程序可用内存/系统物理内存<70%时,表示系统内存资源基本能 满足应用需求,暂时不影响系统性能;
应用程序可用内存/系统物理内 存<20%时,表示系统内存资源紧缺,需要增加系统内存;
$ 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、磁盘评估
获取磁盘空间
$ 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:磁盘挂载的目录,即该磁盘的内容可以在挂载目录下面找到。
$ 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、磁盘写入速度评估
$ 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信息
$ 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占用情况
$ uptime 1601 up 6:40, load average: 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: 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、其他参数
系统现在参数
$ 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查看
$ ulimit -s 8192 编辑:黄飞
全部0条评论
快来发表一下你的评论吧 !