在嵌入式項目預(yù)研前期階段,我們常常需要對某個平臺進行資源和性能方面的評估,以下是最常見的一些評估指標:
1、內(nèi)存評估
系統(tǒng)內(nèi)存空間通過free、cat /proc/meminfo或者top,查看內(nèi)存情況。一般有這樣一個經(jīng)驗公式:
-
應(yīng)用程序可用內(nèi)存/系統(tǒng)物理內(nèi)存>70%時,表示系統(tǒng)內(nèi)存資源非常充足,不影響系統(tǒng)性能;
-
20%<應(yīng)用程序可用內(nèi)存/系統(tǒng)物理內(nèi)存<70%時,表示系統(tǒng)內(nèi)存資源基本能 滿足應(yīng)用需求,暫時不影響系統(tǒng)性能;
-
應(yīng)用程序可用內(nèi)存/系統(tǒng)物理內(nèi) 存<20%時,表示系統(tǒng)內(nèi)存資源緊缺,需要增加系統(tǒng)內(nèi)存;
$free
totalusedfreesharedbuff/cacheavailable
Mem:123496215127513211322685263416
Swap:000
$cat/proc/meminfo
MemTotal: 123496 kB //所有可用的內(nèi)存大小,物理內(nèi)存減去預(yù)留位和內(nèi)核使用。系統(tǒng)從加電開始到引導(dǎo)完成,firmware/BIOS要預(yù)留一些內(nèi)存,內(nèi)核本身要占用一些內(nèi)存,最后剩下可供內(nèi)核支配的內(nèi)存就是MemTotal。這個值在系統(tǒng)運行期間一般是固定不變的,重啟會改變。
MemFree: 75132 kB //表示系統(tǒng)尚未使用的內(nèi)存。
MemAvailable:63400kB//真正的系統(tǒng)可用內(nèi)存,系統(tǒng)中有些內(nèi)存雖然已被使用但是可以回收的,比如cache/buffer、slab都有一部分可以回收,所以這部分可回收的內(nèi)存加上MemFree才是系統(tǒng)可用的內(nèi)存
Buffers:5644kB//用來給塊設(shè)備做緩存的內(nèi)存,(文件系統(tǒng)的metadata、pages)
Cached:19040kB//分配給文件緩沖區(qū)的內(nèi)存,例如vi一個文件,就會將未保存的內(nèi)容寫到該緩沖區(qū)
SwapCached:0kB//被高速緩沖存儲用的交換空間(硬盤的swap)的大小
Active:20356kB//經(jīng)常使用的高速緩沖存儲器頁面文件大小
Inactive:12628kB//不經(jīng)常使用的高速緩沖存儲器文件大小
Active(anon):9412kB//活躍的匿名內(nèi)存
Inactive(anon):20kB//不活躍的匿名內(nèi)存
Active(file):10944kB//活躍的文件使用內(nèi)存
Inactive(file):12608kB//不活躍的文件使用內(nèi)存
Unevictable:0kB//不能被釋放的內(nèi)存頁
Mlocked:0kB//系統(tǒng)調(diào)用mlock
SwapTotal:0kB//交換空間總內(nèi)存
SwapFree:0kB//交換空間空閑內(nèi)存
Dirty:0kB//等待被寫回到磁盤的
Writeback:0kB//正在被寫回的
AnonPages:8300kB//未映射頁的內(nèi)存/映射到用戶空間的非文件頁表大小
Mapped:11480kB//映射文件內(nèi)存
Shmem:1132kB//已經(jīng)被分配的共享內(nèi)存
KReclaimable:2132kB//內(nèi)核內(nèi)存,內(nèi)存壓力時內(nèi)核嘗試回收
Slab:8240kB//內(nèi)核數(shù)據(jù)結(jié)構(gòu)緩存
SReclaimable:2132kB//可收回slab內(nèi)存
SUnreclaim:6108kB//不可收回slab內(nèi)存
KernelStack:568kB//內(nèi)核消耗的內(nèi)存
PageTables:516kB//管理內(nèi)存分頁的索引表的大小
NFS_Unstable:0kB//不穩(wěn)定頁表的大小
Bounce:0kB//在低端內(nèi)存中分配一個臨時buffer作為跳轉(zhuǎn),把位于高端內(nèi)存的緩存數(shù)據(jù)復(fù)制到此處消耗的內(nèi)存
WritebackTmp:0kB//FUSE用于臨時寫回緩沖區(qū)的內(nèi)存
CommitLimit:61748kB//系統(tǒng)實際可分配內(nèi)存
Committed_AS:58568kB//系統(tǒng)當前已分配的內(nèi)存
VmallocTotal:1048372kB//預(yù)留的虛擬內(nèi)存總量
VmallocUsed:1288kB//已經(jīng)被使用的虛擬內(nèi)存
VmallocChunk:0kB//可分配的最大的邏輯連續(xù)的虛擬內(nèi)存
Percpu:32kB//percpu機制使用的內(nèi)存
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:代表該文件系統(tǒng)時哪個分區(qū),所以列出的是設(shè)備名稱。
- 1K-blocks:說明下面的數(shù)字單位是1KB,可利用-h或-m來改變單位大小,也可以用-B來設(shè)置。
- Used:已經(jīng)使用的空間大小。
- Available:剩余的空間大小。
- Use%:磁盤使用率。如果使用率在90%以上時,就需要注意了,避免磁盤容量不足出現(xiàn)系統(tǒng)問題,尤其是對于文件內(nèi)容增加較快的情況(如/home、/var/spool/mail等)。
- Mounted on:磁盤掛載的目錄,即該磁盤的內(nèi)容可以在掛載目錄下面找到。
$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//用戶態(tài)的時間
sys0m0.110s//內(nèi)核態(tài)的時間
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操作系統(tǒng)中衡量 計算機處理器
運行速度的一種尺度。Bogo是Bogus(偽)的意思;MIPS是每秒百萬條指令。
5、cpu占用情況
$uptime
1601up6:40,loadaverage:1.27,1.27,1.39
- 1601 :服務(wù)器事件
- 6:40 :當前服務(wù)器運行時長
- load average:這個輸出值,這三個值的大小一般不能大于系統(tǒng)CPU的個數(shù),例如,本輸出中系統(tǒng)有8個CPU,如果load average的三個值長期大于8時,說明CPU很繁忙,負載很高,可能會影響系統(tǒng)性能,但是偶爾大于8時,倒不用擔心,一般不會影響系統(tǒng)性能。相反,如果load average的輸出值小于CPU的個數(shù),則表示CPU還有空閑的時間片,比如本例中的輸出,CPU是非常空閑的。
6、系統(tǒng)運行情況
$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
一般 經(jīng)驗
- user% + sys%< 70%狀態(tài)良好
- user% + sys%= 85% 狀態(tài)報警
- user% + sys% >=90% 狀態(tài)糟糕
7、其他參數(shù)
系統(tǒng)現(xiàn)在參數(shù)
$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、進程資源
新建一個進程需要最小的內(nèi)存空間本機為8M,具體可通過ulimit -s查看
$ulimit-s
8192
審核編輯 :李倩
-
嵌入式
+關(guān)注
關(guān)注
5141文章
19537瀏覽量
315141 -
Linux
+關(guān)注
關(guān)注
87文章
11465瀏覽量
212819 -
磁盤
+關(guān)注
關(guān)注
1文章
388瀏覽量
25662
原文標題:嵌入式linux綜合性能評估
文章出處:【微信號:嵌入式應(yīng)用研究院,微信公眾號:嵌入式應(yīng)用研究院】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
嵌入式開發(fā)入門指南:從零開始學習嵌入式
嵌入式開發(fā)必備-RK3562演示Linux常用系統(tǒng)查詢命令(上)觸覺智能出品

嵌入式 Linux 操作系統(tǒng)配置
【北京迅為】i.mx8mm嵌入式linux開發(fā)指南第四篇 嵌入式Linux系統(tǒng)移植篇第六十九章uboot移植

AMD 面向嵌入式系統(tǒng)推出高能效 EPYC 嵌入式 8004 系列
嵌入式主板是什么意思?嵌入式主板全面解析
七大嵌入式GUI盤點
嵌入式linux開發(fā)的基本步驟有哪些?
嵌入式linux開發(fā)板怎么操作
嵌入式linux開發(fā)板芯片的工作原理
【出版發(fā)行】嵌入式系統(tǒng)原理與開發(fā)——基于RISC-V和Linux系統(tǒng)

專家力薦|《嵌入式系統(tǒng)原理與開發(fā)——基于RISC-V和Linux系統(tǒng)》新書發(fā)售

從菜鳥到大牛!嵌入式完整學習路線:STM32單片機-RTOS-Linux

評論