Linux性能分析命令

Top

top命令可以实时的动态的查看系统整体的运行状况,提供了CPU、内存、进程等资源信息。

参数选项

  • -b:以批处理模式操作
  • -c:显示完整的命令
  • -d:刷新间隔时间
  • -I:忽略失效进程
  • -s:保密模式
  • -S:累积模式
  • -i<time>:设置间隔时间
  • -u<user>:指定用户名
  • -p<process>:指定进程
  • -n<number>:循环显示的次数

交互命令

  • 1:显示CPU详细信息
  • d:修改刷新频率,单位为秒
  • h:查看帮助
  • n:指定进程列表显示的行数
  • q:退出top命令
  • l:隐藏/显示第一行
  • t:隐藏/显示第二行和第三行
  • m:隐藏/显示第四行和第五行内存信息
  • M:根据驻留内存大小进行排序
  • P:根据CPU使用百分比大小进行排序
  • T:根据时间进行排序
  • k:杀死一个进程
  • i:忽略空闲进程和僵死进程
  • r:重新规划进程的优先级别
  • f:从当前显示中添加或者删除项目

Linux_top

top命令主要分为两个区域:统计信息和进程信息。统计信息为前五行,主要显示系统负载情况、进程情况、 CPU情况、MEM内存情况、SWAP交换分区情况。进程信息主要显示每个进程具体信息,默认五秒刷新一次。

第一行:
系统当前时间为9:23:14
系统运行时间为60天
当前登录的用户数为1
系统负载,即任务队列的平均长度。3个数值分别统计最近1,5,15分钟的系统平均负载

  • 系统平均负载:单核CPU情况下,0.00 表示没有任何负荷,1.00表示刚好满负荷,超过1侧表示超负荷,理想值是0.7;
  • 多核CPU负载:CPU核数 * 理想值0.7 = 理想负荷,例如:4核CPU负载不超过2.8何表示没有出现高负载。

第二行:
进程总数为93
活动的进程数为1
休眠的进程数为92
停止的进程数为0
僵死的进程数位0

第三行:
用户空间占用CPU百分比为0.3%
内核空间占用CPU百分比为0.2%
用户进程空间内改变过优先级的进程占用CPU百分比为0%
空闲CPU百分比为99.1%
等待占用CPU百分比为0.4%
CPU服务于硬件中断所耗费的时间总额为0% CPU服务软中断所耗费的时间总额为0%
虚拟机被hypervisor偷去的CPU时间为0%

第四行:
物理内存总量为1922268k
已使用的物理内存总量为1647380k
空闲的内存总量为274888k 缓存到BUFFER中的内存总量为222392k

第五行:
交换分区的总量为0k
已使用的交换分区总量为0k
空闲的交换分区总量为0k
缓存的交换分区总量为1138584k

进程信息: PID为进程ID
USER为进程持有者
PR为优先级
NI为nice值。负值表示高优先级,正值表示低优先级
VIRT为使用的虚拟内存总量,单位KB。VIRT=SWAP+RES
RES为进程使用的、未被换出的物理内存大小,单位KB。RES=CODE+DATA
SHR为共享内存大小,单位KB
S为进程状态,D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程
%CPU上次更新到现在的CPU时间占用百分比
%MEM进程使用的物理内存百分比 TIME+进程使用的CPU时间总计,单位1/100秒

VMSTAT

vmstat命令可以报告关于进程、内存、I/O等系统整体运行状态 参数选项

  • -a:显示活动内页
  • -f:显示启动后创建的进程总数
  • -m:显示slab的信息
  • -n:头信息仅显示一次
  • -s:以表格方式显示事件计数器和内存状态
  • -d:报告磁盘状态
  • -p:显示指定的磁盘分区状态
  • -s:输出信息的单位
1
2
3
4
5
6
7
8
# vmstat 3 5
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 264820 222404 1142304    0    0     0    14    3    4  0  0 99  0  0
 0  0      0 264788 222404 1142304    0    0     0    20   91  152  0  0 99  1  0
 0  0      0 264812 222404 1142304    0    0     0     0   58   97  0  0 100  0  0
 0  0      0 264804 222404 1142308    0    0     0    23   93  156  0  0 99  1  0
 0  0      0 264804 222404 1142312    0    0     0     4  104  176  1  0 99  0  0

