专用的系统性能监控脚本作用每隔一段时间把 CPU、内存、DDR、CMA、ISP、MPP、ION、DRM、进程… 全部信息抓一遍用于定位runtime_monitor.sh#!/bin/shget_cpu_usage(){#脚本功能描述依据/proc/stat文件获取并计算CPU使用率#CPU时间计算公式CPU_TIMEusersystemniceidleiowaitirqsoftirq#CPU使用率计算公式cpu_usage[(user_2sys_2nice_2)-(user_1sys_1nice_1)]/(total_2-total_1)*100#默认时间间隔 TIME_INTERVAL5time$(date%s)LAST_CPU_INFO$(cat/proc/stat|grep-w cpu|awk{print $2,$3,$4,$5,$6,$7,$8})LAST_SYS_IDLE$(echo $LAST_CPU_INFO|awk{print $4})LAST_USER_BUSY$(echo $LAST_CPU_INFO|awk{print $1})LAST_SYS_BUSY$(echo $LAST_CPU_INFO|awk{print $3})LAST_TOTAL_CPU_T$(echo $LAST_CPU_INFO|awk{print $1$2$3$4$5$6$7})LAST_CPU_USAGE$(echo $LAST_CPU_INFO|awk{print $1$2$3})sleep ${TIME_INTERVAL}NEXT_CPU_INFO$(cat/proc/stat|grep-w cpu|awk{print $2,$3,$4,$5,$6,$7,$8})NEXT_SYS_IDLE$(echo $NEXT_CPU_INFO|awk{print $4})NEXT_USER_BUSY$(echo $NEXT_CPU_INFO|awk{print $1})NEXT_SYS_BUSY$(echo $NEXT_CPU_INFO|awk{print $3})NEXT_TOTAL_CPU_T$(echo $NEXT_CPU_INFO|awk{print $1$2$3$4$5$6$7})NExT_CPU_USAGE$(echo $NEXT_CPU_INFO|awk{print $1$2$3})#系统空闲时间 SYSTEM_IDLE$(echo ${NEXT_SYS_IDLE}${LAST_SYS_IDLE}|awk{print $1-$2})#系统使用时间 SYSTEM_BUSY$(echo ${NEXT_SYS_BUSY}${LAST_SYS_BUSY}|awk{print $1-$2})#用户使用时间 USER_BUSY$(echo ${NEXT_USER_BUSY}${LAST_USER_BUSY}|awk{print $1-$2})#用户系统nice时间 TOTAL_BUSY$(echo ${NExT_CPU_USAGE}${LAST_CPU_USAGE}|awk{print $1-$2})#CPU总时间TOTAL_TIME$(echo ${NEXT_TOTAL_CPU_T}${LAST_TOTAL_CPU_T}|awk{print $1-$2})#CPU总时间百分比CPU_USAGE$(echo ${TOTAL_BUSY}${TOTAL_TIME}|awk{printf %.2f, $1/$2*100})#用户时间百分比 CPU_USER_USAGE$(echo ${USER_BUSY}${TOTAL_TIME}|awk{printf %.2f, $1/$2*100})#系统时间百分比 CPU_sys_USAGE$(echo ${SYSTEM_BUSY}${TOTAL_TIME}|awk{printf %.2f, $1/$2*100})echoCPU Usage:${CPU_USAGE}%$time echoCPU UserUsage:${CPU_USER_USAGE}%$time echoCPU SysUsage:${CPU_sys_USAGE}%$time}get_ion_info(){if[-f/sys/kernel/debug/ion/heaps/cma];then echoCMA:cat/sys/kernel/debug/ion/heaps/cmaelseechoions cma heap read failedfiif[-f/sys/kernel/debug/ion/heaps/vmalloc];then echoVmalloc:cat/sys/kernel/debug/ion/heaps/vmallocelseechoions vmalloc heap read failedfi}get_drm_info(){if[-f/sys/kernel/debug/dri/0/mm_dump];then echoDRM:cat/sys/kernel/debug/dri/0/mm_dumpelseechodrm read failedfi}do_exit(){echodo_exitexit0}show_usage(){echoechoUsage: $0 [-i seconds] [-p \pid list\]...echo -i \t\tinterval(second),default value is 30echo -p \t\tpid listechoechoexample: $0 -i 30 -p \233 513 679\}traponCtrlCINT SIGTERM SIGINT SIGQUIT SIGTRAP SIGABRT SIGKILL SIGSTOP SIGHUP SIGSEGV SIGTSTP functiononCtrlC(){echoCtrlC is capturedechoexit...logcvr_auto_tests pid $$kill-9$$ exit}echoechoMemory Monitor Version: $version echo[Kernel]: $(cat/proc/version)echoecho /proc/cmdline cat/proc/cmdline echo /proc/cpuinfo cat/proc/cpuinfo echoecho /proc/misc cat/proc/misc echo /proc/iomem cat/proc/iomem echo cat /proc/modules cat/proc/modules echo cat /proc/rk_cma/rk-dma-heap-cma cat/proc/rk_cma/rk-dma-heap-cma INTERVAL_S90# record every90seconds defaultly PIDswhilegetoptsi:p:o:arg;docase$arg in i)INTERVAL_S$OPTARG;;p)PIDs$OPTARG;;?)show_usage exit1;;esac donewhiletrue;doecho uptime uptime echo /proc/loadavg cat/proc/loadavg echo get_cpu_usage get_cpu_usage echo /proc/stat cat/proc/stat echo /proc/swaps cat/proc/swaps echo df -h df-h echo mount mount echo free -m free-m echo top top-b-n1echo rockit node cat/dev/mpi/vsys cat/dev/mpi/vmcu cat/dev/mpi/valloc cat/dev/mpi/vlog cat/dev/mpi/vrgn echo mpp node cat/proc/vcodec/enc/venc_info echo cif node cat/proc/rkcif-mipi-lvds echo /proc/meminfo cat/proc/meminfo echo cat dev/mpi/vsys cat/dev/mpi/vsys echo cat /dev/mpi/vlog cat/dev/mpi/vlog echo cat dev/mpi/vsys cat/dev/mpi/vsys echo cat /proc/vcodec/enc/venc_info cat/proc/vcodec/enc/venc_info echo cat /proc/rk_dmabuf/sgt cat/proc/rk_dmabuf/sgt echo cat /proc/rk_dmabuf/dev cat/proc/rk_dmabuf/dev echo cat /proc/rkcif-mipi-lvds cat/proc/rkcif-mipi-lvds echo cat /proc/rkisp-vir0 cat/proc/rkisp-vir0 echo sysrq meminfo if[-f/proc/sysrq-trigger];then echom/proc/sysrq-trigger dmesg|tail-n50|grep-A50Show Memoryfi echo dumpsys meminfo dumpsys meminfo-a echo procrank procrank echo ps -T ps-T echo /proc/buddyinfo cat/proc/buddyinfo echo /proc/pagetypeinfo cat/proc/pagetypeinfo echo /proc/vmallocinfo cat/proc/vmallocinfo echo /proc/vmstat cat/proc/vmstat echo /proc/zoneinfo cat/proc/zoneinfo#zjadd b#echo /sys/kernel/ion/total_heaps_kb #cat/sys/kernel/ion/total_heaps_kb#zjadd eif[-d/sys/kernel/debug/ion];then echo ION Memory get_ion_info fi echo /proc/rk_dma_heap/dma_heap_info if[-f/proc/rk_dma_heap/dma_heap_info];then cat/proc/rk_dma_heap/dma_heap_info fiif[-d/sys/kernel/debug/dri];then echo DRM Memory get_drm_info fiif[-f/sys/kernel/debug/dma_buf/bufinfo];then echo DMA Buf cat/sys/kernel/debug/dma_buf/bufinfo fi echo /proc/zoneinfo cat/proc/zoneinfo echo lsof lsof echo du -abc du-abc/echo /proc/interrupts cat/proc/interrupts#forPID in ${PIDs[]}#do#echo showmap $PID #showmap$PID#donesleep $INTERVAL_S done do_exit #