查看Linux系统一些指标以及一些压力测试工具

本人实习期间在某公司做云计算测试工作,组内项目不成熟正好需要全方位的一些测试工作,正好了解了一些关于系统指标的查看方式,特总结此文。

查看系统一些指标状况(使用Centos内置命令)

  • 使用top命令,运行 top 命令后,CPU使用状态会以全屏的方式显示,并且会处在对话的模式 — 用基于 top的命令,可以控制显示方式等等。退出 top 的命令为 q (在 top 运行中敲 q 键一次)。
  • top 的全屏对话模式可分为3部分:系统信息栏、命令输入栏、进程列表栏。第一部分 — 最上部的 系统信息栏 :第一行(top):“14:23:28”为系统当前时刻;6:17”为系统启动后到现在的运作时间;“3user”为当前登录到系统的用户,更确切的说是登录到用户的终端数 —同一个用户同一时间对系统多个终端的连接将被视为多个用户连接到系统,这里的用户数也将表现为终端的数目。
  • “loadaverage”为当前系统负载的平均值,后面的三个值分别为1分钟前、5分钟前、15分钟前进程的平均数。
  • 第二行(Tasks):“217 total”为当前系统进程总数;“1 running”为当前运行中的进程数;“216 sleeping”为当前处于等待状态中的进程数;“0 stoped”为被停止的系统进程数;“0 zombie”为被复原的进程数。
  • 第三行(Cpus):分别表示了 CPU 当前的使用率;第四行(Mem):分别表示了内存总量、当前使用量、空闲内存量、以及缓冲使用中的内存量;第五行(Swap):表示类别同第四行(Mem),但此处反映着交换分区(Swap)的使用情况。通常,交换分区(Swap)被频繁使用的情况,将被视作物理内存不足而造成的。
top 运行中可以通过 top 的内部命令对进程的显示方式进行控制。内部命令如下表:
  s - 改变画面更新频率
  l - 关闭或开启第一部分第一行 top 信息的表示
  t - 关闭或开启第一部分第二行 Tasks 和第三行 Cpus 信息的表示
  m - 关闭或开启第一部分第四行 Mem 和 第五行 Swap 信息的表示
  N - 以 PID 的大小的顺序排列表示进程列表(第三部分后述)
  P - 以 CPU 占用率大小的顺序排列进程列表 
  M - 以内存占用率大小的顺序排列进程列表 
  h - 显示帮助
  n - 设置在进程列表所显示进程的数量
  q - 退出 top
  s - 改变画面更新周期

查看系统一些指标状况(使用sysstat工具包)

SYSSTAT是一个软件包,包含监测系统性能及效率的一组工具,在系统中使用yum安装就可以。

一、sar 工具

参数说明:
 -A 显示所有历史数据,通过读取/var/log/sar目录下的所有文件,并把它们分门别类的显示出来
 -b 通过设备的I/O中断读取设置的吞吐率;
 -B 报告内存或虚拟内存交换统计;
 -c 报告每秒创建的进程数;
 -d 报告物理块设备(存储设备)的写入、读取之类的信息,如果直观一点,可以和p参数共同使用,-dp
 -f 从一个二进制的数据文件中读取内容,比如 sar -f filename
 -i interval 指定数据收集的时间,时间单位是秒;
 -n 分析网络设备状态的统计,后面可以接的参数有 DEV、EDEV、NFS、NFSD、SOCK等。比如-n DEV
 -o 把统计信息写入一个文件,比如 -o filename ;
 -P 报告每个处理器应用统计,用于多处理器机器,并且启用SMP内核才有效;
 -p 显示友好设备名字,以方便查看,也可以和-d和-n 参数结合使用,比如 -dp 或-np
 -r 内存和交换区占用统计;
 -R
 -t 这个选项对从文件读取数据有用,如果没有这个参数,会以本地时间为标准 读出;
 -u 报告CPU利用率的参数;
 -v 报告inode,文件或其它内核表的资源占用信息;
 -w 报告系统交换活动的信息; 每少交换数据的个数;
 -W 报告系统交换活动吞吐信息;
 -x 用于监视进程的,在其后要指定进程的PID值;

举例说明:

1.如果我们想知道CPU的利用率;动态更新;下面的例子是每秒更新一次数据,总共更新五次;

