linux系统测试磁盘及cpu性能

一、测试磁盘性能

1.创建测试目录

mkdir -p /home/test

2.使用dd测试

测试写入速度

 # if=/dev/zero不产生IO,因此可以用来测试纯写速度
 # 写入文件大小 = 8k * 500000 = 4G
 time dd if=/dev/zero of=/home/test/out bs=8k oflag=direct count=500000
 
 500000+0 records in
 500000+0 records out
 4096000000 bytes (4.1 GB) copied, 58.0348 s, 70.6 MB/s

 real    0m58.065s
 user    0m0.020s
 sys     0m33.681s

测试读取速度

# of=/dev/null不产生IO,可以用来测试纯读速度
time dd if=/root/test/out of=/dev/null bs=8k

500000+0 records in
500000+0 records out
4096000000 bytes (4.1 GB) copied, 16.0882 s, 255 MB/s

real    0m16.090s
user    0m0.041s
sys     0m16.048s

3.测试过程中可以使用以下命令查看

利用vmstat命令,对读写性能进行说明。

vmstat 1 1  表示每隔1秒采集1次信息。
vmstat 1 1

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
19  0 507904 2225404 126816 15403456    0    0     1    25    0    1 10  1 89  0  0

描述:

    io:显示磁盘读写状况

            bi列:表示从块设备读入数据的总量(既读磁盘)(每秒kb)

            bo列:表示写入到块设备的数据总量(既写磁盘)(每秒kb)

   cpu:

           wa列 表示i/o等待所占用的cpu时间百分比。

           bi+bo参考值为1000,而且wa值较大,说明i/o等待越严重,则表示系统磁盘i/o有问题。

           根据经验,wa的参考值为20%,如果wa超过了20%,可能是磁盘大量随机读写造成的i/o等待,也可能是磁盘磁盘控制器的带宽瓶颈造成的(主要是块操作)。

利用iostat -d 命令,对读写性能进行说明。

iostat -d 1 1 表示每隔1秒输出1次磁盘信息(不包含CPU信息)

iostat -d 1 1

Linux 3.10.0-1127.el7.x86_64 (airport-master) 	2020年07月03日 	_x86_64_	(48 CPU)

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sdb               0.00         0.00         0.00       4533          4
sdc               0.54        10.76        21.12   13034950   25592048
sda               8.14        14.14      1188.16   17136361 1439527064
dm-0              0.31         5.03        18.19    6098724   22037488
dm-1              0.65         0.46         2.14     559820    2588116
dm-2              0.09         5.24         0.80    6345596     964324

描述:

  KB_read/s:表示每秒读取的数据块数

  KB_wrtn/s:表示每秒写入的数据块数

  KB_read:表示读取的所有块数

  KB_wrtn:表示写入的所有块数

  如果KB_wrtn/s值很大,表示磁盘的写操作很频繁,可以考虑优化磁盘或优化程序;

  如果KB_read/s值很大,表示磁盘直接读取操作很多,可以将读取的数据放入内存中进行操作。

  对于以上两个值没有一个固定的大小,但是数值长期的过大说明磁盘读写则不正常。

还有其他命令如 iotop、sar -d等,可查看其他文档

二、测试cpu性能

1.编写shell脚本

vim test-cpu.sh 


#!/bin/bash

test_cpu(){
    cat /dev/urandom | gzip -9 > /dev/null
}


case $1 in
-start)
for i in `seq $2` 
do
  test_cpu &
done;;

-stop)
ps -aux | grep "cat /dev/urandom" | awk '{print $2}' | xargs kill -9 2>/dev/null;;

esac

2.使用脚本

#开始测试
#第一个参数为“-start”,“-stop”。为开始和停止。
#第二个参数为开启线程数,“20”为同时开启20个线程。
bash ./test-cpu.sh -start 20
#结束测试
bash ./test-cpu.sh -stop

3.测试过程中可以使用以下命令查看
top命令

