0


【Linux操作系统】莫?how to查看系统负载?

  在衡量服务器的性能时,经常会涉及到几个指标: 如load、cpu、mem、qps、rt等。本文介绍一些基本的查看Load(机器负载)的命令。

什么是负载

    负载(load)是linux机器的一个重要指标,直观了反应了机器当前的状态。在UNIX系统中,系统负载是对当前CPU工作量的度量,被定义为特定时间间隔内运行队列中的平均线程数。load average 表示机器一段时间内的平均load。这个值越低越好。负载过高会导致机器无法处理其他请求及操作,甚至导致死机。

    计算机的负载就是描述计算机工作量的一个概念。一般来说计算机负载涉及到CPU、内存、磁盘io、网络等各个方面。Linux的负载高,主要是由于CPU使用、内存使用、IO消耗三部分构成。任意一项使用过多,都将导致服务器负载的急剧攀升。

    当我们说电路负载过高的时候,我们就要知道负载过高是指哪一个方面。就像妈妈看着近视你倒垃圾时大喊满了满了,懵逼的你还不知道是哪里满了,这样可是不行滴。

    

查看机器负载

    在Linux机器上,有多个命令都可以查看机器的负载信息。其中包括uptime、top、w等。

1.top命令

    top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况(每5秒钟刷新一次),类似于Windows的任务管理器,用于动态地监视进程活动与系统负载等信息。

06e35cbf873c4a7bb1d0defe0e32c4d1.png

    其中,最耗资源的进程会显示在最上方。

[root@localhost~]top
//以下为得到的信息
top - 06:55:08 up 6 min,    //运行时间
      1 user,              //用户数量(登录终端数)
      load average: 0.80,0.70,0.34    
      //系统平均负载(三个数值分别为1分钟、5分钟、15分钟内的平均值,数值越小意味着负载越低)

Tasks: 250 total,      //同一服务器的进程总数
       3 running,       //正在运行的进程数量(正在使用CPU)
       247 sleeping,    //睡眠中的进程数
       0 stopped,       //停止(暂停)的进程数
       0 zombie         //僵死的进程数(僵尸进程)

%Cpu(s): //CPU信息
         14.5 us,  //用户占用CPU资源百分比
         1.0 sy,    //系统内核占用CPU资源百分比
         0.0 ni,    //用户进程空间内改变过优先级的进程占用CPU百分比
         83.8 id,   //空闲CPU百分比
         0.0 wa,    //等待输入输出的CPU时间百分比
         0.7 hi,    //硬中断(Hardware IRQ)占用CPU的百分比
         0.0 si,    //软中断(Software Interrupts)占用CPU的百分比
         0.0 st

KiB Mem : //内存信息
           3781.1 total,      //物理内存总量
           1948.7 free,       //空闲内存总量
           1080.3 used,       //使用的物理内存总量
           752.0 buff/ cache  //用作内核缓存的内存量(缓冲区)
           //buff表示输入型缓存  cache表示输出型缓存

KiB Swap: //交换分区(虚拟内存)信息
           4096.0 total,         //交换区总量
           4096.0 free,          //空闲交换区总量
           0.0 used.             //使用的交换区总量
           6173.12 cached Mem     //缓冲的交换区总量
           2457.9 avail Mem      //代表可用于进程下一次分配的物理内存数量(已被提前加载)
    当我们执行top命令来查看进程信息时,此进程会一直占用终端,如需结束,需按q次进程才会归还终端。

列名含义PID进程idUSER进程所有者的用户名PR优先级NInice值。负值表示高优先级,正值表示低优先级VIRT进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RESRES进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATASHR共享内存大小,单位kbS进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程%CPU上次更新到现在的CPU时间占用百分比%MEM进程使用的物理内存百分比TIME+进程使用的CPU时间总计,单位1/100秒COMMAND命令名/命令行
在此解释何为僵尸进程,一般情况下,僵尸进程是正在运行的无意义的进程,表示没有父进程的子进程。比如父进程被杀死或被意外中断,而其子进程仍在运行。

    举一个例子:在你与朋友进行视频聊天的时候,开启摄像头捕捉的你影像就是聊天软件的子进程,在意外情况下,有可能聊天软件结束运行,而摄像头仍被调用,这时候摄像头便没有数据传输的去处,从而变成了僵尸进程。

    当然,操作系统是由一定清理机制的,我们会发现,僵尸进程的数量在通常情况下基本是没有的,这就依靠了我们的1号进程。

d982feb9104f48a5b32162806de61c91.png

    此进程专门负责“打僵尸”,他的状态(STAT)为Ss表示此时他是正在休眠(S)的系统进程(s),他时不时会被调用,扫描进程寻找僵尸进程。他的清理过程是先将僵尸进程变成自己的子进程(收入囊中,收义子),后释放资源(干掉他)。