字段说明 Procs(进程)

  • r:运行队列中进程数量
  • b:等待IO的进程数量

Memory(内存)

  • swpd:使用虚拟内存大小
  • free:空闲物理内存
  • buff:用作缓冲的内存大小
  • cache:用作缓存的内存大小

Swap(交换分区)

  • si:每秒从交换区写到内存的大小,由磁盘调入内存
  • so:每秒写入交换区的内存大小,由内存调入磁盘

IO

  • bi:每秒读取的块数
  • bo:每秒写入的块数

system

  • in:每秒中断数,包括时钟中断
  • cs:每秒上下文切换数

CPU

  • us:用户进程执行时间百分比
  • sy:内核系统进程执行时间百分比
  • wa:IO等待时间百分比
  • id:空闲时间百分比

SAR

sar(System Activity Reporter)可以报告系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动等信息。

1
2
3
4
5
6
7
8
9
sar [选项] [时间间隔] [次数]
Options are:
[ -A ] [ -B ] [ -b ] [ -C ] [ -d ] [ -H ] [ -h ] [ -p ] [ -q ] [ -R ]
[ -r ] [ -S ] [ -t ] [ -u [ ALL ] ] [ -V ] [ -v ] [ -W ] [ -w ] [ -y ]
[ -I { <int> [,...] | SUM | ALL | XALL } ] [ -P { <cpu> [,...] | ALL } ]
[ -m { <keyword> [,...] | ALL } ] [ -n { <keyword> [,...] | ALL } ]
[ -j { ID | LABEL | PATH | UUID | ... } ]
[ -f [ <filename> ] | -o [ <filename> ] | -[0-9]+ ]
[ -i <interval> ] [ -s [ <hh:mm:ss> ] ] [ -e [ <hh:mm:ss> ] ]

查看CPU

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
# sar -u
Linux 2.6.32-431.el6.x86_64 (OGG)       06/20/2018      _x86_64_        (1 CPU)

12:00:01 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
12:10:01 AM     all      0.74      0.00      0.63     13.99      0.00     84.63
12:20:01 AM     all      0.34      0.00      0.39     16.03      0.00     83.24
12:30:01 AM     all      0.30      0.00      0.41     15.04      0.00     84.25
12:40:01 AM     all      0.31      0.00      0.39     14.27      0.00     85.03
12:50:01 AM     all      0.30      0.00      0.38     14.85      0.00     84.48
01:00:01 AM     all      0.27      0.00      0.31     11.93      0.00     87.49
01:10:01 AM     all      0.66      0.00      0.49     12.86      0.00     85.99
01:20:01 AM     all      0.33      0.00      0.40     14.99      0.00     84.28
01:30:01 AM     all      0.31      0.00      0.38     13.55      0.00     85.76
01:40:01 AM     all      0.30      0.00      0.36     16.53      0.00     82.80
01:50:03 AM     all      0.32      0.00      0.37     14.22      0.00     85.09
02:00:01 AM     all      0.34      0.00      0.42     13.35      0.00     85.88
02:10:01 AM     all      0.58      0.00      0.47     16.77      0.00     82.18
02:20:01 AM     all      0.30      0.00      0.37     14.53      0.00     84.80
02:30:01 AM     all      0.28      0.00      0.36     14.41      0.00     84.95
Average:        all      0.38      0.00      0.41     14.49      0.00     84.73

07:03:46 PM       LINUX RESTART

查看IO

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
# sar -b
Linux 2.6.32-431.el6.x86_64 (OGG)       06/20/2018      _x86_64_        (1 CPU)

