Linux进程管理工具详解:htop、glances、dstat


1.进程相关知识

   

 1.操作系统的功能:文件系统、网络功能、进程管理、内存管理、安全功能、驱动程序(Linux是一个多任务的操作系统,而且是抢占式的多任务操作系统);.OS其实就是提供虚拟的计算机,进而能够将有限的资源借助于“保护”机制分配多个同时运行的程序,即“进程”使用,从而实现了所谓的多任务


 2.程序执行环境有2种:

          内核模式:cpu运行内核级指令

          用户模式:cpu运行普通指令


 3.应用程序运行普通指令,其实是直接运行于cpu上;应用程序运行特权指令,是通过系统调用(system call)


 4.特权指令是指操作硬件的指令。即总线、I\O,控制器;普通指令:计算加、减、乘、除等

          

5.进程调度(多个进程进行运行时,CPU就要分配时间片给各个进程运行),是有一定的进程调度算法来调优的。


6.进程分类:

          CPU bound(CPU密集型):需要跟多的cpu来运行

          I/O bound(I/O密集型):需要更多的I/O来运行


7.进程优先级(优先级越高越有资源分配的权利),Linux中进程 优先级有140个优先级,

          范围是0-139.其中1-99是实时优先级,数字越大优先级越高;

          100-139是静态优先级,数字越小优先级越高。

          动态优先级是有内核在维护的。


8.进程的创建是由创建父进程开始的,即进程的请求发出者。由内核负责创建:fork()---创建父进程,然后再创建子进程clone()


 9.进程的状态分为:     

               1.运行态(running)

               2.睡眠态(sleeping):分为可中断睡眠态和不可中断睡眠态(后者是通常是被I/O阻塞的进程)

               3.就绪态

               4.停止态

               5.僵死态


10.进程任务结构(task struct:用于保存每个进程的元数据信息,例如:pid、ppid、memory、thread、files)。进程内部组织结构,即进程的线性地址空间


11.task list:用一种称作“链表”的数据结构来保存每个进程的task struct


12.进程切换(context switch),切换进程一定要保存现场,等下一次运行或切换到此进程时,要恢复现场。进程切换是有确定的切换频率(比如100HZ--1S可以切换100次)


13线程(thread):让一个进程中有多个流水线,是进程中的子单位,进而实现运行在多个cpu上。线程是更轻量的、可被单独调用的运行单元,而且还可以共享进程的资源,如打开文件等。线程不能同时运行.线程只适用与多核cpu上,而且是跟进程同级被调度的单位


14.进程常见专用术语

       LWP(Light Weight Process)---轻量级线程

      COW(Copy On Writing)---时复制

               CFS---完全公平调度器

               PID---进程的标识号

    

2.工具详解

  1.htop命令

       用法:htop [-dChusv]

   交互式命令:

          u:过滤仅显示用户的进程

          s:跟踪选定的进程所发起的系统调用

          l:显示选定进程所打开的文件

          a:设定进程的cpu的亲缘性(将选定的进程绑定在指定的cpu上)

          t:显示进程的进程树

          

     选项:

           -d #:延迟时常

           -u USERNAME:仅显示指定用户的进程

           -s COLUMN:根据指定的字段进行排序


监测界面各参数代表含义

技术分享 

首先,左上角:

分别表示cpu的1,2,3,4:4颗cpu的使用情况,

Mem表示内存使用情况,

Swap表交换分区使用情况

技术分享

   然后,右上角的:

    Tasks:96,86:进程总数,当前运行进程数 ;

    Load average:表示1分钟、5分钟、15分钟系统的平均负载情况,

    Uptime:系统运行的时间

技术分享

再然后,PID表示:进程的标识号;USER表示该运行进程的用户;

PRI:该进程的优先级;NI:该进程的nice值,进程的优先级别值,默认为0;

VIRT: 进程占用虚拟内存值;RES:进程占用的物理内存值     ;SHR:进程占用的共享 内存值;

S:进程的运行状态,R:表示正在运行。S:表示睡眠状态,等待唤醒。Z:表示僵死状态;

CPU%: 进程占用的cpu 百分比 ;MEM%: 进程占用的内存百分比 ;

TIME+:该进程启动后占用cpu的时间   ;

Command:启动该进程的进程命令名称



   2.glances命令


     用法:glances [-bdehmnrsvyz1] [-B bind]  [-c  server]  [-C conffile]  [-p  port] [-P password] [--password] [-t refresh] [-f file] [-o output]

     常用选项:

          -b:以Bytes/s为单位显示网卡设备数据交换律

              -d:禁用显示磁盘I/O的统计数据

              -f /PATH/TO/SOMEFILE:设置输出文件的位置及格式

              -o {HTML|CSV}:设定输出格式即:HTML|CSV格式

              -m:关闭mount功能模块

              -n:关闭网络功能模块

              -r:禁止显示进程列表

              -t #:指定延迟时长,默认为3s

              -1:单独显示每颗cpu相关负载数据信息

          

    :

        glances支持远程模式,即可以以C/S模式工作:
           Server: 以监听模式启动glances;
           Client: 以远程模式启动glances,远程连入指定服务器,并Server上的相关性能数据;
          
       服务模式:
         glances -s -B IPADDR
           -B: 用于指明监听的本地地址;
       
       客户端模式:
         glances -c IPADDR
           -c: 用于连入的服务器的地址;

    监测界面

技术分享

监测界面各参数含义:

