字符数组和字符串基本掌握

P1439 【模板】最长公共子序列

  返回  

一篇文章带你学会Linux性能监控及性能问题定位

2021/8/20 18:48:35 浏览:

简介:

本文主要从以下四个维度指标,来讲解Linux监控及性能问题定位

CPU 、Memory 、 IO 、Network

一、top命令解析

使用top命令查看进程使用资源情况

 

top - 19:45:57

当前系统时间

50 days

系统已经运行了50天

1 user

当前登陆1个用户

load average

系统负载,反应进程在CPU排队情况,等于【正在运行的进程+等待CPU时间片段的进程+等待IO的进程】三个数值分别表示为过去1分钟/5分钟/15分钟的负载平均值。正常值为小于CPU的颗粒数

Task: 96 total

总进程数

1 running

正在运行的进程数

95 sleeping

睡眠的进程数

0 stopped

停止的进程数

0 zombie

冻结进程数(僵尸进程数)

%Cpu(s):

0.7 us

用户进程消耗的cpu,一般小于70%/80%是正常的

1.0 sy

系统内核进程消耗的cpu(操作系统的底层资源是在内核完成的,比如读写磁盘。超过10%就很高了,可能是IO、中断、上下文切换导致的

0.0 ni

改变过优先级的进程占用CPU的百分比

98.3 id

空闲cpu百分比

0.0 wa

等待IO的进程所消耗的占CPU的百分比,直观说就是 如果这个值很高 就代表 cpu利用率不高 但是io很繁忙,需要去查一下io

0.0 hi

硬件中断所消耗的CPU占比(硬中断 Hardware IRQ)

0.0 si

软件中断所消耗的CPU占比(软中断 Software Interrupts)

0.0 st

不需要关注

KiB Mem :

1883564 total

物理内存总量

554480 free

空闲内存总量

362208 used

使用的物理内存总量

966876 buff/cache

用作内核缓存的内存量

cache缓存

存的是最近一段时间内存频繁从磁盘中读取的热点数据,为了避免频繁从磁盘取热点数据。如果内存不足时,cache缓存会变小,将内存让出来

buff缓冲

内存不是实时把数据写入磁盘中的,而是一批一批的数据写到磁盘中。一批一批的数据就是 buffers

KiB Swap:

交换区内存,一小部分在内存,大部分在磁盘上。在磁盘上开辟了一块空间,当作内存来使用。最终运行在磁盘上。内存的运行速度至少是磁盘运行速度的几百倍。所以交换区的内存,运行速度非常慢。swap used值变高,说明物理内存不够用,而且系统开始变慢。从功能上讲,交换分区主要是在内存不够用的时候,将部分内存上的数据交换到swap空间上,以便让系统不会因内存不够用而导致oom或者更致命的情况出现。

0 total

交换区总量

0 free

空闲交换区总量

0 used

使用的交换区总量

1325836 avail Mem

缓冲的交换区总量

进程信息

PID

进程id

PR

优先级(值越低优先级越高)

NI

nice值,负值表示高优先级,正值表示低优先级

VIRT

进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES

RES

进程使用的、未被换出的物理内存大小,单位kb。(只需要观察这个值)RES=CODE+DATA

SHR

共享内存大小,单位kb。这个值可能会比较大,因为可能是多个进程共享的。

S

进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程

%CPU

上次更新到现在的CPU时间占用百分比

%MEM

进程使用的物理内存百分比

TIME+

进程使用的CPU时间总计,单位1/100秒

COMMAND

命令名/命令行

%iowait 这个值的含义,不用去关注,直观说就是 如果这个值很高 就代表 cpu利用率不高 但是io很繁忙。只知道高了,就去查io问题就行了


%iowait 官方解释

Percentage of time that the CPU or CPUs were idle during

which the system had an outstanding disk I/O request

%iowait 表示在一个采样周期内有百分之几的时间属于以下情况:CPU空闲、并且有仍未完成的I/O请求。

top命令

默认进入top时,各进程是按照CPU的占用量来排序的

多核cpu情况下,在top基本视图中,按键盘数字“1”可以监控每个逻辑CPU的状况

查看具体某个进程的信息

top -p pid(进程id)

top -p 620

查看某个进程下的线程信息

输入H,显示所有线程的情况

top -p pid #只看某个进程的数据

top -H -p pid #查看某个进程的线程数据

top -H -p 30350

 

显示完整命令

top -c

或者先输入top命令,然后再按c,来切换显示进程的完成命令

注意:

ctrl+z 退出top命令,但是top进程依然在

ctrl+c退出top命令,并杀死该进程。

输入M,按内存使用率排序

输入P,按cpu使用率来排序,默认也是cpu使用率排序

IO与cpu的关系

参考链接:

https://www.zhihu.com/question/27734728

IO所需要的CPU资源非常少。大部分工作是分派给DMA完成的。

IO整个流程:

CPU计算文件地址 ——> 委派DMA读取文件 ——> DMA接管总线 ——> CPU的A进程阻塞,挂起——> CPU切换到B进程 ——> DMA读完文件后通知CPU(一个中断异常)——> CPU切换回A进程操作文件

IO设备发送中断,CPU收到中断后,挂起当前的进程,然后处理中断,处理完后,回到之前的进程

计算机硬件上使用DMA来访问磁盘等IO,也就是请求发出后,CPU就不再管了,直到DMA处理器完成任务,再通过中断告诉CPU完成了。

所以,单独的一个IO时间,对CPU的占用是很少的,阻塞了就更不会占用CPU了,因为程序都不继续运行了,CPU时间交给其它线程和进程了。

虽然IO不会占用大量的CPU时间,但是非常频繁的IO还是会非常浪费CPU时间的,所以面对大量IO的任务,有时候是需要算法来合并IO,或者通过cache来缓解IO压力的。

load average(平均负载)

参考博客:

http://www.ruanyifeng.com/blog/2011/07/linux_load_average_explained.html

https://scoutapm.com/blog/understanding-load-averages

https://www.cnblogs.com/mrwuzs/p/11276343.html

平均负载:

平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数,它和 CPU 使用率并没有直接关系。

可运行状态的进程,是指正在使用 CPU 或者正在等待 CPU 的进程,也就是我们常用ps 命令看到的,处于 R 状态(Running 或 Runnable)的进程

不可中断状态的进程则是正处于内核态关键流程中的进程,并且这些流程是不可打断的,比如最常见的是等待硬件设备的 I/O 响应,也就是我们在 ps 命令中看到的 D 状态(Uninterruptible Sleep,也称为 Disk Sleep)的进程

比如,当一个进程向磁盘读写数据时,为了保证数据的一致性,在得到磁盘回复前,它是不能被其他进程或者中断打断的,这个时候的进程就处于不可中断状态。如果此时的进程被打断了,就容易出现磁盘数据与进程数据不一致的问题。

所以,不可中断状态实际上是系统对进程和硬件设备的一种保护机制。

 

联系我们

如果您对我们的服务有兴趣,请及时和我们联系!

服务热线:18288888888
座机:18288888888
传真:
邮箱:888888@qq.com
地址:郑州市文化路红专路93号