1 cpu和程序的执行
PC:程序计数器
堆栈指针:每个程序都有一个栈
PSW:程序的状态
2 CPU两种运行状态:用户态、内核态
Linux内部结构
top命令查看
CPU sy:内核消耗的指标;us :用户消耗的指标
一般us:ys=4:!
3 CPU的多核和多线程
物理核:
逻辑核:
超线程:
cpu信息保存在/pro/cpuinfo
查看cpu核数的方法
1)统计物理核个数
cat proc/cpuinfo | grep ‘physical id’ | sort | uniq | wc -l
逻辑核个数
cat proc/cpuinfo | grep ‘corel id’ | sort | uniq | wc -l
总逻辑CPU统计数线程数
cat proc/cpuinfo | grep ‘processor’ | sort | uniq | wc -l
2)top
3)lscpu
4 CPU使用率
4.1 使用率的标准50 70 90
50 %以下不用关注
70%要告警
90%cpu需要优化
这个是针对于单核的标准,不适合现在的服务器
4.2 单核CPU
1)CPU使用率70%
2)CPU空闲率:1-70%=30%
4.3 四核CPU
总的CPU400%:400*70%=280%
总的空闲率:400%-280%=120%
4.4 八核CPU
总的CPU800%:800*70%=560%
总的空闲率:800%-560%%=240%
4.5 实例
需求1:至少要100%空闲时间,少于100%
4核:400%-100%=300%
300%/400%=75%
相当于75%就要进行报警
5 CPU队列
系统平均负载
1)系统负载<=CPU总核数,表示系统不忙,
系统负载如下:
2)CPU总核数<=系统负载<=CPU总核数3 ,不确定,需要结合其他资源来分析
3)系统负载>=CPU总核数3,表示系统忙
4)系统负载是通过运行状态+阻塞状态的进程计算出来的
6 中断
分硬中断和软中断
硬中断:由硬件产生
硬中断数是记录在/proc/interrupts
7 上下文切换
1)上下文:存储cpu正在执行的指令位置,下一条指令的位置
2)上下文切换:保存上一个任务的上下文到内核,加载新任务的上下文,运行新任务,新任务运行完后,再次高度上一个任务
in中断,cs为
3)查看线程状态,2461是进程号
top -Hp 2461
PID十进制转换为十六进制
jstack 2641 | grep -AIO -BIO a65
jd-gui 反编译工具,查看class文件,直接拖入class文件就可以了