linux 查看线程或cpu

在arm嵌入式中不能通过

top -H -p pid 

来查看cpu。

所以我们通过查看/proc/pid/task/tid/stat 的信息和/proc/stat 中的信息来计算cpu

#!/bin/sh
echo '$1 threads cpu'

for tid in `ls /proc/$1/task/`
do
        tm=`cat  /proc/$1/task/$tid/stat |awk  -F " " '{print $14+$15}'`
        echo $tm
done

total=`cat /proc/stat |awk -F " " 'NR==1{print  $2+$3+$4+$5+$6+$7+$8}'`
echo $total

sleep 10s

for tid in `ls /proc/$1/task/`
do
        tm2=`cat  /proc/$1/task/$tid/stat |awk  -F " " '{print $14+$15}'`
        echo $tm2
done

total2=`cat /proc/stat |awk -F " " 'NR==1{print  $2+$3+$4+$5+$6+$7+$8}'`
echo $total2

total3=`expr $total2 - $total`
tm3=`expr $tm2 - $tm`
cpus=`cat /proc/cpuinfo| grep "processor"| wc -l`
echo $cpus $total3 $tm3

tcpu=`expr $tm3 \* $cpus \* 100 / $total3`
echo "thread cps: $tcpu"

附上/proc/stat 信息

cat /proc/stat
cpu 2255 34 2290 22625563 6290 127 456
cpu0 1132 34 1441 11311718 3675 127 438
cpu1 1123 0 849 11313845 2614 0 18
intr 114930548 113199788 3 0 5 263 0 4 [… lots more numbers …]
ctxt 1990473
btime 1062191376
processes 2915
procs_running 1
procs_blocked 0
这些数字指明了CPU执行不同的任务所消耗的时间(从系统启动开始累计到当前时刻)。时间单位是USER_HZ或jiffies(通常是百分之一秒)。
这些数据列的含义如下,我们从左至右逐一认识:
•user:正常的进程在用户态下执行时间累积
•nice: NICED的进程在用户态下执行时间列
•system:进程在内核态的执行时间累积
•idle:空闲时间累积
•iowait :等待I / O完成时间累积
•irq :硬中断时间
•softirq:软中断时间

/proc/pid/task/tid/stat 的信息详情http://blog.csdn.net/ctthuangcheng/article/details/18090701

线程Cpu时间threadCpuTime = utime +stime

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值