2.uptime命令

    uptime命令能够打印系统总共运行了多长时间和系统的平均负载,即拿到top指令返回的头部信息。uptime命令可以显示的信息显示依次为:现在时间、系统已经运行了多长时间、目前有多少登陆用户、系统在过去的1分钟、5分钟和15分钟内的平均负载。
[root@localhost~]uptime
//以下为得到的信息
06:55:08 up 6 min,    //运行时间
1 user,              //用户数量(登录终端数)
load average: 0.80,0.70,0.34    
//系统平均负载(三个数值分别为1分钟、5分钟、15分钟内的平均值,数值越小意味着负载越低)
    一般将1分钟、5分钟、15分钟内系统的平均负载表示为load1、load5、load15。

3.w命令

w命令的主要功能其实是显示目前登入系统的用户信息。可以显示:当前时间,系统启动到现在的时间,登录用户的数目,系统在最近1分钟、5分钟和15分钟的平均负载。然后是每个用户的各项数据,项目显示顺序如下:登录帐号、终端名称、远 程主机名、登录时间、空闲时间、JCPU、PCPU、当前正在运行进程的命令行。

[root@localhost ~]$ w
11:21:37 up 48 days, 18:58,  2 users,  load average: 0.00, 0.01, 0.05
USER   TTY      FROM             LOGIN@   IDLE   JCPU   PCPU    WHAT
root   pts/0    10.0.12.10       11:10    1.00s  0.02s  0.00s   w
root   pts/1    10.0.12.10       11:21    4.00s  0.01s  0.01s   -bash

各项信息的含义
列名含义USER登录用户TTY用户登录使用的终端FROM用户的登录IPLOGIN@用户登录时间IDLE用户空闲时间,从用户上一次任务结束后,开始记时JCPU以终端代号来区分,表示在这段时间内,所有与该终端相关的进程任务所耗费的CPU时间PCPU指WHAT域的任务执行后耗费的CPU时间WHAT表示当前执行的任务

4.ps命令

    即process status,用于显示当前进程的状态。
[root@localhost ~]$ ps -aux 

USER  PID  %CPU  %MEM  VSZ      RSS   TTY   STAT   START   TIME  COMMAND 
root  5358  0.0  0.3   214564   3872   ?    Ssl    10:13   0:00  /usr/sbin/rsyslogd -n 
root  5359  0.0  0.3   112756   3712   ?    Ss     10:13   0:00  /usr/sbin/sshd -D 
root  5376  0.2  1.1   1005988  11716  ?    Ssl    10:13   0:00  /usr/sbin/libvirtd 
root  5384  0.2  0.1   126288   1600   ?    Ss     10:13   0:00  /usr/sbin/crond -n 
root  5385  0.0  0.4   481308   4120   ?    Ssl    10:13   0:00  /usr/sbin/gdm 
root  5389  0.0  0.0   25904    920    ?    Ss     10:13   0:00  /usr/sbin/atd -f

参数说明
参数含义-A显示所有的进程,和 -e 的效果一样-a显示所有进程,包括其他用户的进程-u选择有效的用户id或者是用户名和启动时间-x显示没有控制终端的进程,同时显示各个命令的具体路径-e显示所有的进程,和 -A 的效果一样,包括没有控制终端的进程-f显示更完成;通常与 -e 一起用-l长格式显示
命令案例
命令含义ps只显示隶属于自己的进程状态ps -aux显示左右进程ps -aux | grep xxx过滤出要查看的进程

5.free命令

    用于显示内存状态。free指令会显示内存的使用情况,显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区(包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等)。默认情况下是以KB为单位显示。

    空闲内存:available = free + buffer(缓冲) + cache(缓存)
​​[root@localhost ~]$free 
              total        used        free      shared    buff/cache   available
Mem:          976000       1020        7490      60        1240         7270
Swap:         2047000      0           20470
//shared:表示多个进程共享的内存总额
//buffers/cached:表示磁盘缓存的大小

参数说明
参数含义-b,-k,-m,-g以字节,KB,MB或GB显示输出-h人类可读的输出(自动单位缩放)-l显示详细的低内存和高内存统计信息 -o使用旧格式(无-/ + buffers / cache行)-t显示RAM +交换总数-s每[延迟]秒更新一次-c更新[count]次-a显示由内核导出的可用内存(每行> 80个字符) -V显示版本信息并退出

6.mpstat命令

    一款常用的多核CPU性能分析工具,用来实时查询每个CPU的性能指标,以及所有CPU的平均指标。此命令需要安装相关工具才能使用。

参数说明

参数
含义
-A
等同于-u -I ALL -P ALL
-I
可以指定SUM CPU SCPU ALL四个参数,SUM表示每个处理器的中断总数,CPU表示每个核的每秒中断数量, SCPU表示每个核每秒的软中断数量,内核版本在2.6.31之后才支持。
-P
统计的CPU编号,一般用ALL
-u
输出列的信息-V查看工具版本号
这里找到前辈大神运行的代码样例。

