命令记不住

登陆

Linux 系统性能工具介绍

Linux 系统性能工具介绍

一、top

top命令能够实时显示系统中各个进程的资源占用情况

top的使用方式top [-d number] | top [-bnp]

-d:number代表秒数,表示top命令显示的页面更新一次的间隔。默认是5秒
-b:以批次的方式执行top
-n:与-b结合使用,表示需要进行几次top命令的输出结果
-p:指定特定的pid进程号进行观察

顶部显示:

#top -b -bn1
top - 20:44:27 up 49 min,  5 users,  load average: 0.25, 0.53, 0.75
Tasks: 262 total,   1 running, 261 sleeping,   0 stopped,   0 zombie
%Cpu(s):  2.2 us,  2.9 sy,  0.0 ni, 94.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :  14993.3 total,   8004.5 free,   4331.1 used,   2657.6 buff/cache
MiB Swap:  65536.0 total,  65519.2 free,     16.8 used.  10238.2 avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
   1335 adminis+  20   0 5072108 510404 243480 S  12.5   3.3   3:03.71 firefox
   1775 adminis+  20   0 3284988 245536 139732 S   6.2   1.6   1:15.27 Web Content

解释:

# 第一行:
20:44:27        时间
up      系统运行的时间,格式为时分
users       当前系统登陆用户数
Looad average       系统负载,1/5/15分钟平均负载情况,如果这个数据高于逻辑cpu数,说明系统超符合运转
# 第二行:Tasks
total       进程总数
running     运行进程
sleeping    睡眠进程
stopped     停止进程
zombie      僵尸进程
# 第三行:%Cpu
us      用户空间占用cpu百分比
sys     内核空间占用cpu百分比
ni      用户进程空间内改变的优先级进程占用cpu百分比
id      空闲cpu占用百分比
wa      等待输入输出的cpu时间占用百分比
hi      硬中断占用cpu的百分比
si      软中断占用cpu的百分比
st      用于有虚拟机的情况,被虚拟机偷掉的百分比
# 第四行:MiB Mem
toal        物理内存总量
free        空闲内存总量
used        使用物理内存总量
buff/cache      用于内核缓存的内存量
# 第五行:Swap
total       交换区总量
free        空闲交换区总量
used        使用交换区总量
avail Mem       可用于进程下一次分配的物理内存数量
# 进程列表信息
PID     进程ID
USER        用户
PR      优先级
NI      NICE值,负值表示高于优先级,正值表示低于优先级
VIRT        虚拟内存,单位kb。VIRT=SWAR + RES
RES     进程常驻内存,单位KB
SHR     共享内存,计算某个进程所占的物理内存大小公式:RES – SHR  
CPU     cpu使用率
MEM     内存使用率
TIME+       进程使用CPU的时间统计,单位1/100秒
COMMAND     命令

# 快捷技巧
N – 以 PID 的大小的顺序排列表示进程列表
P – 以 CPU 占用率大小的顺序排列进程列表
M – 以内存占用率大小的顺序排列进程列表
h – 显示帮助
n – 设置在进程列表所显示进程的数量

二、iostat

基本使用:# iostat -d -k 1 10 查看TPS和吞吐量信息

#iostat -d -k 1 10
Linux 5.12.3-arch1-1 (opsxdev)  05/27/2021      _x86_64_        (8 CPU)

Device             tps    kB_read/s    kB_wrtn/s    kB_dscd/s    kB_read    kB_wrtn    kB_dscd
nvme0n1        1162.00     51812.00      7784.00         0.00      51812       7784          0

解释:

参数-d表示,显示设备使用状态,-k某些使用block为单位的列强制使用Kilobytes为单位;1  10 表示数据每隔1秒刷新一次,一共显示10批

tps     该设备每秒的传输次数,一次传输代表一次io请求,多个逻辑请求可能被合并为一次io请求,一次传输请求的大小是未知的
kB_read/s       每秒读
kB_wrtn/s       每秒写
kB_dscd/s   
kB_read         读总数据量
kB_wrtn         写总数据量

高阶使用: # iostat -d -x -k 1 10 查看设备而使用率(%util)、响应时间(await)

#iostat -d -x -k 1 10
Linux 5.12.3-arch1-1 (opsxdev)  05/27/2021      _x86_64_        (8 CPU)

Device            r/s     rkB/s   rrqm/s  %rrqm r_await rareq-sz     w/s     wkB/s   wrqm/s  %wrqm w_await wareq-sz     d/s     dkB/s   drqm/s  %drqm d_await dareq-sz     f/s f_await  aqu-sz  %util
nvme0n1         26.41   1098.67     6.52  19.79    0.22    41.60    9.13    861.08     8.79  49.04    4.83    94.29    0.00      0.00     0.00   0.00    0.00     0.00    0.60    0.55    0.05   1.95

解释:

r/s     每秒完成的读I/O设备次数
w/s     每秒完成的写I/O设备次数
rrqm/s      每秒这个设备相关的读取请求有多少被Merge了
wrqm/       每秒这个设备相关的写请求有多少被Merge了
rkB/s       每秒读Kb字节数
wkB/s       每秒写kb字节数
avgrq-sz        平均每次设备I/O操作的数据大小
avgqu-sz        平均I/O队列长度
await       平均每次I/O操作的等待时间
svctm       平均每次设备I/O操作的服务时间
%util       在统计时间内所有处理IO时间

三、vmstat

-a      显示活跃和非活跃内存
-f      显示系统启动至今的fork数量
-m      显示slabinfo
-n      只在开始时显示一次各字段名称
-s      显示内存相关统计信息及多种系统活动数量
delay   刷新时间间隔,如果不指定,只显示一条结果
count   刷新次数,如果不指定刷新次数,但指定了时间间隔,这时刷新次数为无穷
-d      显示磁盘相关统计信息
-p      显示指定磁盘分区统计信息
-S      使用指定单位显示。参数有k,K,m,M分别代表不同的字节

vmstat 1 每秒输出一条结果

# vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
14  0  16896 1099240 287316 7067944    0    0 21128    12 10535 21987 69  6 25  0  0

解释:

# procs(进程):
r:      运行队列中进程数量,这个值可以判断是否需要增加CPU,长期大大于1
b:      等待IO的进程数量
# memory
swpd    使用虚拟内存大小
free   空闲物理内存
buff    用做缓冲的内存大小
cache   用作缓存的内存大小
# swap
si      每秒从交换区写到内存的大小,由磁盘调入内存
so      每秒写入交换区的内存大小,由内存调入磁盘
bi      每秒读取的块数
bo      每秒写入的块数
# system
in      每秒中断次数,包括时钟中断
cs      每秒上下文切换
# cpu
us      用户空间占用cpu的百分比
sy      内核空间占用cpu的百分比
id      空闲时间占用cpu的百分比
wa      读写io等待占用cpu的百分比
st      软中断占用cpu的百分比

四、磁盘IO排查思路

1.vmstat 1 10 查内存读写情况

2.iostat -x 1 检查磁盘读写情况

3.top -d 1查看应用负载

4.strace -p 查看应用执行动作

推荐阅读