进程相关概念

  • 定义:进程(Process)是运行中的程序的一个副本,是被载入内存的一个指令集合

  • 进程ID(PID, Process ID):标记每个进程的编号

  • task struct: Linux内核存储进程信息的数据结构格式

  • task list: 多个任务的的task struct组成的链表

  • 进程创建:

    • 第一个进程:init(CentOS 6), systemd(CentOS 7)
    • 子进程由父进程创建:CoW,子进程只在发生变化时才拥有独立内存空间
  • 进程优先级:

    • 系统优先级:0-139,数字越小优先级越高
    • 实时优先级:99-0,数字越大优先级越高,对应系统优先级0-99
    • nice优先级:-20-19,数字越小优先级越高,对应系统优先级100-139
    • 实时优先级属于静态优先级,高优先级进程释放CPU后低优先级进程运行
    • nice优先级属于动态优先级,系统内核会根据进程对CPU的占用情况动态调整各进程的优先级,使每个进程都能够均匀使用CPU资源
  • UID、GID、和SELinux语境决定对文件系统的存取和访问权限

  • 模式切换

    • 用户模式 =》内核模式 =》用户模式 叫模式切换

进程控制块PCB包含信息

  • 进程id、用户id和组id
  • 程序计数器
  • 进程的状态(有就绪、运行、阻塞)
  • 进程切换时需要保存和恢复的CPU寄存器的值
  • 描述虚拟地址空间的信息
  • 描述控制终端的信息
  • 当前工作目录
  • 文件描述符表,包含很多指向file结构体的指针
  • 进程可以使用的资源上限(ulimit –a命令可以查看)
  • 输入输出状态:配置进程使用I/O设备

进程内存

  • Page Frame:内存存储单位为页面(page),默认大小4KB
    • getconf -a |grep -i size
  • LRU:Least Recently Used 近期最少使用算法,释放内存使用
  • 物理地址空间和线性地址空间 MMU (Memory Management Unit):负责转换线性和物理地址 TLB (Translation Lookaside Buffer):翻译后备缓冲器,用于保存虚拟地址和物理地址映射关系的缓存

物理地址空间和虚拟地址空间

MMU:Memory Management Unit 负责虚拟地址转换为物理地址

程序在访问一个内存地址指向的内存时,CPU不是直接把这个地址送到内存总线上,而是被送到MMU (Memory Management Unit),然后把这个内存地址映射到实际的物理内存地址上,然后通过总线再去 访问内存,程序操作的地址称为虚拟内存地址。

进程类型

  • 守护进程(daemon):在系统引导过程中启动的进程,和终端无关
  • 前台进程:通过终端启动的进程,和终端相关
  • 守护进程与前台进程可以相互转化

按进程资源使用的分类:

CPU-Bound:CPU 密集型,非交互

IO-Bound:IO 密集型,交互

进程使用内存问题

  • 内存泄漏:Memory Leak
    • 指程序中用malloc或new申请了一块内存,但是没有用free或delete将内存释放,导致这块内存一直处于占用状态
  • 内存溢出:Memory Overflow
    • 指程序申请了10M的空间,但是在这个空间写入10M以上字节的数据,就是溢出
  • 内存不足:OOM
    • OOM 即 Out Of Memory,“内存用完了”,在情况在java程序中比较常见。系统会选一个进程将之杀死

进程状态

  • 运行态(running)
  • 就绪态(ready)
  • 睡眠态(sleeping):分为可中断(interruptable)(内存中有数据,随时可以唤醒)和不可中断(uninterruptable),内存数据不完整,要去磁盘io操作
  • 停止态(stopped):暂停于内存,但不会被调度,除非手动启动
  • 僵死态(zombie):结束进程,父进程收尸前,或者(父进程关闭,子进程未关闭)

io解释

一次io,进程中要的数据,内存中没有,不得不去磁盘里获得,再装入内存。

一次io,从磁盘数据到内核内存,然后把数据从内核内存复制到进程内存。

进程概览图

查看进程中的线程

grep -i threads /proc/PID/status

查看进程打开的文件

cat /proc/PID/fd

进程调度器

进程管理和性能相关工具

pstree

打印进程树

