Last active
September 13, 2016 06:55
-
-
Save RedCarrottt/101ba7efd98da8598c1f6c6c6ff478ee to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Performance & Power Monitor Script for Odroid-XU3 | |
# Author: Gyeonghwan Hong<[email protected]> | |
# Original Author: Dongig Shin<[email protected]> | |
GOVN_COLO="\033[31m" | |
WARN_COLO="\033[31;47m" | |
INFO_COLO="\033[36m" | |
INIT_COLO="\033[0m" | |
YOUR_UID=`id -u` | |
if [ $YOUR_UID -ne 0 ] | |
then | |
echo "Root privilege is required (Your uid is $YOUR_UID)" | |
exit | |
fi | |
ATTR_PNAME=$1 | |
ATTR_PID=`pidof $ATTR_PNAME | awk '{print $1}'` | |
if [ -z $ATTR_PID ] | |
then | |
echo "Usage: $0 <process_name>" | |
exit | |
fi | |
ATTR_DATE=`date +%H:%M:%S.%N` | |
savefile="./result/$ATTR_DATE" | |
#tempfile="./result/tempResult.txt" | |
echo 1 > /sys/bus/i2c/drivers/INA231/2-0045/enable | |
echo 1 > /sys/bus/i2c/drivers/INA231/2-0040/enable | |
echo 1 > /sys/bus/i2c/drivers/INA231/2-0041/enable | |
echo 1 > /sys/bus/i2c/drivers/INA231/2-0044/enable | |
#rm $savefile | |
#touch $savefile | |
#sleep 1 | |
echo "Date CPULoad CPUIdle Mem Freq0 Freq1 Freq2 Freq3 Freq4 Freq5 Freq6 Freq7 BigW BigA BigV LitW LitA LitV RXPack TXPack RXByte TXByte" > $savefile | |
while true; do | |
us_a=`cat /proc/stat | head -n9 | tail -n1 | awk '{print $2}'` | |
ni_a=`cat /proc/stat | head -n9 | tail -n1 | awk '{print $3}'` | |
sy_a=`cat /proc/stat | head -n9 | tail -n1 | awk '{print $4}'` | |
id_a=`cat /proc/stat | head -n9 | tail -n1 | awk '{print $5}'` | |
sum_a=$(($us_a+$ni_a+$sy_a+$id_a)); | |
sleep 0.5 | |
us_b=`cat /proc/stat | head -n9 | tail -n1 | awk '{print $2}'` | |
ni_b=`cat /proc/stat | head -n9 | tail -n1 | awk '{print $3}'` | |
sy_b=`cat /proc/stat | head -n9 | tail -n1 | awk '{print $4}'` | |
id_b=`cat /proc/stat | head -n9 | tail -n1 | awk '{print $5}'` | |
sum_b=$(($us_b+$ni_b+$sy_b+$id_b)); | |
us=$(($us_b-$us_a)); | |
ni=$(($ni_b-$ni_a)); | |
sy=$(($sy_b-$sy_a)); | |
id=$(($id_b-$id_a)); | |
sum=$(($sum_b-$sum_a)); | |
pus=$(echo $us" "$sum | awk '{print $1*100/$2}') | |
pni=$(echo $ni" "$sum | awk '{print $1*100/$2}') | |
psy=$(echo $sy" "$sum | awk '{print $1*100/$2}') | |
pid=$(echo $id" "$sum | awk '{print $1*100/$2}') | |
psum=$(echo $pus" "$pni" "$psy | awk '{print $1+$2+$3}') | |
echo " " | |
echo "------------------------------------------------------" | |
ATTR_DATE=`date +%H:%M:%S.%N` | |
ATTR_CPU_LOAD=$psum | |
ATTR_CPU_IDLE=$pid | |
ATTR_MEM=`ps -p$ATTR_PID -o pmem=` | |
ATTR_CPU0_FREQ=`cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq` | |
ATTR_CPU1_FREQ=`cat /sys/devices/system/cpu/cpu1/cpufreq/scaling_cur_freq` | |
ATTR_CPU2_FREQ=`cat /sys/devices/system/cpu/cpu2/cpufreq/scaling_cur_freq` | |
ATTR_CPU3_FREQ=`cat /sys/devices/system/cpu/cpu3/cpufreq/scaling_cur_freq` | |
ATTR_CPU4_FREQ=`cat /sys/devices/system/cpu/cpu4/cpufreq/scaling_cur_freq` | |
ATTR_CPU5_FREQ=`cat /sys/devices/system/cpu/cpu5/cpufreq/scaling_cur_freq` | |
ATTR_CPU6_FREQ=`cat /sys/devices/system/cpu/cpu6/cpufreq/scaling_cur_freq` | |
ATTR_CPU7_FREQ=`cat /sys/devices/system/cpu/cpu7/cpufreq/scaling_cur_freq` | |
ATTR_POWER_BIG_W=`cat /sys/bus/i2c/drivers/INA231/2-0040/sensor_W` | |
ATTR_POWER_BIG_A=`cat /sys/bus/i2c/drivers/INA231/2-0040/sensor_A` | |
ATTR_POWER_BIG_V=`cat /sys/bus/i2c/drivers/INA231/2-0040/sensor_V` | |
ATTR_POWER_LITTLE_W=`cat /sys/bus/i2c/drivers/INA231/2-0045/sensor_W` | |
ATTR_POWER_LITTLE_A=`cat /sys/bus/i2c/drivers/INA231/2-0045/sensor_A` | |
ATTR_POWER_LITTLE_V=`cat /sys/bus/i2c/drivers/INA231/2-0045/sensor_V` | |
ATTR_NETWORK_RX_PACKETS=`ifconfig | grep "RX" | awk '{print $2}' | head -n1 | cut -d':' -f2` | |
ATTR_NETWORK_TX_PACKETS=`ifconfig | grep "TX" | awk '{print $2}' | head -n1 | cut -d':' -f2` | |
ATTR_NETWORK_RX_BYTES=`ifconfig | grep "RX" | head -n2 | tail -n1 | awk '{print $2}' | cut -d':' -f2` | |
ATTR_NETWORK_TX_BYTES=`ifconfig | grep "TX" | head -n2 | tail -n1 | awk '{print $6}' | cut -d':' -f2` | |
echo "$ATTR_DATE" \ | |
"$ATTR_CPU_LOAD" \ | |
"$ATTR_CPU_IDLE" \ | |
"$ATTR_MEM" \ | |
"$ATTR_CPU0_FREQ" \ | |
"$ATTR_CPU1_FREQ" \ | |
"$ATTR_CPU2_FREQ" \ | |
"$ATTR_CPU3_FREQ" \ | |
"$ATTR_CPU4_FREQ" \ | |
"$ATTR_CPU5_FREQ" \ | |
"$ATTR_CPU6_FREQ" \ | |
"$ATTR_CPU7_FREQ" \ | |
"$ATTR_POWER_BIG_W" \ | |
"$ATTR_POWER_BIG_A" \ | |
"$ATTR_POWER_BIG_V" \ | |
"$ATTR_POWER_LITTLE_W" \ | |
"$ATTR_POWER_LITTLE_A" \ | |
"$ATTR_POWER_LITTLE_V" \ | |
"$ATTR_NETWORK_RX_PACKETS" \ | |
"$ATTR_NETWORK_TX_PACKETS" \ | |
"$ATTR_NETWORK_RX_BYTES" \ | |
"$ATTR_NETWORK_TX_BYTES" \ | |
>> $savefile | |
echo "$ATTR_DATE" "${INFO_COLO}(ns)${INIT_COLO}" | |
echo "${GOVN_COLO}Governor:${INIT_COLO}" `cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor` | |
echo "${WARN_COLO}[Load]${INIT_COLO}" | |
echo "${INFO_COLO}CPU:${INIT_COLO} (Load) " $ATTR_CPU_LOAD "%, (Idle) " $ATTR_CPU_IDLE "%" \ | |
"${INFO_COLO}Memory${INIT_COLO}: " $ATTR_MEM "%" | |
echo "${WARN_COLO}[Frequency(Hz)]${INIT_COLO}" | |
echo "${INFO_COLO}Core 0 Core 1 Core 2 Core 3 Core 4 Core 5 Core 6 Core 7${INIT_COLO}" | |
echo \ | |
"$ATTR_CPU0_FREQ" \ | |
"$ATTR_CPU1_FREQ" \ | |
"$ATTR_CPU2_FREQ" \ | |
"$ATTR_CPU3_FREQ" \ | |
"$ATTR_CPU4_FREQ" \ | |
"$ATTR_CPU5_FREQ" \ | |
"$ATTR_CPU6_FREQ" \ | |
"$ATTR_CPU7_FREQ" | |
echo " " | |
echo "${WARN_COLO}[Network]${INIT_COLO}" | |
echo "${INFO_COLO}RX:${INIT_COLO} " $ATTR_NETWORK_RX_PACKETS " packets (" $ATTR_NETWORK_RX_BYTES " bytes)" | |
echo "${INFO_COLO}TX:${INIT_COLO} " $ATTR_NETWORK_TX_PACKETS " packets (" $ATTR_NETWORK_TX_BYTES " bytes)" | |
echo " " | |
echo "${WARN_COLO}[Power]${INIT_COLO}" | |
echo "${INFO_COLO}Big-core: ${INIT_COLO}" \ | |
$ATTR_POWER_BIG_W "W" \ | |
"(" $ATTR_POWER_BIG_A "A" \ | |
$ATTR_POWER_BIG_V "V" ")" | |
echo "${INFO_COLO}Little-core: ${INIT_COLO}" \ | |
$ATTR_POWER_LITTLE_W "W" \ | |
"(" $ATTR_POWER_LITTLE_A "A" \ | |
$ATTR_POWER_LITTLE_V "V" ")" | |
echo "${INFO_COLO}GPU: ${INIT_COLO}" \ | |
`cat /sys/bus/i2c/drivers/INA231/2-0044/sensor_W` "W" \ | |
"(" `cat /sys/bus/i2c/drivers/INA231/2-0044/sensor_A` "A" \ | |
`cat /sys/bus/i2c/drivers/INA231/2-0044/sensor_V` "V" ")" | |
echo "${INFO_COLO}DRAM: ${INIT_COLO}" \ | |
`cat /sys/bus/i2c/drivers/INA231/2-0041/sensor_W` "W" \ | |
"(" `cat /sys/bus/i2c/drivers/INA231/2-0041/sensor_A` "A" \ | |
`cat /sys/bus/i2c/drivers/INA231/2-0041/sensor_V` "V" ")" | |
echo "${WARN_COLO}[Thermal]${INIT_COLO}" | |
echo `cat /sys/devices/10060000.tmu/temp` | |
#cat /proc/stat | grep cpu >> $tempfile | |
#echo "do" | |
sleep 0.1 | |
done |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment