linux系统性能分析工具使用
一、开篇
该文通过实战性能分析来学习工具的使用和总结的大致分析步骤以供参考。
系统ubuntu 18.04
首先需安装如下:
sudo apt-get install sysbench
sudo apt-get install sysstat
二、性能分析
获取root;
sudo -i 快速切换到root,不加-i会以非登录模式切换,不会拿到root的环境的变量
开始前先查看当前系统的情况:
~# vmstat :
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 740352 385040 12516 112232 141 1207 6645 3878 1202 2485 16 8 73 3 0
cs:每秒上下文切换的次数 (当前2485次)
in:每秒中断的次数 (当前1202次)
r:就绪队列的长度,即正在运行和等待CPU的进程数 (当前2个)
b:处于不可中断睡眠状态的进程数 (当前0个)
接下来开启三个终端:
1号终端(用来模拟多个线程):
运行如下:
sysbench –threads=5 –max-time=300 threads run (以5个线程运行5min,模拟多线程切换)
2号终端(用于显示虚拟内存状态、进程、内存、I/O等系统整体运行状态):
1 (每隔1s输出一次数据)
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
6 0 787456 210536 19800 284736 46 227 1203 681 381 2985 5 3 92 1 0
5 0 787456 210140 19800 284800 0 0 0 0 2826 3074732 22 77 1 0 0
5 0 787456 210120 19800 284800 0 0 0 0 1682 3034090 26 74 0 0 0
5 0 785920 207784 19800 284800 1700 0 1700 0 3041 2965201 27 73 0 0 0
5 0 785920 208668 19800 284800 0 0 0 0 2293 3067836 23 76 1 0 0
5 0 785920 208480 19800 284800 4 0 4 0 1416 3196529 22 79 0 0 0
5 0 785920 208400 19800 284800 0 0 0 0 1493 3103016 25 75 0 0 0
5 0 785920 208492 19808 284792 4 0 4 24 2953 3141558 22 78 1 0 0
5 0 785920 209724 19808 284800 0 0 0 0 2560 3178636 23 77 0 0 0
cs:由2485骤然升到300万
r:超过2(我的是双核),说明有大量的CPU竞争
us和sy:这两项的CPU使用率加和基本接近甚至相等100%,其中sy高达80%,说明CPU主要被内核占用
in:上升到2000多,暗示可能有大量中断处理
3号终端(分析进程和线程的切换情况):
-tw -u 1 (-t:输出线程切换指标 -w:输出进程切换指标 -u:输出CPU使用指标)
UID TGID TID %usr %system %guest %wait %CPU CPU Command
0 11329 - 39.42 100.00 0.00 0.00 100.00 1 sysbench
UID TGID TID cswch/s nvcswch/s Command
0 - 11330 2790.00 592087.00 |__sysbench
0 - 11331 883.00 602458.00 |__sysbench
0 - 11332 3152.00 669423.00 |__sysbench
0 - 11333 1024.00 672398.00 |__sysbench
0 - 11334 1471.00 623371.00 |__sysbench
1000 11350 - 1.00 596.00 pidstat
19时53分54秒 1000 - 11350 1.00 596.00 |__pidstat
-d cat /proc/interrupts
CPU0 CPU1
RES: 1044941 1037576 Rescheduling interrupts
通过uptime查看系统负载;
使用mpstat,pidstat判断是CPU计算量大还是进程争抢CPU;
使用vmstat分析上下文切换次数,查看中断情况,进一步分析是CPU竞争激烈还是IO操作频繁;