1yum install psmisc
  • 选项: -p 显示PID -n 以PID数字大小排序,默认字母排序
  • 内容中由大括号括起的为线程
  • 进程包含多个线程,线程间共享内存
  • 线程系统开销小但稳定性差,一个线程出错容易导致相邻线程出错
  • 进程系统开销大但稳定性好,进程间的内存空间独立,不会受到其他进程干扰

ps

显示进程信息

选项有三种风格: 1 UNIX options, which may be grouped and must be preceded by a dash. 2 BSD options, which may be grouped and must not be used with a dash. 3 GNU long options, which are preceded by two dashes.

相同字母不同风格的选项代表的意义不同,即a和-a是两个不同意义的选项

支持三种选项:

UNIX选项 如: -A -e

GNU选项 如: –help

BSD选项 如

 1USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
 2USER: 进程属主 
 3PID:  进程号
 4%CPU  进程占用的CPU百分比 
 5MEM: 占用内存的百分比   
 6VSZ :virtual memory size  虚拟内存集   一般 > RSS
 7        虚拟内存集,线性内存,即系统声明可以提供进程使用的内存
 8RSS:ReSident Size,常驻内存集 即进程实际使用的内存
 9TTY:哪个终端启动的
10STAT:进程状态
11    R:running
12    S:interruptable sleeping
13    D:uniteruptable sleeping
14    T:stopped
15    Z:zombie 僵死
16    +:前台进程
17    l:多线程进程
18    L:内存分页并带锁
19    N: 低优先级进程
20    <:高优先级进程
21    s:session leader  (一个进程启动起来 可能会引导其他的相关进程,它终止了,
22    那么它进程之下的进程也会被终止)(nginx master , php master) , 会话(子进程)发起者
23START   该进程被启动时间;
24TIME      该进程实际使用CPU运行的时间;
25COMMAND   命令的名称和参数;

找到未知进程的执行程序文件路径

1[root@centos8 ~]#ls -l /proc/1272/exe
2lrwxrwxrwx 1 root root 0 Jan  4 15:47 /proc/1272/exe -> /usr/bin/bash
  • 常用组合之一:aux

    • 选项:
      • a:所有与终端相关的进程;
      • x:所有与终端无关的进程;
      • u:以用户为中心组织进程状态信息显示;
  • 常用组合之二:-ef

    • -e:显示所有进程
    • -f:显示完整格式的进程信息
  • 常用组合之三:-eFH

    • -F:显示完整格式的进程信息;
    • -H:以层级结构显示进程的相关信息;

    C: cpu utilization cpu利用率

    PSR:运行于哪颗CPU之上

  • 常用组合之四:-eo, axo

    • o field1, field2,…:自定义要显示的字段列表,以逗号分隔
    • 常用的field:pid, ni, pri, psr, pcpu, stat, comm, tty, ppid, rtprio
      • ni:nice值;
      • pri:priority, 优先级;
      • rtprio:real time priority,实时优先级
      • psr:processor CPU编号

prtstat

可以显示进程信息,来自于psmisc包

1prtstat [options] PID ... 

nice 、renice

进程优先级调整 [-20,19]

静态优先级:100-139

进程默认启动时的nice值为0,优先级为120

只有根用户才能降低nice值(提高优先性)

以指定的优先级来启动进程

1nice [OPTION] [COMMAND [ARG]...]

renice: 可以调整正在执行中的进程的优先级

renice [-n] priority pid…

1# 开启新进程 command并设置优先级-20
2nice -n -20  `command ` & 
3# 更改运行中的进程优先级
4renice -n -20 --pid `pid`; # -20 优先级最高

不同的 nice 值对性能的影响

vruntime表示 pid 在cpu 上的时间消耗,调度器将选择vruntime最小的进程运行。

进程 a 的 nice 值为-2; 运行 1586个单位时间,vruntime 增加 1024个单位 进程 b 的 nice 值 3; 运行 526个单位时间,vruntime 增加 1024个 单位;

1586/1586+526 =0.7509 从 top 看进程 a 的 cpu 使用率为 75,进程 b 为 25.

pgrep

搜索进程

pgrep [options] pattern

1-u uid: effective user,生效者
2-U uid: real user,真正发起运行命令者
3-t terminal: 与指定终端相关的进程
4-l: 显示进程名
5-a: 显示完整格式的进程名
6-P pid: 显示指定进程的子进程