[root@compute-2 ~]# sar -u  1 5
Linux 2.6.18-238.el5 (web20.com)        2020年03月01日
16时30分44秒       CPU     %user     %nice   %system   %iowait    %steal     %idle
16时30分45秒       all      0.00      0.00      0.00      0.00      0.00    100.00
16时30分46秒       all      0.00      0.00      0.00      0.00      0.00    100.00
16时30分47秒       all      0.00      0.00      0.00      0.00      0.00    100.00
16时30分48秒       all      0.00      0.00      0.00      0.00      0.00    100.00
16时30分49秒       all      0.00      0.00      0.00      0.00      0.00    100.00
Average:          all      0.00      0.00      0.00      0.00      0.00    100.00

2.查看网络吞吐量,下面的例子是每2秒更新一数据,共更新5次

[root@compute-2 ~]# sar -n DEV 2 5
Linux 3.10.0-514.16.1.chishui03.x86_64 (compute-2) 	2020年03月01日 	_x86_64_	(56 CPU)

15时08分02秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
15时08分04秒 vnic2179.0      0.00      0.00      0.00      0.00      0.00      0.00      0.00

二、iostat工具

参数说明:
 -c 仅显示cpu的状态
 -d 仅显示存储设备的状态,不可以和-c一起使用
 -k 默认显示的是读入读出的block信息,用-k可以改成KB大小来显示
 -t 显示日期
 -p device | ALL :device为某个设备或者某个分区,如果使用ALL,就表示要显示所有分区和设备的信息
 -x 显示扩展状态,显示出更多内容
结果参数说明:
 rrqm/s: 每秒进行 merge 的读操作数目。即 delta(rmerge)/s
 wrqm/s: 每秒进行 merge 的写操作数目。即 delta(wmerge)/s
 r/s: 每秒完成的读 I/O 设备次数。即 delta(rio)/s
 w/s: 每秒完成的写 I/O 设备次数。即 delta(wio)/s
 rsec/s: 每秒读扇区数。即 delta(rsect)/s
 wsec/s: 每秒写扇区数。即 delta(wsect)/s
 rkB/s: 每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。(需要计算)
 wkB/s: 每秒写K字节数。是 wsect/s 的一半。(需要计算)
 avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)。delta(rsect+wsect)/delta(rio+wio)
 avgqu-sz: 平均I/O队列长度。即 delta(aveq)/s/1000 (因为aveq的单位为毫秒)。
 await: 平均每次设备I/O操作的等待时间 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio)
 svctm: 平均每次设备I/O操作的服务时间 (毫秒)。即 delta(use)/delta(rio+wio)
 %util: 一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的。即 delta(use)/s/1000 (因为use的单位为毫秒)
 如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。
 idle小于70% IO压力就较大了,一般读取速度有较多的wait.