12:00:01 AM       tps      rtps      wtps   bread/s   bwrtn/s
12:10:01 AM     10.85      0.89      9.96     37.63    118.43
12:20:01 AM      6.67      0.07      6.61      0.53     77.09
12:30:01 AM      6.34      0.05      6.29      0.42     73.14
12:40:01 AM      6.33      0.06      6.27      0.47     72.38
12:50:01 AM      6.20      0.06      6.14      0.47     71.29
01:00:01 AM      5.99      0.06      5.94      0.47     69.03
01:10:01 AM      9.80      0.34      9.45      6.27    112.46
01:20:01 AM      6.55      0.06      6.49      0.50     76.44
01:30:01 AM      6.17      0.05      6.12      0.42     70.56
01:40:01 AM      6.43      0.09      6.34      0.72     72.71
01:50:03 AM      6.16      0.06      6.10      0.44     70.67
02:00:01 AM      6.40      0.06      6.34      0.50     73.16
02:10:01 AM      9.11      0.18      8.93      1.79    106.91
02:20:01 AM      6.15      0.06      6.09      0.44     70.96
02:30:01 AM      6.32      0.09      6.23      0.69     72.53
Average:         7.02      0.14      6.87      3.36     80.36

07:03:46 PM       LINUX RESTART

查看内存和交换分区

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
# sar -r
Linux 2.6.32-431.el6.x86_64 (OGG)       06/20/2018      _x86_64_        (1 CPU)

12:00:01 AM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit
12:10:01 AM    645304   1262276     66.17     36340    931012    939764     15.65
12:20:01 AM    649164   1258416     65.97     37136    931888    925580     15.42
12:30:01 AM    643832   1263748     66.25     37924    932328    933880     15.56
12:40:01 AM    639848   1267732     66.46     38712    932736    941116     15.68
12:50:01 AM    638700   1268880     66.52     39504    933104    941220     15.68
01:00:01 AM    637492   1270088     66.58     40280    933504    941256     15.68
01:10:01 AM    621440   1286140     67.42     41084    942484    961356     16.01
01:20:01 AM    625836   1281744     67.19     41880    943328    947140     15.78
01:30:01 AM    631308   1276272     66.91     42664    943612    931980     15.52
01:40:01 AM    630036   1277544     66.97     43452    944032    932076     15.53
01:50:03 AM    628952   1278628     67.03     44248    944388    932180     15.53
02:00:01 AM    608708   1298872     68.09     45032    944760    950768     15.84
02:10:01 AM    623620   1283960     67.31     45828    948248    933196     15.54
02:20:01 AM    618280   1289300     67.59     46620    948664    941428     15.68
02:30:01 AM    616884   1290696     67.66     47504    949104    941548     15.68
Average:       630627   1276953     66.94     41881    940213    939633     15.65

07:03:46 PM       LINUX RESTART

查看网络设备状态统计信息

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
[root@OGG ~]# sar -n EDEV |egrep 'eth0|IFACE'
12:00:01 AM     IFACE   rxerr/s   txerr/s    coll/s  rxdrop/s  txdrop/s  txcarr/s  rxfram/s  rxfifo/s  txfifo/s
12:10:01 AM      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
12:20:01 AM      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
12:30:01 AM      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
12:40:01 AM      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
12:50:01 AM      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01:00:01 AM      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01:10:01 AM      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01:20:01 AM      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01:30:01 AM      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01:40:01 AM      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01:50:03 AM      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
02:00:01 AM      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
02:10:01 AM      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
02:20:01 AM      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
02:30:01 AM      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:         eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

DD

dd命令用于复制文件并对原文件的内容进行转换和格式化处理。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
dd [选项]
Options are:
[if]:输入文件名
[of]:输出文件名
[ibs]:每次读取的字节数
[obs]:每次输出的字节数
[bs]:同时设置读入/输出的块大小为bytes个字节
[cbs]:一次转换bytes个字节,即指定转换缓冲区大小
[conv]:指定文件转换的方式
[count]:仅读取指定的块数
[seek]:一开始输出时,跳过指定的块数
[skip]:一开始输入时,跳过指定的块数

测试磁盘写速度

1
time dd if=/dev/zero bs=8k count=1000 of=test.file

测试磁盘读速度

1
time dd if=test.file bs=64k dd of=/dev/null
comments powered by Disqus