以指定终端/dev/pts/1搜索相关进程,以指定PId 2874搜索其子进程

1pgrep -lt pts/1
2pgrep -lP 2874  //2874进程号的子进程
3在hellopeiyang账户下执行passwd命令。passwd命令发起者为hellopeiyang,但生效者为root用户,此时-U选项下有passwd进程,而-u选项下没有passwd进程。
4pgrep -lU  hellopeiyang
5pgrep -lu hellopeiyang

pidof

按确切的程序名称搜索PID

pidof php-fpm //查php-fpm的pid list

uptime

/proc/uptime 包括两个值,单位 s

系统启动时长

空闲进程的总时长(按总的CPU核数计算)

uptime 和 w 显示以下内容

  • 当前时间
  • 系统已启动的时间
  • 当前上线人数
  • 系统平均负载(1、5、15分钟的平均负载,一般不会超过1,超过5时建议警报)

系统平均负载: 指在特定时间间隔内运行队列中的平均进程数,通常每个CPU内核的当前活动进程数不大于3,那么系统的性能良好。如果每个CPU内核的任务数大于5,那么此主机的性能有严重问题

如:linux主机是1个双核CPU,当Load Average 为6的时候说明机器已经被充分使用

mpstat

显示CPU相关统计

来自于sysstat包

1
2yum install -y sysstat
3mpstat
4mpstat 1 3  

top、htop

  • top第一行=uptime

    top - 21:53:23 up 2 days, 22:42, 1 user, load average: 0.07, 0.04, 0.05

  • top第二行

    Tasks: 113 total, 2 running, 111 sleeping, 0 stopped, 0 zombie

    tasks:总共多少进程,运行的进程数,睡眠的进程数,停止进程数,僵尸进程数

  • cpu行 第三行

    %Cpu(s): 0.3 us, 0.0 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st

1    us :用户空间cpu占用百分比
2    sy:内核空间cpu占用百分比
3    ni:用户进程空间内改 变过优先级的进程占用CPU百分比
4    id:cpu处于空闲状态的时间百分比
5    wa:等待输入输出的CPU时间百分比 (如果很大,磁盘不行太慢了)
6    hi: cpu处理硬件中断所占用的cpu 百分比
7    si: 软中断(用与模式切换)所占用的cpu 百分比
8    st: linux被虚拟化程序偷走的时间百分比。 (虚拟机占用百分比|虚拟机偷走的时间)
9    cs(context switch) 进程切换
1# 查看物理CPU个数
2cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
3
4# 查看每个物理CPU中core的个数(即核数)
5cat /proc/cpuinfo| grep "cpu cores"| uniq
6
7# 查看逻辑CPU的个数
8cat /proc/cpuinfo| grep "processor"| wc -l
  • memory行

    KiB Mem : 1017056 total, 398912 free, 328128 used, 290016 buff/cache

1  191272k total    物理内存总量
2 173656k used     使用的物理内存总量
3 17616k free      空闲内存总量
4 22052k buff/cache    用作内核缓存的内存量
5 真正可用内存=free + buff/cache            (缓冲:负责写 和 缓存: 负责读)

交换分区,这个不用关心,线上应该不会开启这个的。

 1统计信息区域
 2序号  列名    含义
 3a    PID     进程id
 4b    PPID    父进程id
 5c    RUSER   Real user name
 6d    UID     进程所有者的用户id
 7e    USER    进程所有者的用户名
 8f    GROUP   进程所有者的组名
 9g    TTY     启动进程的终端名。不是从终端启动的进程则显示为 ?