[root@compute-2 ~]# iostat -x
Linux 3.10.0-514.16.1.chishui03.x86_64 (compute-2) 	2020年03月01日 	_x86_64_	(56 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.12    0.00    0.25    0.00    0.00   99.63

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sdd              10.77     0.00   10.29    0.01  1347.72     0.02   261.82     0.09    8.67    8.67    8.29   0.30   0.31
sdc               9.50     0.00   11.56    0.01  1347.72     0.02   233.11     0.08    7.23    7.23    8.02   0.26   0.30

Centos性能压力测试

stress工具(CPU、内存、硬盘、IO)

Stress是一个Posix系统下生成Cpu/Menory/IO/Disk负载的工具。是Unix类系统下的工作量和压力测试工具。它将对用户指定的CPU数量的I/O,内存和硬盘的负载并报告它检测到任何错误。它用于自动压力测试

参数说明:
-? 显示帮助信息
 -?, --help         show this help statement
     --version      show version statement
-v 显示版本号
 -v, --verbose      be verbose
-q 不显示运行信息
 -q, --quiet        be quiet
-n 显示已完成的指令情况
 -n, --dry-run      show what would have been done
-t --timeout N 指定运行N秒后停止
--backoff N 等待N微妙后开始运行
 -t, --timeout N    timeout after N seconds
     --backoff N    wait factor of N microseconds before work starts
-c 产生n个进程 每个进程都反复不停的计算随机数的平方根
 -c, --cpu N        spawn N workers spinning on sqrt()
-i 产生n个进程 每个进程反复调用sync(),sync()用于将内存上的内容写到硬盘上
 -i, --io N         spawn N workers spinning on sync()
-m --vm n 产生n个进程,每个进程不断调用内存分配malloc和内存释放free函数
--vm-bytes B 指定malloc时内存的字节数 (默认256MB)
--vm-hang N 指定在free钱的秒数
 -m, --vm N         spawn N workers spinning on malloc()/free()
     --vm-bytes B   malloc B bytes per vm worker (default is 256MB)
     --vm-stride B  touch a byte every B bytes (default is 4096)
     --vm-hang N    sleep N secs before free (default none, 0 is inf)
     --vm-keep      redirty memory instead of freeing and reallocating
-d --hadd n 产生n个执行write和unlink函数的进程
-hadd-bytes B 指定写的字节数
--hadd-noclean 不unlink
 -d, --hdd N        spawn N workers spinning on write()/unlink()
     --hdd-bytes B  write B bytes per hdd worker (default is 1GB)

Example: stress --cpu 8 --io 4 --vm 2 --vm-bytes 128M --timeout 10s

#时间单位可以为秒s,分m,小时h,天d,年y,文件大小单位可以为K,M,G
Note: Numbers may be suffixed with s,m,h,d,y (time) or B,K,M,G (size).

stress测试cpu,是在用户态将cpu 耗尽。

[root@compute-2 ~]# stress -c 1 -t 100
stress: info: [54093] dispatching hogs: 1 cpu, 0 io, 0 vm, 0 hdd

stress io 测试

使用stress测试IO,虽然可以创建任意数量的IO进程,但是,可以将 %sys 100%。因为,stress是通过循环执行sync(),使得内核态cpu 100%,但是,stress,没有把w_await svctm 的比例打的很高。

[root@compute-2 ~]# stress  --io 100 -t 100
stress: info: [55864] dispatching hogs: 0 cpu, 100 io, 0 vm, 0 hdd

stress mem测试

stress 测试内存的时候,–vm-bytes 1G --vm-hang 100 这里2个参数是关键!!!!

 --vm-bytes 表示malloc分配多少内存
 --vm-hang 表示malloc分配的内存多少时间后在free()释放掉
 --vm 指定进程数量

下面例子,就是说,10个进程,同时去malloc分配内存,并且保持100s后再释放内存

[root@compute-2 ~]# stress --vm 10 --vm-bytes 1G --vm-hang 100 --timeout 100s
stress: info: [405] dispatching hogs: 0 cpu, 0 io, 10 vm, 0 hdd

stress 磁盘IO测试

参数说明:
-d forks
--hdd forks 产生多个执行write()函数的进程
--hdd-bytes bytes 指定写的Bytes数,默认是1GB
--hdd-noclean 不要将写入随机ASCII数据的文件Unlink
eg:stress -d 1 --hdd-bytes 3G

解释:-d 1:一个写进程。写入固定大小通过mkstemp()函数写入当前目录;你也可以指定向磁盘中写入固定大小的文件
这个文件通过调用mkstemp()产生并保存在当前目录下,默认是文件产生后就被执行unlink(清除)操作,
但是你可以使用“--hdd-bytes”选项将产生的文件全部保存在当前目录下,这会将你的磁盘空间逐步耗尽。

当只有一个进程在写:

[root@compute-2 ~]# stress --hdd 1 --hdd-bytes 1024G
stress: info: [1880] dispatching hogs: 0 cpu, 0 io, 0 vm, 1 hdd

iperf工具(网络)

使用:
  服务器端: 
  [root@compute-2 ~]# iperf -s -i 2
  客户端: 
  [root@compute-1 ~]# iperf -c 172.25.78.52 -i 2
参数说明:

-s 以server模式启动。#iperf -s
-c host以client模式启动。host是server端地址。#iperf -c serverip

通用参数:
-f [kmKM] 分别表示以Kbits, Mbits, KBytes, MBytes显示报告,默认以Mbits为单位,#iperf -c 192.168.100.6 -f K
-i sec 以秒为单位显示报告间隔,#iperf -c 192.168.100.6 -i 2
-l 缓冲区大小,默认是8KB,#iperf -c 192.168.100.6 -l 64
-m 显示tcp最大mtu值
-o 将报告和错误信息输出到文件#iperf -c 192.168.100.6 -o ciperflog.txt
-p 指定服务器端使用的端口或客户端所连接的端口#iperf -s -p 5001;iperf -c 192.168.100.55 -p 5001
-u 使用udp协议
-w 指定TCP窗口大小,默认是8KB
-B 绑定一个主机地址或接口(当主机有多个地址或接口时使用该参数)
-C 兼容旧版本(当server端和client端版本不一样时使用)
-M 设定TCP数据包的最大mtu值
-N 设定TCP不延时
-V 传输ipv6数据包

server专用参数:
-D 以服务方式运行。#iperf -s -D
-R 停止iperf服务。针对-D,#iperf -s -R
client端专用参数:
-d 同时进行双向传输测试
-n 指定传输的字节数,#iperf -c 192.168.100.6 -n 1024000
-r 单独进行双向传输测试
-t 测试时间,默认20秒,#iperf -c 192.168.100.6 -t 5
-F 指定需要传输的文件
-T 指定ttl值
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值