Linux性能测试常用命令.docx
《Linux性能测试常用命令.docx》由会员分享,可在线阅读,更多相关《Linux性能测试常用命令.docx(47页珍藏版)》请在冰豆网上搜索。
![Linux性能测试常用命令.docx](https://file1.bdocx.com/fileroot1/2023-4/21/bde71bfd-d013-48ae-b0e4-8932bff03ad1/bde71bfd-d013-48ae-b0e4-8932bff03ad11.gif)
Linux性能测试常用命令
Linux性能测试常用命令
Top
Sar
Vmstat
Iostat
Sar-nDEV
/proc文件系统
Top
显示系统当前的进程和其他状况;
top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最“敏感”的任务列表.该命令可以按CPU使用.内存使用和执行时间对任务进行排序;而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定.
使用格式
top[-][d][p][q][c][C][S][s] [n]
参数说明
d指定每两次屏幕信息刷新之间的时间间隔。
当然用户可以使用s交互命令来改变之。
p通过指定监控进程ID来仅仅监控某个进程的状态。
q该选项将使top没有任何延迟的进行刷新。
如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行。
S指定累计模式
s使top命令在安全模式中运行。
这将去除交互命令所带来的潜在危险。
i 使top不显示任何闲置或者僵死进程。
c 显示整个命令行而不只是显示命令名
其他
下面介绍在top命令执行过程中可以使用的一些交互命令。
从使用角度来看,熟练的掌握这些命令比掌握选项还重要一些。
这些命令都是单字母的,如果在命令行选项中使用了s选项,则可能其中一些命令会被屏蔽掉。
Ctrl+L擦除并且重写屏幕。
h或者?
显示帮助画面,给出一些简短的命令总结说明。
k终止一个进程。
系统将提示用户输入需要终止的进程PID,以及需要发送给该进程什么样的信号。
一般的终止进程可以使用15信号;如果不能正常结束那就使用信号9强制结束该进程。
默认值是信号15。
在安全模式中此命令被屏蔽。
i忽略闲置和僵死进程。
这是一个开关式命令。
q退出程序。
r重新安排一个进程的优先级别。
系统提示用户输入需要改变的进程PID以及需要设置的进程优先级值。
输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权。
默认值是10。
S切换到累计模式。
s改变两次刷新之间的延迟时间。
系统将提示用户输入新的时间,单位为s。
如果有小数,就换算成ms。
输入0值则系统将不断刷新,默认值是5s。
需要注意的是如果设置太小的时间,很可能会引起不断刷新,从而根本来不及看清显示的情况,而且系统负载也会大大增加。
f或者F从当前显示中添加或者删除项目。
o或者O改变显示项目的顺序。
l切换显示平均负载和启动时间信息。
m切换显示内存信息。
t切换显示进程和CPU状态信息。
c切换显示命令名称和完整命令行。
M根据驻留内存大小进行排序。
P根据CPU使用百分比大小进行排序。
T根据时间/累计时间进行排序。
W将当前设置写入~/.toprc文件中。
这是写top配置文件的推荐方法。
实例说明:
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。
下面详细介绍它的使用方法。
top-01:
06:
48up 1:
22, 1user, loadaverage:
0.06,0.60,0.48
Tasks:
29total, 1running, 28sleeping, 0stopped, 0zombie
Cpu(s):
0.3%us, 1.0%sy, 0.0%ni,98.7%id, 0.0%wa, 0.0%hi, 0.0%si
Mem:
191272ktotal, 173656kused, 17616kfree, 22052kbuffers
Swap:
192772ktotal, 0kused, 192772kfree, 123988kcached
PIDUSER PR NI VIRT RES SHRS%CPU%MEM TIME+ COMMAND
1379root 16 0 797624561980S 0.7 1.3 0:
11.03sshd
14704root 16 0 2128 980 796R 0.7 0.5 0:
02.72top
1root 16 0 1992 632 544S 0.0 0.3 0:
00.90init
2root 34 19 0 0 0S 0.0 0.0 0:
00.00ksoftirqd/0
3root RT 0 0 0 0S 0.0 0.0 0:
00.00watchdog/0
统计信息区
前五行是系统整体的统计信息。
第一行是任务队列信息,同uptime命令的执行结果。
其内容如下:
01:
06:
48
当前时间
up1:
22
系统运行时间,格式为时:
分
1user
当前登录用户数
loadaverage:
0.06,0.60,0.48
系统负载,即任务队列的平均长度。
三个数值分别为1分钟、5分钟、15分钟前到现在的平均值。
第二、三行为进程和CPU的信息。
当有多个CPU时,这些内容可能会超过两行。
内容如下:
Tasks:
29total
进程总数
1running
正在运行的进程数
28sleeping
睡眠的进程数
0stopped
停止的进程数
0zombie
僵尸进程数
Cpu(s):
0.3%us
用户空间占用CPU百分比
1.0%sy
内核空间占用CPU百分比
0.0%ni
用户进程空间内改变过优先级的进程占用CPU百分比
98.7%id
空闲CPU百分比
0.0%wa
等待输入输出的CPU时间百分比
0.0%hi
0.0%si
最后两行为内存信息。
内容如下:
Mem:
191272ktotal
物理内存总量
173656kused
使用的物理内存总量
17616kfree
空闲内存总量
22052kbuffers
用作内核缓存的内存量
Swap:
192772ktotal
交换区总量
0kused
使用的交换区总量
192772kfree
空闲交换区总量
123988kcached
缓冲的交换区总量。
内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,
该数值即为这些内容已存在于内存中的交换区的大小。
相应的内存再次被换出时可不必再对交换区写入。
进程信息区
统计信息区域的下方显示了各个进程的详细信息。
首先来认识一下各列的含义。
序号列名含义
aPID进程id
bPPID父进程id
cRUSERRealusername
dUID进程所有者的用户id
eUSER进程所有者的用户名
fGROUP进程所有者的组名
gTTY启动进程的终端名。
不是从终端启动的进程则显示为?
hPR优先级
iNInice值。
负值表示高优先级,正值表示低优先级
jP最后使用的CPU,仅在多CPU环境下有意义
k%CPU上次更新到现在的CPU时间占用百分比
lTIME进程使用的CPU时间总计,单位秒
mTIME+进程使用的CPU时间总计,单位1/100秒
n%MEM进程使用的物理内存百分比
oVIRT进程使用的虚拟内存总量,单位kb。
VIRT=SWAP+RES
pSWAP进程使用的虚拟内存中,被换出的大小,单位kb。
qRES进程使用的、未被换出的物理内存大小,单位kb。
RES=CODE+DATA
rCODE可执行代码占用的物理内存大小,单位kb
sDATA可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
tSHR共享内存大小,单位kb
unFLT页面错误次数
vnDRT最后一次写入到现在,被修改过的页面数。
wS进程状态。
D=不可中断的睡眠状态
R=运行
S=睡眠
T=跟踪/停止
Z=僵尸进程
xCOMMAND命令名/命令行
yWCHAN若该进程在睡眠,则显示睡眠中的系统函数名
zFlags任务标志,参考sched.h
默认情况下仅显示比较重要的PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND列。
可以通过下面的快捷键来更改显示内容。
更改显示内容
通过f键可以选择显示的内容。
按f键之后会显示列的列表,按a-z即可显示或隐藏对应的列,最后按回车键确定。
按o键可以改变列的显示顺序。
按小写的a-z可以将相应的列向右移动,而大写的A-Z可以将相应的列向左移动。
最后按回车键确定。
按大写的F或O键,然后按a-z可以将进程按照相应的列进行排序。
而大写的R键可以将当前的排序倒转。
sar
命令行的常用格式:
sar[options][-A][-ofile]t[n]
在命令行中,n和t两个参数组合起来定义采样间隔和次数,t为采样间隔,是必须有
的参数,n为采样次数,是可选的,默认值是1,-ofile表示将命令结果以二进制格式
存放在文件中,file在此处不是关键字,是文件名。
options为命令行选项,sar命令
的选项很多,下面只列出常用选项:
-A:
所有报告的总和。
-u:
CPU利用率
-v:
进程、I节点、文件和锁表状态。
-d:
硬盘使用报告。
-r:
没有使用的内存页面和硬盘块。
-g:
串口I/O的情况。
-b:
缓冲区使用情况。
-a:
文件读写情况。
-c:
系统调用情况。
-R:
进程的活动情况。
-y:
终端设备活动情况。
-w:
系统交换活动。
下面将举例说明。
例一:
使用命令行sar-utn
例如,每60秒采样一次,连续采样5次,观察CPU的使用情况,并将采样结果以二进制
形式存入当前目录下的文件zhou中,需键入如下命令:
#sar-u-ozhou605
屏幕显示:
SCO_SV scosysv 3.2v5.0.5 i80386 10/01/2001
14:
43:
50 %usr %sys %wio %idle(-u)
14:
44:
50 0 1 4 94
14:
45:
50 0 2 4 93
14:
46:
50 0 2 2 96
14:
47:
50 0 2 5 93
14:
48:
50 0 2 2 96
Average 0 2 4 94
在显示内容包括:
%usr:
CPU处在用户模式下的时间百分比。
%sys:
CPU处在系统模式下的时间百分比。
%wio:
CPU等待输入输出完成时间的百分比。
%idle:
CPU空闲时间百分比。
在所有的显示中,我们应主要注意%wio和%idle,%wio的值过高,表示硬盘存在I/O瓶颈,
%idle值高,表示CPU较空闲,如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,
此时应加大内存容量。
%idle值如果持续低于10,那么系统的CPU处理能力相对较低,表
明系统中最需要解决的资源是CPU。
如果要查看二进制文件zhou中的内容,则需键入如下sar命令:
#sar-u-fzhou
可见,sar命令即可以实时采样,又可以对以往的采样结果进行查询。
例二:
使用命行sar-vtn
例如,每30秒采样一次,连续采样5次,观察核心表的状态,需键入如下命令:
#sar-v305
屏幕显示:
SCO_SVscosysv3.2v5.0.5i8038610/01/2001
10:
33:
23proc-szovinod-szovfile-szovlock-sz (-v)
10:
33:
53 305/ 321 0 1337/2764 0 1561/1706 0 40/ 128
10:
34:
23 308/ 321 0 1340/2764 0 1587/1706 0 37/ 128
10:
34:
53 305/ 321 0 1332/2764 0 1565/1706 0 36/ 128
10:
35:
23 308/ 321 0 1338/2764 0 1592/1706 0 37/ 128
10:
35:
53 308/ 321 0 1335/2764 0 1591/1706 0 37/ 128
显示内容包括:
proc-sz:
目前核心中正在使用或分配的进程表的表项数,由核心参数MAX-PROC控制。
inod-sz:
目前核心中正在使用或分配的i节点表的表项数,由核心参数
MAX-INODE控制。
file-sz:
目前核心中正在使用或分配的文件表的表项数,由核心参数MAX-FILE控
制。
ov:
溢出出现的次数。
Lock-sz:
目前核心中正在使用或分配的记录加锁的表项数,由核心参数MAX-FLCKRE
控制。
显示格式为
实际使用表项/可以使用的表项数
显示内容表示,核心使用完全正常,三个表没有出现溢出现象,核心参数不需调整,如
果出现溢出时,要调整相应的核心参数,将对应的表项数加大。
例三:
使用命行sar-dtn
例如,每30秒采样一次,连续采样5次,报告设备使用情况,需键入如下命令:
#sar-d305
屏幕显示:
SCO_SVscosysv3.2v5.0.5i8038610/01/2001
11:
06:
43device %busy avque r+w/s blks/s avwaitavserv(-d)
11:
07:
13wd-0 1.47 2.75 4.67 14.73 5.503.14
11:
07:
43wd-0 0.43 18.77 3.07 8.66 25.111.41
11:
08:
13wd-0 0.77 2.78 2.77 7.26 4.942.77
11:
08:
43wd-0 1.10 11.18 4.10 11.26 27.322.68
11:
09:
13wd-0 1.97 21.78 5.86 34.06 69.663.35
Averagewd-0 1.15 12.11 4.09 15.19 31.122.80
显示内容包括:
device:
sar命令正在监视的块设备的名字。
%busy:
设备忙时,传送请求所占时间的百分比。
avque:
队列站满时,未完成请求数量的平均值。
r+w/s:
每秒传送到设备或从设备传出的数据量。
blks/s:
每秒传送的块数,每块512字节。
avwait:
队列占满时传送请求等待队列空闲的平均时间。
avserv:
完成传送请求所需平均时间(毫秒)。
在显示的内容中,wd-0是硬盘的名字,%busy的值比较小,说明用于处理传送请求的有
效时间太少,文件系统效率不高,一般来讲,%busy值高些,avque值低些,文件系统
的效率比较高,如果%busy和avque值相对比较高,说明硬盘传输速度太慢,需调整。
例四:
使用命行sar-btn
例如,每30秒采样一次,连续采样5次,报告缓冲区的使用情况,需键入如下命令:
#sar-b305
屏幕显示:
SCO_SVscosysv3.2v5.0.5i8038610/01/2001
14:
54:
59bread/slread/s%rcachebwrit/slwrit/s%wcachepread/spwrit/s(-b)
14:
55:
29 0 147 100 5 21 78 0 0
14:
55:
59 0 186 100 5 25 79 0 0
14:
56:
29 4 232 98 8 58 86 0 0
14:
56:
59 0 125 100 5 23 76 0 0
14:
57:
29 0 89 100 4 12 66 0 0
Average 1 156 99 5 28 80 0 0
显示内容包括:
bread/s:
每秒从硬盘读入系统缓冲区buffer的物理块数。
lread/s:
平均每秒从系统buffer读出的逻辑块数。
%rcache:
在buffercache中进行逻辑读的百分比。
bwrit/s:
平均每秒从系统buffer向磁盘所写的物理块数。
lwrit/s:
平均每秒写到系统buffer逻辑块数。
%wcache:
在buffercache中进行逻辑读的百分比。
pread/s:
平均每秒请求物理读的次数。
pwrit/s:
平均每秒请求物理写的次数。
在显示的内容中,最重要的是%cache和%wcache两列,它们的值体现着buffer的使用效
率,%rcache的值小于90或者%wcache的值低于65,应适当增加系统buffer的数量,buffer
数量由核心参数NBUF控制,使%rcache达到90左右,%wcache达到80左右。
但buffer参数
值的多少影响I/O效率,增加buffer,应在较大内存的情况下,否则系统效率反而得不到
提高。
例五:
使用命行sar-gtn
例如,每30秒采样一次,连续采样5次,报告串口I/O的操作情况,需键入如下命令:
#sar-g305
屏幕显示:
SCO_SVscosysv3.2v5.0.5i80386 11/22/2001
17:
07:
03 ovsiohw/s ovsiodma/s ovclist/s(-g)
17:
07:
33 0.00 0.00 0.00
17:
08:
03 0.00 0.00 0.00
17:
08:
33 0.00 0.00 0.00
17:
09:
03 0.00 0.00 0.00
17:
09:
33 0.00 0.00 0.00
Average 0.00 0.00 0.00
显示内容包括:
ovsiohw/s:
每秒在串口I/O硬件出现的溢出。
ovsiodma/s:
每秒在串口I/O的直接输入输出通道高速缓存出现的溢出。
ovclist/s:
每秒字符队列出现的溢出。
在显示的内容中,每一列的值都是零,表明在采样时间内,系统中没有发生串口I/O溢
出现象。
sar命令的用法很多,有时判断一个问题,需要几个sar命令结合起来使用,比如,怀疑
CPU存在瓶颈,可用sar-u和sar-q来看,怀疑I/O存在瓶颈,可用sar-b、sar-u和
sar-d来看
Sar
-A所有的报告总和
-a文件读,写报告
-B报告附加的buffercache使用情况
-bbuffercache使用情况
-c系统调用使用报告
-d硬盘使用报告
-g有关串口I/O情况
-h关于buffer使用统计数字
-mIPC消息和信号灯活动
-n命名cache
-p调页活动
-q运行队列和交换队列的平均长度
-R报告进程的活动
-r没有使用的内存页面和硬盘块
-uCPU利用率
-v进程,i节点,文件和锁表状态
-w系统交换活动
-yTTY设备活动
-a报告文件读,写报告
sar–a55
SCO_SVscosvr3.2v5.0.5PentII(D)ISA06/07/2002
11:
45:
40iget/snamei/sdirbk/s(-a)
11:
45:
45622
11:
45:
50912028
11:
45:
551592018
11:
46:
001572119
11:
46:
051773035
Average1181820
iget/s每秒由i节点项定位的文件数量
namei/s每秒文件系统路径查询的数量
dirbk/s每秒所读目录块的数量
*这些值越大,表明核心花在存取用户文件上的时间越多,它反映着一些程序和应用文件系统产生的负荷。
一般地,如果iget/s与namei/s的比值大于5,并且namei/s的值大于30,则说明文件系统是低效的。
这时需要检查文件系统的自由空间,看看是否自由空间过少。
-b报告缓冲区(buffercache)的使用情况
sar-b23
SCO_SVscosvr3.2v5.0.5PentII(D)ISA06/07/2002
13:
51:
28bread/slread/s%rcachebwrit/slwrit/s%wcachepread/spwrit/s(-b)
13:
51:
303821380721312735200
13:
51:
32378516276227200
13:
51:
341723234739573200
Average31073958581175000
bread/s平均每秒从硬盘(或其它块设备)读入系统buffer的物理块数
lread/s平均每秒从系统buffer读出的逻辑块数
%rcache在buffercache中进行逻辑读的百分比(即100%-bread/lreads)
bwrit/s平均每秒从系统buffer向磁盘(或其它块设备)所写的物理块数
lwrit/s平均每秒写到系统buffer的逻辑块数
%wcache在buffercache中进行逻辑写的百分比(即100%-bwrit/lwrit).
pread/sgu平均每秒请求进行物理读的次数
pwrit/s平均每秒请求进行物理写的次数
*所显示的内容反映了目前与系统buffer有关的读,写活。
在所报告的数字中,最重要的是%rcache和%wcache(统称为cache命中率)两列,它们具体体现着系统buffer的效率。
衡量cache效率的标准是它的命中率值的大小。
*如果%rcach