top

 top - 10:37:35 up 25 days, 17:29,  1 user,  load average: 0.00, 0.02, 0.05
Tasks: 104 total,   1 running, 103 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.1%us,  0.0%sy,  0.0%ni, 99.9%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   2067816k total,  2007264k used,    60552k free,    73752k buffers
Swap:   524284k total,   315424k used,   208860k free,   625832k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
17827 root      20   0  700m 218m  13m S  1.7 10.8   0:42.81 java
 4517 apache    20   0 1240m 359m 3884 S  0.7 17.8  20:44.91 java
 2650 root      20   0 25588 2204 1224 S  0.3  0.1  12:43.61 snmpd
18076 root      20   0  2456  928  712 R  0.3  0.0   0:00.27 top
32645 root      20   0  798m 247m 3580 S  0.3 12.3 171:19.10 java
    1 root      20   0  2208  100   84 S  0.0  0.0   0:31.34 init
    2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd
    3 root      20   0     0    0    0 S  0.0  0.0   0:09.87 ksoftirqd/0
    5 root      20   0     0    0    0 S  0.0  0.0   0:00.03 kworker/u:0                

多核CPU监控
在top基本视图中,按键盘数字“1”,可监控每个逻辑CPU的状况。

统计信息区
前五行是系统整体的统计信息。第一行是任务队列信息,同 uptime 命令的执行结果。其内容如下:

10:37:35	当前时间
up 25 days, 17:29	系统运行时间,格式为时:分
1 user	当前登录用户数
load average: 0.00, 0.02, 0.05	系统负载,即任务队列的平均长度。
三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。

第二、三行为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两行。内容如下:

Tasks: 104 total	进程总数
1 running	正在运行的进程数
103 sleeping	睡眠的进程数
0 stopped	停止的进程数
0 zombie	僵尸进程数
Cpu(s):  0.1%us	用户空间占用CPU百分比
0.0%sy	内核空间占用CPU百分比
0.0%ni	用户进程空间内改变过优先级的进程占用CPU百分比
99.9%id	空闲CPU百分比
0.0%wa	等待输入输出的CPU时间百分比
0.0% hi	 
0.0% si	 
0.0%st	 

最后两行为内存信息。内容如下:

Mem:   2067816k total	物理内存总量
2007264k used	使用的物理内存总量
60552k free	空闲内存总量
73752k buffers	用作内核缓存的内存量
Swap:   524284k total	交换区总量
315424k used	使用的交换区总量
208860k free	空闲交换区总量
625832k cached	缓冲的交换区总量。

内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,
该数值即为这些内容已存在于内存中的交换区的大小。
相应的内存再次被换出时可不必再对交换区写入。

进程信息区

统计信息区域的下方显示了各个进程的详细信息。首先来认识一下各列的含义。

序号	列名	含义
a	PID	进程id
b	PPID	父进程id
c	RUSER	Real user name
d	UID	进程所有者的用户id
e	USER	进程所有者的用户名
f	GROUP	进程所有者的组名
g	TTY	启动进程的终端名。不是从终端启动的进程则显示为 ?
h	PR	优先级
i	NI	nice值。负值表示高优先级,正值表示低优先级
j	P	最后使用的CPU,仅在多CPU环境下有意义
k	%CPU	上次更新到现在的CPU时间占用百分比
l	TIME	进程使用的CPU时间总计,单位秒
m	TIME+	进程使用的CPU时间总计,单位1/100秒
n	%MEM	进程使用的物理内存百分比
o	VIRT	进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
p	SWAP	进程使用的虚拟内存中,被换出的大小,单位kb。
q	RES	进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
r	CODE	可执行代码占用的物理内存大小,单位kb
s	DATA	可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
t	SHR	共享内存大小,单位kb
u	nFLT	页面错误次数
v	nDRT	最后一次写入到现在,被修改过的页面数。
w	S	进程状态。
D=不可中断的睡眠状态
R=运行
S=睡眠
T=跟踪/停止
Z=僵尸进程
x	COMMAND	命令名/命令行
y	WCHAN	若该进程在睡眠,则显示睡眠中的系统函数名
z	Flags	任务标志,参考 sched.h
默认情况下仅显示比较重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。可以通过下面的快捷键来更改显示内容。