10h    PR      优先级
11i    NI      nice值。负值表示高优先级,正值表示低优先级
12j    P       最后使用的CPU,仅在多CPU环境下有意义
13k    %CPU    上次更新到现在的CPU时间占用百分比
14l    TIME    进程使用的CPU时间总计,单位秒
15m    TIME+   进程使用的CPU时间总计,单位1/100秒
16n    %MEM    进程使用的物理内存百分比
17o    VIRT    进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
18p    SWAP    进程使用的虚拟内存中,被换出的大小,单位kb。
19q    RES     进程使用的、未被换出的物理内存大小(进程占用的物理内存总量),单位kb。RES=CODE+DATA 
20r    CODE    可执行代码占用的物理内存大小,单位kb
21s    DATA    可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
22t    SHR     共享内存大小(进程和其它进程共享的内存总量),单位kb
23u    nFLT    页面错误次数
24v    nDRT    最后一次写入到现在,被修改过的页面数。
25w    S       进程状态(D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程)
26x    COMMAND 命令名/命令行
27y    WCHAN   若该进程在睡眠,则显示睡眠中的系统函数名
28z    Flags   任务标志,参考 sched.h
 1top内排序:
 2    P:以占据CPU百分比排序 
 3    M:以占据内存百分比排序 
 4    T:累积占用CPU时间排序
 5首部信息: 
 6    uptime信息:l命令 
 7    tasks及cpu信息:t命令 
 8    cpu分别显示:1 (数字)
 9内存信息:m命令 
10选项: 
11    -d #:指定刷新时间间隔,默认为3秒; 
12    -b:以批次方式显示; 
13    -n #:显示多少批次;
14 其他命令
15    退出命令:q
16    修改刷新时间间隔:s
17    终止指定进程:k
18    保存文件:W
19top -b -n 3 //显示3次
20top -d 5     //5秒一次

Memory:

VSZ : 虚拟内存集
RSS : 常驻内存集
SHM:共享内存集

htop 界面是可以点的

htop命令:

选项:
        -d #    :指定延迟时间间隔
        -u UserName :仅显示指定用户的进程
        -s   column             已制定字段进行排序
    子命令:
            l  :显示选定的进程打开的文件列表
            s :   跟踪选定的进程的系统调用
            t:以层级关系显示各进程状态
            a: 将选定的进程绑定至某指定的cpu 核心

free

可以显示内存空间使用状态

free [option]

1-b 以字节为单位
2-m 以MB为单位
3-g 以GB为单位
4-h 易读格式
5-o 不显示-/+buffers/cache行
6-t  显示RAM + swap的总和
7-s n 刷新间隔为n秒
8-c n 刷新n次后即退出

free与 avaliable 的区别

avaliable 大于 free , 小于 free+buffer/cache 内核会将部分空闲内存用于缓存,以提高文件系统和磁盘i/o 的性能

avaliable 在计算时包含了可回收的缓存;

并不是所有的[buffer/cache]内容都可以被挥手

avaliable 它其实是个估算值

vmstat

虚拟内存信息

vmstat [options] [delay [count]]

选项: -s 显示内存的统计数据

 1 r:可运行(正运行或等待运行)进程的个数,和核心数有关
 2 b:处于不可中断睡眠态的进程个数(被阻塞的队列的长度)
 3memory:
 4 swpd: 交换内存的使用总量
 5 free:空闲物理内存总量
 6 buffer:用于buffer的内存总量,用于写
 7 cache:用于cache的内存总量,用于读
 8swap:
 9 si:从磁盘交换进内存的数据速率(kb/s)
10 so:从内存交换至磁盘的数据速率(kb/s)
11io:
12 bi:从块设备读入数据到系统的速率(kb/s)
13 bo: 保存数据至块设备的速率
14system:
15 in: interrupts 中断速率,包括时钟
16 cs: context switch     进程切换速率
17cpu:
18 us:Time spent running non-kernel code
19 sy: Time spent running kernel code
20 id: Time spent idle. Linux 2.5.41前,包括IO-wait time.
21 wa: Time spent waiting for IO.  2.5.41前,包括in idle
1vmstat 2
2vmstat 1 3 
3vmstat -s 

iotop

查看每个进程是如何使用IO

iotop命令是一个用来监视磁盘I/O使用状况的top类工具iotop具有与top相似的UI,其中包括PID、用 户、I/O、进程等相关信息,可查看每个进程是如何使用IO

iftop

显示网络带宽使用情况

通过EPEL源的 iftop 包

1iftop -ni eth0
2iftop  # 默认是k bite  不是KB

nload

查看网络实时吞吐量

nload 是一个实时监控网络流量和带宽使用情况,以数值和动态图展示进出的流量情况,通过EPEL源安装

界面操作:

上下方向键、左右方向键、enter键或者tab键都就可以切换查看多个网卡的流量情况

按 F2 显示选项窗口