技术分享技术分享

从上到下,依次表现cpu的使用情况、用户占用cpu的情况、系统占用cpu的情况、空闲的cpu情况

技术分享技术分享

从上到下,依次表现为1min、5min、15min系统的平均负载情况

技术分享技术分享

从上到下,第一列表现为内存使用情况、总共的内存打下、用户使用的内存大小、空闲的内存大小;第二列表现为活跃的内存大小、不活跃的内存大小、缓冲区的内存大小、缓存区的内存大小

技术分享技术分享

从上到下,交换分区的使用情况(代表着系统)、swap总共大小、已用大小、空闲部分大小

技术分享技术分享

从上到下依次表现为网络接口的状态,第二行:第一块网卡eth0的接收到的数据速率、发出去的数据速率;第3行:回环网卡lo的接收到的数据速率、发出的数据速率

技术分享技术分享

从左到右:进程的总数(264thr)、1个进程处于正在运行状态、177个进程处于 睡眠状态、0个处于其他状态

技术分享

技术分享技术分享

分别表示sda[1|2|3]磁盘设备的读、写速率



技术分享技术分享

分别挂载设备的内存使用情况,例:第二行分别表示"\"设备的名称、此设备已使用的内存大小、总共的内存大小。

技术分享

分别表示:进程占用的虚拟内存大小、进程占用的物理内存大小、进程占用的cpu百分比、进程占用的内存百分比、进程的PID号、运行此进程的用户、启动该进程的进程命令名称


  3..dtat命令

         用法:dstat [-afv] [options..] [delay [count]]

         选项

              -c:显示cpu性能指标相关的统计数据

              -d:显示disk相关的速率数据

              -g:显示page相关的速率数据

              -i:显示中断(interrupt)相关的速率数据

              -l:显示load average相关的统计数据(即负载)

              -m:显示内存相关的统计数据

              -n:显示网络的收发的数据的速率

              -N eth#:显示指定接口的

               -p:显示进程的相关的统计数据(新建进程的速率等)

              -r:io请求的速率

              -s:显示swap的相关数据

              -y:显示系统相关的数据,包括终端和进程切换

              --top-cpu:显示最占用cpu的进程

              --top-bio:显示最消耗block io的进程

              --top-mem:显示最占用内存的进程

              --top-io:最占有cpu的进程

              --ipc:显示用于进程间通信相关的速率数据

              --raw:显示raw套接字的相关数据

              --tcp:显示tcp套接字的相关数据

              --udp:显示udp套接字的相关数据

              --unix:显示inux sock接口相关统计数据

              --socket:显示上面所有的统计相关统计数据(total, tcp, udp, raw)

                  ip-fragments)

              -a:即-cdngy

  技术分享


4.vmstat命令

    用法:

    vmstat [-a] [-n] [-t] [-S unit] [delay [ count]]

               vmstat [-s] [-n] [-S unit]

               vmstat [-m] [-n] [delay [ count]]

               vmstat [-d] [-n] [delay [ count]]

               vmstat [-p disk partition] [-n] [delay [ count]]

               vmstat [-f]

               vmstat [-V]

     监测界面

    技术分享

    监测界面各参数代表含义

        procs

        r:运行的和等待(CPU时间片)运行的进程数,这个值也可以判断是否需要增加CPU(长期大于1) 

        b:处于不可中断状态的进程数,常见的情况是由IO引起的

        Memory

        swpd: 切换到交换内存上的内存(默认以KB为单位)。如果 swpd 的值不为0,或者还比较大,比如超过100M了,但是 si, so 的值长期为 0,这种情况我们可以不用担心,不会影响系统性能。

        free: 空闲的物理内存

        buff: 作为buffer cache的内存,对块设备的读写进行缓冲

        cache: 作为page cache的内存, 文件系统的cache。如果 cache 的值大的时候,说明cache住的文件数多,如果频繁访问到的文件都能被cache住,那么磁盘的读IO bi 会非常小。

        Swap

        si: 交换内存使用,由磁盘调入内存

        so: 交换内存使用,由内存调入磁盘

        【注意:内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响。磁盘IO和CPU资源都会被消耗。观察系统性能应结合空闲内存(free)、si、so,如果free很少,但是si,so也很少(基本上为0),那么不用担心,系统性能这时不会受到影响

     

    

         磁盘IO

        bi: 从块设备读入的数据总量(读磁盘) (KB/s)

        bo: 写入到块设备的数据总理(写磁盘) (KB/s)

        【注意:随机磁盘读写的时候,bi、bo 值越大(如超出1M),能看到CPU在IO等待的值也会越大

        System

        in: 每秒产生的中断次数

        cs: 每秒产生的上下文切换次数

        【注意:上面这2个值越大,会看到由内核消耗的CPU时间会越多Cpu】

        

        cpu

       usr: 用户进程消耗的CPU时间百分比 

         【注意:usr的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超过50% 的使用,就该考虑优化程序算法或者进行加速了】

     

       sys: 内核进程消耗的CPU时间百分比 

         【注意:sys 的值高时,说明系统内核消耗的CPU资源多,这并不是良性的表现】

     

       wa: IO等待消耗的CPU时间百分比

        【注意:wa 的值高时,说明IO等待比较严重,这可能是由于磁盘大量作随机访问造成,也有可能是磁盘的带宽出现瓶颈(块操作)】

        idl: CPU处在空闲状态时间百分比

        

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。