mpstat -P ALL 1命令

mpstat -P ALL 1
Linux 3.10.0-1062.el7.x86_64 (airport-slave01) 	2020年07月03日 	_x86_64_	(40 CPU)

10时06分43秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
10时06分44秒  all   36.96   32.49    4.59    0.25    0.00    0.40    0.00    0.00    0.00   25.31
10时06分44秒    0   50.00   25.00    4.00    1.00    0.00    1.00    0.00    0.00    0.00   19.00
10时06分44秒    1   18.18   43.43    3.03    1.01    0.00    1.01    0.00    0.00    0.00   33.33
10时06分44秒    2   62.63    6.06   10.10    2.02    0.00    0.00    0.00    0.00    0.00   19.19
10时06分44秒    3   46.46   20.20    2.02    0.00    0.00    1.01    0.00    0.00    0.00   30.30
10时06分44秒    4   15.31   48.98    8.16    0.00    0.00    0.00    0.00    0.00    0.00   27.55
10时06分44秒    5   52.53   14.14    8.08    0.00    0.00    0.00    0.00    0.00    0.00   25.25
10时06分44秒    6   46.00   27.00    4.00    0.00    0.00    1.00    0.00    0.00    0.00   22.00
10时06分44秒    7   40.59   29.70    6.93    0.00    0.00    0.00    0.00    0.00    0.00   22.77
10时06分44秒    8   61.62   18.18    5.05    0.00    0.00    0.00    0.00    0.00    0.00   15.15
10时06分44秒    9   48.00   20.00    6.00    0.00    0.00    1.00    0.00    0.00    0.00   25.00
10时06分44秒   10   20.00   50.00    4.00    1.00    0.00    0.00    0.00    0.00    0.00   25.00
10时06分44秒   11   56.12   24.49    5.10    0.00    0.00    0.00    0.00    0.00    0.00   14.29
10时06分44秒   12    2.00   71.00    2.00    0.00    0.00    0.00    0.00    0.00    0.00   25.00
10时06分44秒   13   29.59   30.61    2.04    1.02    0.00    0.00    0.00    0.00    0.00   36.73
10时06分44秒   14   42.57   19.80    4.95    0.00    0.00    0.00    0.00    0.00    0.00   32.67
10时06分44秒   15   38.00   38.00    4.00    0.00    0.00    0.00    0.00    0.00    0.00   20.00
10时06分44秒   16   14.00   47.00    3.00    0.00    0.00    0.00    0.00    0.00    0.00   36.00
10时06分44秒   17   43.00   32.00    3.00    1.00    0.00    0.00    0.00    0.00    0.00   21.00
10时06分44秒   18   41.58   29.70    4.95    0.00    0.00    0.00    0.00    0.00    0.00   23.76
10时06分44秒   19   58.00   26.00    3.00    0.00    0.00    0.00    0.00    0.00    0.00   13.00
10时06分44秒   20   20.20   48.48    6.06    1.01    0.00    0.00    0.00    0.00    0.00   24.24
10时06分44秒   21   40.40   36.36    8.08    0.00    0.00    1.01    0.00    0.00    0.00   14.14
10时06分44秒   22   35.35   24.24    6.06    0.00    0.00    1.01    0.00    0.00    0.00   33.33
10时06分44秒   23   24.24   33.33    5.05    0.00    0.00    1.01    0.00    0.00    0.00   36.36
10时06分44秒   24   18.00   41.00    2.00    0.00    0.00    1.00    0.00    0.00    0.00   38.00

uptime 命令

 uptime 
 
 10:10:12 up 13 days, 23:13,  3 users,  load average: 20.77, 22.53, 24.19

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值