进程相关概念
-
定义:进程(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指定进
33程
34lsof -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 、使用率