[root@localhost~]$mpstat -P ALL 3 2   
//–P ALL 选项指示该命令显示所有 CPU 的统计信息
//3 2  该指令每隔3秒运行一次,总共运行两次
Linux 2.6.32-642.el6.x86_64 (localhost.localdomain) 2020年04月11日 _x86_64_    (2 CPU)
//第一部分  输出首先显示了所有 CPU 的合计指标,然后显示了每个 CPU 各项的指标。
11时01分42秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
11时01分45秒  all    0.51    0.00    0.34    0.00    0.00    0.17    0.00    0.00   98.99
11时01分45秒    0    0.68    0.00    0.00    0.00    0.00    0.00    0.00    0.00   99.32
11时01分45秒    1    0.34    0.00    0.34    0.00    0.00    0.34    0.00    0.00   98.98

11时01分45秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
11时01分48秒  all    0.17    0.00    1.19    0.00    0.00    0.17    0.00    0.00   98.47
11时01分48秒    0    0.00    0.00    1.03    0.00    0.00    0.00    0.00    0.00   98.97
11时01分48秒    1    0.34    0.00    1.35    0.00    0.00    0.34    0.00    0.00   97.98
//第二部分  在结尾处显示所有 CPU 的平均值。
平均时间:  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
平均时间:  all    0.34    0.00    0.76    0.00    0.00    0.17    0.00    0.00   98.73
平均时间:    0    0.34    0.00    0.51    0.00    0.00    0.00    0.00    0.00   99.15
平均时间:    1    0.34    0.00    0.84    0.00    0.00    0.34    0.00    0.00   98.48

各项信息的含义
列名含义%user表示用户态所使用 CPU 的百分比%nice表示使用 nice 命令对进程进行降级时 CPU 的百分比%sys表示内核进程使用的 CPU 百分比%iowait表示等待进行 I/O 所使用的 CPU 时间百分比%irq表示用于处理系统中断的 CPU 百分比%soft表示用于软件中断的 CPU 百分比%steal虚拟机强制CPU等待的时间百分比%guest虚拟机占用CPU时间的百分比%idleCPU 的空闲时间的百分比

7.df命令

    列出文件系统的整体磁盘空间使用情况,进行磁盘分区查询。

    格式:df 【选项】【文件名】
[root@localhost~]$df

Filesystem   Size   Used   Avail   Use%   Mounted on
/dev/hda2    45G    19G    24G     44%    /
/dev/hda1    494M   19M    450M    4%     /boot
/dev/hda6    4.9G   2.2G   2.5G    47%    /home
/dev/hda5    9.7G   2.9G   6.4G    31%    /opt
none         1009M  0      1009M   0%     /dev/shm
/dev/hda3    9.7G   7.2G   2.1G    78%    /usr/local
/dev/hdb2    75G    75G    0       100%   /
/dev/hdb2    75G    75G    0       100%   /

参数说明
参数含义-h以人们易读的GB、MB、KB等格式显示大小-T 显示文件系统类型-a 显示所有文件系统的使用情况,包括虚拟文件系统-i 不使用硬盘容量,以inode数量来显示-l 只显示本地文件系统-H和-h参数一样,但不是以1024,而是1000

8. ifstat命令

    是一个统计网络接口活动状态的工具。此命令需要安装相关工具才能使用。                                  
[root@localhost~]$ifstat
 
#kernel
Interface        RX Pkts/Rate    TX Pkts/Rate    RX Data/Rate    TX Data/Rate  
                 RX Errs/Drop    TX Errs/Drop    RX Over/Rate    TX Coll/Rate  
lo                     0 0             0 0             0 0             0 0      
                       0 0             0 0             0 0             0 0      
eth0                  35 0            32 0          2878 0          3546 0      
//以太网                0 0             0 0             0 0             0 0  
//wlan为无线网卡
                       
//RX Pkts/Rate  数据包接收流量
//RX Errs/Drop  数据包接收丢包
//TX Pkts/Rate  数据包发送流量
//TX Errs/Drop  数据包发送丢包
//RX Data/Rate  数据接收流量
//TX Coll/Rate  数据发送流量

参数说明
参数含义
-h
帮助信息
-a
忽略历史记录
-d
对每个统计数据和SECS进行抽样
-e
显示错误信息
-j
以json形式输出
-n
只做历史
-p
美化打印
-r
重置历史记录
-s
不更新历史
-r
平均报告超过了过去的SECS
-V
输出版本信息-x显示TYPE的扩展统计信息

标签: linux

本文转载自: https://blog.csdn.net/weixin_46005032/article/details/125725973
版权归原作者 鸡兄长高了 所有, 如有侵权,请联系我们删除。

“【Linux操作系统】莫?how to查看系统负载?”的评论:

还没有评论