按 q 或者 Ctrl+C 退出 nload

 1#默认只查看第一个网络的流量进出情况
 2nload
 3#在nload后面指定网卡,可以指定多个,按左右键分别显示网卡状态
 4nload eth0 eth1
 5#设置刷新间隔:默认刷新间隔是100毫秒,可通过 -t 命令设置刷新时间(单位是毫秒)
 6nload -t 500 eth0
 7#设置单位:显示两种单位一种是显示Bit/s、一种是显示Byte/s,默认是以Bit/s,也可不显示/s
 8#-u h|b|k|m|g|H|B|K|M|G 表示的含义: h: auto, b: Bit/s, k: kBit/s, m: MBit/s, H: 
 9auto, B: Byte/s, K: kByte/s, M: MByte/s
10nload -u M eth0

nethogs

查看进程网络带宽的使用情况

NetHogs是一个开源的命令行工具(类似于Linux的top命令),用来按进程或程序实时统计网络带宽使用率。

1#红帽系统的nethogs包来自于EPEL源
2[root@rocky8 ~]#yum -y install nethogs
3[root@ubuntu1804 ~]#apt -y install nethogs
4[root@ubuntu1804 ~]#nethogs

pmap

report memory map of a process 打印进程的内存映射

pmap [options] pid […]

-x:显示详细格式的信息;

另一种查看方式:cat /proc/PID/maps

lsof

查看进程打开文件

在linux环境下,一切皆文件,用户通过文件不仅可以访问常规数据,还可以访问网络连接和硬件如传输控制协议 (TCP) 和用户数据报协议 (UDP)套接字等, 系统在后台都为该应用程序分配了一个文件描述符

 1-a:列出打开文件存在的进程
 2-c<进程名>:列出指定进程所打开的文件
 3-g:列出GID号进程详情
 4-d<文件号>:列出占用该文件号的进程
 5+d<目录>:列出目录下被打开的文件
 6+D<目录>:递归列出目录下被打开的文件
 7-n<目录>:列出使用NFS的文件
 8-i<条件>:列出符合条件的进程(4、6、协议、:端口、 @ip )
 9-p<进程号>:列出指定进程号所打开的文件
10-u:列出UID号进程详情
11-h:显示帮助信息
12-v:显示版本信息。
13-n: 不反向解析网络名字
 1# lsof 列出当前所有打开的文件
 2lsof|head
 3
 4# 查看当前哪个进程正在使用此文件
 5lsof /var/log/messages
 6
 7#查看由登陆用户启动而非系统启动的进程
 8lsof `tty`
 9#指定进程号,可以查看该进程打开的文件
10lsof -p 9527
11lsof -p `pidof bc`
12
13#查看指定程序打开的文件
14lsof -c httpd
15
16#查看指定用户打开的文件
17lsof -u root | more
18
19#查看指定目录下被打开的文件,参数+D为递归列出目录下被打开的文件,参数+d为列出目录下被打开的文件
20lsof +D /var/log/ 
21lsof +d /var/log/ 
22
23
24#查看所有网络连接,通过参数-i查看网络连接的情况,包括连接的ip、端口等以及一些服务的连接情况,例
25如:sshd等。也可以通过指定ip查看该ip的网络连接情况
26lsof -i –n      
27lsof -i@127.0.0.1
28 
29#查看端口连接情况,通过参数-i:端口可以查看端口的占用情况,-i参数还有查看协议,ip的连接情况等
30lsof -i :80 -n
31 
32#查看指定进程打开的网络连接,参数-i、-a、-p等,-i查看网络连接情况,-a查看存在的进程,-p指定进
3334lsof -i –n -a -p 9527
35 
36#查看指定状态的网络连接,-n:no host names, -P:no port names,-i TCP指定协议,-s指定协议状
37态通过多个参数可以清晰的查看网络连接情况、协议连接情况等
38lsof -n -P -i TCP -s TCP:ESTABLISHED

dstat

系统资源统计

dstat由pcp-system-tools包提供,但安装dstat包即可, 可用于代替 vmstat,iostat功能

dstat [-afv] [options..] [delay [count]]

 1-c 显示cpu相关信息
 2-C #,#,...,total
 3-d 显示disk相关信息
 4-D total,sda,sdb,...
 5-g 显示page相关统计数据
 6-m 显示memory相关统计数据
 7-n 显示network相关统计数据
 8-p 显示process相关统计数据
 9-r 显示io请求相关的统计数据
