Dool

1
Dool 是一个命令行工具,用于监控系统的许多方面:CPU、内存、网络、平均负载等。它还包括一个强大的插件架构,可以监控其他系统指标。

安装

1
2
3
1. 下载最新版本的存档文件或克隆 Git 存储库:https://github.com/scottchiefbaker/dool/releases
2. 将存档解压到系统上适当的临时目录
3. 运行install.py脚本

参数

1. total-cpu-usage:

usr sys idl wai hiq siq
用户时间占比 系统时间占比 空闲时间占比 等待时间占比 硬中断 软中断

2. dsk/total:

read writ
磁盘的读总数(KB或者MB) 磁盘的写总数(KB或者MB)

3. net/total:

recv send
网络设备接收的数据总数(KB或者MB) 网络设备发送的数据总数(KB或者MB)

4. paging(系统的分页活动):

in out
换入次数 换出次数

5. system(系统统计):

int csw
终端次数 上下文切换次数

用法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1. 最常见的用法: --more预设并每 15 秒输出一次数据。可用预设为--defaults、--more、 或--all。如果没有指定延迟,Dool将默认每秒输出一次
dool --more 15 # 深色模式
dool --more --bw 15 # 灯光模式

2. 查看插件列表
dool --version

3. 显示 CPU 使用率和每个网络接口的使用情况
dool --cpu --net --time --full

4. 显示磁盘 IO 总量、/dev/vda 和 /dev/sdd
dool --disk -D total,vda,sdd

5. 显示 eth0, eth1 和 flannel.1, cni0, ens18的网络流量
dool --net -N eth0,eth1,ens18,flannel.1,cni0

示例

1. CPU性能分析

1
2
# 实时输出各个进程的CPU占用情况,并以一个实时的“top”列表形式展示,可以快速发现CPU占用率最高的进程,以便进行后续的优化和改进。
dool --cpu --top-cpu

2. 磁盘IO性能分析

1
2
# 实时输出各个分区的磁盘IO数据,并以一个实时的“top”列表形式展示,可以快速发现磁盘I/O占用率最高的分区,以便进行后续的优化和改进。
dool --disk --top-bio

3. 网络性能分析

1
2
# 实时输出TCP和UDP连接情况、网络流量数据等,以帮助我们分析系统中的网络性能问题,并采取相应的措施。
dool --net --tcp --udp

4. 查看时间、CPU、磁盘读写、IO、负载、内存、网络、最高的CPU占用和最高的内存占用

1
dool -tcdrlmn --top-cpu --top-mem

5. 查看8颗核心,每颗核心的使用情况和CPU使用情况

1
dool  -cl  -C  0,1,2,3,4,5,6,7   --top-cpu

iostat

1. 安装方式

1
yum install sysstat

2. 常用命令格式

1
2
3
4
5
6
7
8
9
10
11
Iostat [参数] [时间] [次数]
参数说明:
-c 显示CPU使用情况
-d 显示磁盘使用情况
-k 以K为单位显示
-m 以M为单位显示
-n 显示NFS使用情况
-N 显示磁盘阵列(LVM)信息
-P 可以报告出每块磁盘的每个分区的使用情况
-t 显示每秒向终端读取和写入的字符数和CPU的信息
-X 显示详细信息

3. cpu说明

1
2
3
4
5
6
7
8
# iostat -c

%user:CPU处在用户模式下的时间百分比。
%nice:CPU 处在带NICE值的用户模式下的时间百分比
%system:CPU处在系统模式下的时间百分比
%iowait:CPU等待输入输出完成时间的百分比
%steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比。
%idle:CPU空闲时间百分比

4. Device说明

1
2
3
4
5
6
7
# iostat -d

tps:设备每秒的传输次数,也就是每秒I/O次数(IOPS,磁盘连续读和连续写之和)
kB_read/s:每秒从设备读出的数据量(kB/s)
kB_wrtn/s:每秒向设备写入的数据量(kB/s)
kB_read: 读出数据 的总量(kB)
kB_wrtn:写入数据 的总量(kB

5. Device详细说明

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# iostat -x

rrqm/s:每秒合并到设备的读取请求数
wrqm/s:每秒合并到设备的写请求数
r/s:每秒向磁盘发起的读操作数
w/s:每秒向磁盘发起的写操作数
rkB/s:每秒读多少个K字节
wkB/s: 每秒写多少个K字节
avgrq-sz:平均每次设备I/O操作的数据大小
avgqu-sz:平均I/O队列长度
await:平均每次设备I/O操作的等待时间(ms),一般,系统I/O响应时间应该低于5ms。若大于10ms就是较大了
r_await:每个读操作平均所需的时间。(包括硬盘设备读操作的时间,在kernel队列中等待的时间)
w_await:每个写操作平均所需的时间。(包括硬盘设备写操作的时间,在kernel队列中等待的时间)
svctm:平均每次设备I/O操作的服务时间 (ms)
%util:一秒中有百分之多少的时间用于I/O操作(被IO消耗的CPU百分比),一般地,如果是100%表示设备已经接近满负荷运行

6. 主要分析说明

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
%iowait过高的话,则表示硬盘存在I/O瓶颈。

%idle很高但是系统响应很慢,可能是CPU等待分配内存导致的。应加大内存容量。

-%idle如果持续低于10,则表明CPU处理能力相对较低,也就是说CPU是系统中的瓶颈了。

%util差不多到100%,说明产生的I/O请求过多,I/O系统接近满负荷

avgqu-sz:如果I/O请求压力持续超出磁盘处理能力,该值将增加,因为会造成拥塞。

如果单块磁盘的队列长度持续超过2,一般认为该磁盘存在I/O性能问题。

对于顺序读写频繁的,需要传输大块数据的任务,需要关注磁盘的吞吐量( kB_read/s ,kB_wrtn/s)。

对于磁盘随机读写频繁的任务,需要关注(tps

vmstat

1
2
获得有关进程、虚存、页面交换空间及CPU活动信息
可以看到整个系统的负载情况,而不是单独看某个进程的负载情况

vmstat 说明

r b swpd free buff cache si so bi bo in cs us sy id wa st
运行队列(多少个进程真的分配到CPU) 阻塞的进程数量 虚拟机已使用的大小 空闲的物理内存的大小 已用buff大小,对块设备的读写进行缓存 已用的cache大小,文件系统的cache 每秒从磁盘读入虚拟内存的大小 每秒虚拟内存写入磁盘的大小 (读磁盘)系统从块设备那里每秒接收的块数量 (写磁盘)每秒发送给块设备的块数量 每秒上下文切换数 每秒CPU的中断次数,包括时间中断 用户CPU时间(用户态使用的cpu时间比) 系统CPU时间(系统态使用的cpu时间比) 空闲CPU时间(空闲CPU时间占比) 等待IO的CPU时间(cpu等待磁盘写入完成时间) 虚拟机偷取时间

2. 主要分析说明

1
id + us + sy = 100,id是空闲CPU使用率,us是用户CPU使用率,sy是系统CPU使用率