Linux诊断监控

1. CPU核数

1)top按1
2)cat /proc/cpuinfo

3)lscpu:

CPU(s):                 #逻辑cpu颗数 
Thread(s) per core:     #每个核心线程 
Core(s) per socket:     #每个cpu插槽核数/每颗物理cpu核数 

4) 物理CPU:cat /proc/cpuinfo |grep "physical id" |sort|uniq|wc -l


5)core id:cat /proc/cpuinfo |grep "core id" |sort|uniq|wc -l 

​6)总核数 = 物理CPU个数 X 每颗物理CPU的核数
7)总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数(cat /proc/cpuinfo| grep "processor"| wc -l)

2. CPU占用率

看CPU是否有问题,看CPU总的占用率

3. 平均负载


含义:过去的1,5,15分钟的平均负载
平均负载:平均的活跃进程数(运行(R),可运行(S),不可中断(D)),特点:历史、平均、趋势。

不能表示实时负载,可以用来看趋势,进程的负载长度

引申:进程状态


    
3.1 忙的趋势是可接受还是不可接受?

Load<0.7核数   负载不高,不忙
0.7核数<Load<3*核数    不清楚,需要继续分析
Load>3*核数  负载高,忙

3.2 Cpu占用率和平均负载的关系

3.2.1 平均负载load average高,就一定cpu占用率高吗?

平均负载高,意味着进程多。
A. 如果这些进程每个进程占用cpu也高的话(代码复杂度高,有大量循环)(cpu密集进程,视频编码,人工智能,图片处理),就肯定服务器系统cpu占比高
B. 如果这些进程每个进程占用cpu很低的话(IO密集型进程,读写数据,占用cpu很低),就肯定服务器系统cpu占比不高

3.2.2 cpu占用高,就一定平均负载load average高吗?

A. 不一定:如果cpu占用高,但是只有少量进程,多核cpu,
B. 有可能:如果cpu占用高,同时有很多进程运行,就会load average高

3.2.3 平均负载高有哪些原因造成?

进程多造成,应用程序,cpu密集型,任务多,要大量统计,计算,如何进一步分析?看vmstat 的R列,如果R多,就 用top进一步分析进程,进一步dump线程,如果B列多,就分析IO

4. top

4.1 top分析:

1)Id-低,意味着cpu有瓶颈

2)Us-高,继续用top监控进程(找出cpu占比高的进程),dump线程

3)Sy-高,看内核可以优化的内核参数(一般较少出现问题 )

那么对于内核态造成的占用高和用户态造成的占用高,要考虑下一步怎么分析,什么导致的高,往哪个方向考虑

4)Wa-高,进一步分析IO

5)Si-高,进一步分析网络

4.2 top高级用法:

1)按top,然后按h可进入top的帮助界面:

2)改变top的刷新时间为1秒:top -> d -> 1 -> Enter,按W保存

看到如下信息说明保存成功:

3)按F可进入到排序,如下可以看到是按CPU排序:

按cpu排序:top命令后,输入大写的P;按内存排序:top命令后,输入大写的M,修改排序之后要在top界面按W保存

4)增加字段,如下:top ->f/F -> 上下键光标移到到要添加的字段 -> d -> 要添加的字段前面出现*说明添加成功,可按d删除添加的字段

回到top界面按c,可看到增加的几列字段,也可参考:https://www.cnblogs.com/ronli/p/centos-top.html

5)写一个简单的top脚本:top -b -d 1 -n 3 > top.log,每1秒采集一次,共采集3次写到top.log里面 
取Cpu:grep Cpu top.log

5. vmstat

对操作系统整体的虚拟内存、进程、CPU活动进行监控
vmstat 1 5:每1秒采集一次服务器状态,采集5次

分析:

1)vmstat+top

2)当cpu占比比较高,同时看到us比较高,往进程方向想

3)swap数据,不一定mem有问题,还要结合free,buff,cache

4)单独的数据,无法判断,进行长时间监控,时间拉长

5)内存问题导致bo,IO问题,导致cpu

场景:

1)应用进程占用导致cpu占比高

2)内存不够导致cpu占比高

3)大量读造成cpu占比高

6. 中断和中断打散

案列:由下图中看出,几秒只能增加了93(6428-6335)个中断

当出现很多中断都在一个cpu时,就需要中断打散,如:echo 2 > /proc/irq/90/smp_affinity

7. 上下文切换

7.1 进程调度

背景:多任务,多进程处理的操作系统

cpu时间分片:

a)cpu时间片,用完就被挂起,轮流分配,切换

b)与进程优先级有关,挂起,切换

c) 进程进入睡眠状态,挂起,切换

d)等待资源,资源不足,挂起,切换

7.2 上下文切换

7.2.1 什么是上下文切换?

上下文:存储cpu正在执行的位置,下一条指令位置(寄存器,程序计数器)

上下文切换:保存上一个任务进度的上下文到内核,加载新任务进程的上下文,且运行心任务,再次调度上一个任务,看 起来连续运行

7.2.2 上下文切换与性能的关系?

切换次数多,cpu时间花费在保存上下文上面

7.2.3 上下文切换次数多少算高?

①cup性能
②系统上下文切换次数趋势稳定,就没有问题
③出现突然增长,或者超过1万次以上,就要分析
④上下文切换次数多: 
A)就是进程在等待资源,进一步监控内存,I/O
B)cpu本身的瓶颈
C)同时中断次数多,去分析中断处理程序,查看/proc/interrupts,cpu的分布,进一步分析中断的原因

8. 内存

内存相关概率(虚拟内存,物理内存,buffer,cache,swap,映射)

内存占用使用如下公式(注意,基于centos7):(mem.used+swap.used)/mem.total+swap.total

清除缓存:

虚拟内存详解:https://blog.csdn.net/qq_38410730/article/details/81036768

 

 

   

            

 

    

 


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值