10-s 显示swapped相关的统计数据
11--tcp
12--udp
13--unix
14--raw
15--socket
16--ipc
17--top-cpu:显示最占用CPU的进程
18--top-io: 显示最占用io的进程
19--top-mem: 显示最占用内存的进程
20--top-latency: 显示延迟最大的进程
1yum -y install dstat
2
3dstat 2			#2秒显示一次
4
5dstat 2 5       # 2秒一次显示5次

netstat

1netstat -n  # 拒绝显示别名 能显示数字就显示数字
2     -l       # 仅列出 listen监听的服务状态
3     -t      # tcp 相关
4     -u       # udp 相关
5     -i       # 显示自动匹配接口的信息 ,网络接口
6     -c       # 间隔时间 多久 运行 netstat
7  netstat -ntlp # 端口和pid 都会展示
8  netstat -i #网络传输有没有出错 
 1[ubuntu@us02 ~ 07:34:48]$sudo netstat -i
 2Kernel Interface table
 3Iface      MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
 4eth0      1500 18218108277      0      0 0      13960208081      0      0      0 BMRU
 5lo       65536 24491964051      0      0 0      24491964051      0      0      0 LRU
 6[ubuntu@us02 ~ 07:34:52]$sudo netstat -r
 7Kernel IP routing table
 8Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
 9default         _gateway        0.0.0.0         UG        0 0          0 eth0
10172.26.0.0      0.0.0.0         255.255.240.0   U         0 0          0 eth0

ss

1ss -ntl # 只显示监听的套接字
2ss -s # 打印统计概要
3sudo ss -t4 state time-wait # 列出time-wait状态的ipv4套接字
4sudo ss -t4 state established
5sudo ss -t4 state established | grep http

iostat

 1xxx@xxx03:~$ iostat
 2Linux 4.15.0-29-generic (xxx.com)     08/21/2022      _x86_64_        (40 CPU)
 3
 4avg-cpu:  %user   %nice %system %iowait  %steal   %idle
 5           0.26    0.00    0.14    0.00    0.00   99.60
 6
 7Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
 8sda               8.10         0.69       137.64   11144755 2209216172
 9dm-0             12.72         0.69       137.62   11134461 2208807668
10dm-1              0.00         0.00         0.00       3316          0
 1解释说明:
 2avg-cpu: 总体cpu使用情况统计信息,对于多核cpu,这里为所有cpu的平均值
 3%user: 在用户级别运行所使用的CPU的百分比.
 4%nice: nice操作所使用的CPU的百分比.
 5%sys: 在系统级别(kernel)运行所使用CPU的百分比.
 6%iowait: CPU等待硬件I/O时,所占用CPU百分比.
 7%idle: CPU空闲时间的百分比.
 8
 9Device段:各磁盘设备的IO统计信息
10tps: 每秒钟发送到的I/O请求数.
11Blk_read/s: 每秒读取的block数.
12Blk_wrtn/s: 每秒写入的block数.
13Blk_read:  读入的block总数.
14Blk_wrtn: 写入的block总数.

sar

网络 io

sudo apt install sysstat -y

sar -n DEV 2 已 2 秒间隔显示所有网卡的流速

 1vagrant@vagrant:~$ sar -n DEV 2
 2Linux 5.15.0-92-generic (vagrant) 	05/05/2024 	_aarch64_	(2 CPU)
 3
 409:37:05 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil
 509:37:07 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
 609:37:07 PM      eth0      2.00      2.50      0.14      0.31      0.00      0.00      0.00      0.00
 709:37:07 PM      eth1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
 809:37:07 PM   docker0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
 9^C
10
11Average:        IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil
12Average:           lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
13Average:         eth0      2.00      2.50      0.14      0.31      0.00      0.00      0.00      0.00
14Average:         eth1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15Average:      docker0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
16vagrant@vagrant:~$

磁盘 io

sar -d 2 3 -p sar -d [interval] [times] [-p]

磁盘、磁盘传输次数、读取千字节数、写入千字节数、平均读写千字节数、平均队列深度 、平均操作等待时延 ms、平均执行时间 ms 、使用率