Linux服务器性能压力测试

本文转载:https://cloud.tencent.com/developer/article/1027466

对于新采购的服务器,需要进行有必要的性能测试。这里选择UnixBench工具进行性能测试。记录如下:

1)安装使用 下面的脚本使用了最新版UnixBench5.1.3来测试,注释了关于graphic的测试项(大多数VPS都是没有显卡或者是集显,所以图像性能无需测试),运行10-30分钟后(根据CPU内核数量,运算时间不等)得出分数,越高越好。(提前将UnixBench5.1.3.tgz下载到了服务器的/root目录下了)

[root@test-vm001 ~]# cat bench.sh
#! /bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
#===============================================================================================
#   Description:  Unixbench for Test
#===============================================================================================
# Create new soft download dir
mkdir -p /opt/unixbench;
mv /root/UnixBench5.1.3.tgz /opt/unixbench;
cd /opt/unixbench;
# Download UnixBench5.1.3
#if [ -s UnixBench5.1.3.tgz ]; then
#  echo "UnixBench5.1.3.tgz [found]"
#else
# echo "UnixBench5.1.3.tgz not found!!!download now......"
# if ! wget -c http://byte-unixbench.googlecode.com/files/UnixBench5.1.3.tgz;then
#	echo "Failed to download UnixBench5.1.3.tgz,please download it to "/opt/unixbench" directory manually and rerun the install script."
#	exit 1
# fi
#fi
tar -xzf UnixBench5.1.3.tgz;
cd UnixBench;
yum -y install gcc gcc-c autoconf gcc-c++ time perl-Time-HiRes
#Run unixbench
sed -i "s/GRAPHIC_TESTS = defined/#GRAPHIC_TESTS = defined/g" ./Makefile
make;
./Run;
echo '';
echo '';
echo '';
echo "======= Script description and score comparison completed! ======= ";
echo '';
echo '';
echo '';

二、测试结果 执行后返回的测试结果类似如下(该性能测试脚本大概会运行10-30分钟,需耐心等待测结果):

[root@test-vm001 ~]# sh -x bench.sh
+ PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/root/bin
+ export PATH
+ mkdir -p /opt/unixbench
+ mv /root/UnixBench5.1.3.tgz /opt/unixbench
+ cd /opt/unixbench
+ tar -xzf UnixBench5.1.3.tgz
+ cd UnixBench
+ yum -y install gcc gcc-c autoconf gcc-c++ time perl-Time-HiRes
.........
.........
make[1]: Leaving directory `/opt/unixbench/UnixBench'
sh: 3dinfo: command not found

   #    #  #    #  #  #    #          #####   ######  #    #   ####   #    #
   #    #  ##   #  #   #  #           #    #  #       ##   #  #    #  #    #
   #    #  # #  #  #    ##            #####   #####   # #  #  #       ######
   #    #  #  # #  #    ##            #    #  #       #  # #  #       #    #
   #    #  #   ##  #   #  #           #    #  #       #   ##  #    #  #    #
    ####   #    #  #  #    #          #####   ######  #    #   ####   #    #

   Version 5.1.3                      Based on the Byte Magazine Unix Benchmark

   Multi-CPU version                  Version 5 revisions by Ian Smith,
                                      Sunnyvale, CA, USA
   January 13, 2011                   johantheghost at yahoo period com


1 x Dhrystone 2 using register variables  1 2 3 4 5 6 7 8 9 10

1 x Double-Precision Whetstone  1 2 3 4 5 6 7 8 9 10

1 x Execl Throughput  1 2 3

1 x File Copy 1024 bufsize 2000 maxblocks  1 2 3

1 x File Copy 256 bufsize 500 maxblocks  1 2 3

1 x File Copy 4096 bufsize 8000 maxblocks  1 2 3

1 x Pipe Throughput  1 2 3 4 5 6 7 8 9 10

1 x Pipe-based Context Switching  1 2 3 4 5 6 7 8 9 10

1 x Process Creation  1 2 3

1 x System Call Overhead  1 2 3 4 5 6 7 8 9 10

1 x Shell Scripts (1 concurrent)  1 2 3

1 x Shell Scripts (8 concurrent)  1 2 3

========================================================================
   BYTE UNIX Benchmarks (Version 5.1.3)

   System: test-vm001: GNU/Linux
   OS: GNU/Linux -- 3.10.0-514.el7.x86_64 -- #1 SMP Tue Nov 22 16:42:41 UTC 2016
   Machine: x86_64 (x86_64)
   Language: en_US.utf8 (charmap="UTF-8", collate="UTF-8")
   CPU 0: Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz (4390.8 bogomips)
          x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET
   17:31:42 up  8:11,  6 users,  load average: 0.14, 0.09, 0.06; runlevel 3

------------------------------------------------------------------------
Benchmark Run: 六 9月 16 2017 17:31:42 - 17:59:59
1 CPU in system; running 1 parallel copy of tests

Dhrystone 2 using register variables       31665236.6 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     4345.5 MWIPS (9.9 s, 7 samples)
Execl Throughput                               4163.9 lps   (30.0 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks       1091117.9 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks          299689.6 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks       2535441.2 KBps  (30.0 s, 2 samples)
Pipe Throughput                             1556494.1 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                 362875.3 lps   (10.0 s, 7 samples)
Process Creation                              10440.1 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   5115.9 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                    726.5 lpm   (60.1 s, 2 samples)
System Call Overhead                        2707740.8 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   31665236.6   2713.4
Double-Precision Whetstone                       55.0       4345.5    790.1
Execl Throughput                                 43.0       4163.9    968.3
File Copy 1024 bufsize 2000 maxblocks          3960.0    1091117.9   2755.3
File Copy 256 bufsize 500 maxblocks            1655.0     299689.6   1810.8
File Copy 4096 bufsize 8000 maxblocks          5800.0    2535441.2   4371.5
Pipe Throughput                               12440.0    1556494.1   1251.2
Pipe-based Context Switching                   4000.0     362875.3    907.2
Process Creation                                126.0      10440.1    828.6
Shell Scripts (1 concurrent)                     42.4       5115.9   1206.6
Shell Scripts (8 concurrent)                      6.0        726.5   1210.8
System Call Overhead                          15000.0    2707740.8   1805.2
                                                                   ========
System Benchmarks Index Score                                        1482.1

+ echo ''

+ echo ''

+ echo ''

+ echo '======= Script description and score comparison completed! ======= '
======= Script description and score comparison completed! ======= 
+ echo ''

+ echo ''

+ echo ''

注意:上面会有两个跑分结果,一个是 1 parallel process 的结果,另一个是4 parallel process 的结果 (具体可以看html里的输出)。两者的区别即一个是单进程跑,一个是多进程跑 。 默认测试完成后测试结果会存放在results目录,如下:

[root@test-vm001 results]# pwd
/opt/unixbench/UnixBench/results
[root@test-vm001 results]# ls
test-vm001-2017-09-16-01  test-vm001-2017-09-16-01.html  test-vm001-2017-09-16-01.log

results目录中的三个文件,第一个是和上面脚本运行的结果一样;第二个html文件是将结果以页面的形式展示出来,可以使用浏览器打开查看;第三个log文件是运行过程中的详细测试过程部分。

三、测试项目分析

测试过程中每个项目后面会有1 2 3 4 5 6 7 8 9 10 数字,意思是进行了10组测试,测试过程中部分内容及解释如下:

1. ***********************
Dhrystone 2 using register variables  1 2 3 4 5 6 7 8 9 10
此项产生于 1984,测试 string handling,因为没有浮点操作,所以深受软件和硬件设计(hardware and software design)、编译和链接(compiler and linker options)、代码优化(code optimazaton)、对内存的cache(cache memory)、等待状态(?wait states)整数数据类型(integer data types)的影响
2. ********************
Double-Precision Whetstone  1 2 3 4 5 6 7 8 9 10
这一项测试浮点数操作的速度和效率。这一测试包括几个模块,每个模块都包括一组用于科学计算的操作。覆盖面很广的一系列c函数:sin,cos,sqrt,exp,log 被用于整数和浮点数的数学运算、数组访问、条件分支(conditional branch)和程序调用。此测试同时测试了整数和浮点数算术运算。
3. **************
System Call Overhead  1 2 3 4 5 6 7 8 9 10
测试进入和离开操作系统内核的代价,即一次系统调用的代价。它利用一个反复地调用 getpid 函数的小程序达到此目的。

4. ***************
Pipe Throughput  1 2 3 4 5 6 7 8 9 10
管道(pipe)是进程间交流的最简单方式,这里的 Pipe throughtput 指的是一秒钟内一个进程可以向一个管道写 512 字节数据然后再读回的次数。需要注意的是,pipe throughtput 在实际编程中没有对应的真实存在。

5. *************
Pipe-based Context Switching  1 2 3 4 5 6 7 8 9 10
这个测试两个进程(每秒钟)通过一个管道交换一个不断增长的整数的次数。这一点很向现实编程中的一些应用,这个测试程序首先创建一个子进程,再和这个子进程进行双向的管道传输。

6. ************
Process Creation  1 2 3
测试每秒钟一个进程可以创建子进程然后收回子进程的次数(子进程一定立即退出)。process creation 的关注点是新进程进程控制块(process control block)的创建和内存分配,即一针见血地关注内存带宽。一般说来,这个测试被用于对操作系统进程创建这一系统调用的不同实现的比较。

7. ***********
Execl Throughput  1 2 3
此测试考察每秒钟可以执行的 execl 系统调用的次数。 execl 系统调用是 exec 函数族的一员。它和其他一些与之相似的命令一样是 execve() 函数的前端。

8. *********** 
File copy
测试从一个文件向另外一个文件传输数据的速率。每次测试使用不同大小的缓冲区。这一针对文件 read、write、copy 操作的测试统计规定时间(默认是 10s)内的文件 read、write、copy 操作次数。
 
Filesystem Throughput 1024 bufsize 2000 maxblocks  1 2 3

Filesystem Throughput 256 bufsize 500 maxblocks  1 2 3

Filesystem Throughput 4096 bufsize 8000 maxblocks  1 2 3

9. **********
Shell Scripts
测试一秒钟内一个进程可以并发地开始一个 shell 脚本的 n 个拷贝的次数,n 一般取值 1,2,4,8.(我的系统上取 1, 8, 16)。这个脚本对一个数据文件进行一系列的变形操作(?transformation)。

Shell Scripts (1 concurrent)  1 2 3
Shell Scripts (8 concurrent)  1 2 3
Shell Scripts (16 concurrent)  1 2 3

可以对多台服务器性能进行如上测试,然后对比上面9个测试参数的结果值。 

通过网上收集和对LINUX服务器性能的分析和体验,整理了几个比较实用,功能比较强大的性能测试工具供亲们下载,虽然网络上都对每个工具做了详细的功能介绍和文档说明,但分得很散,所以, 在此本人将各个比较实用的服务器性能测试工具集中起来,方便开发人员有针对性的测试和对比,在服务器性能方面起到很好的效果。 1、LTP--linux稳定性测试: LTP套件是由 Linux Test Project 所开发的一套系统测试套件。它基于系统资源的利用率统计开发了一个测试的组合,为系统提供足够的压力。通过压力测试来判断系统的稳定性和可靠性。 2、Linux性能测试工具Lmbench:Linux性能测试工具Lmbench是一套简易可移植的,符合ANSI/C标准为UNIX/POSIX而制定的微型测评工具。一般来说,它衡量两个关键特征:反应时间和带宽。Lmbench旨在使系统开发者深入了解关键操作的基础成本。其官方网站是:http://www.bitmover.com/lmbench/。 3、Linux下很全面的监控工具dstat:dstat是一个用来替换 vmstat,iostat netstat,nfsstat和ifstat这些命令的工具, 是一个全能系统信息统计工具. 与sysstat相比, dstat拥有一个彩色的界面, 在手动观察性能状况时, 数据比较显眼容易观察; 而且dstat支持即时刷新, 譬如输入dstat 3, 即每三秒收集一次, 但最新的数据都会每秒刷新显示. 和sysstat相同的是, dstat也可以收集指定的性能资源, 譬如 dstat -c 即显示CPU的使用情况. 下载安装文件dstat-0.6.7-1.el*.rf.noarch.rpm: http://dag.wieers.com/rpm/packages/dstat/ 3、网络流量监测图形分析工具 Cacti:Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具 4、Linux系统维护常用工具sysstat:sysstat这个工具,可以说是linux &Unix; 以及Freebsd最常用的工具。它的主要用途就是观察服务负载,比如CPU和内存的占用率、网络的使用率以及磁盘写入和读取速度等。 5、Apache ab 压力测试:ab的全称是ApacheBench,ab是Apache 附带的超文本传输协议(HTTP)的性能测试工具。 其设计意图是描绘当前所安装的Apache的执行性能,主要是显示你安装的Apache每秒可以处理多少个请求;
Linux服务器上进行开机压力测试可以使用多种工具和方法。其中一种常用的方法是使用压力测试工具,如stress-ng或sysbench。这些工具可以模拟CPU、内存、磁盘和网络等资源的高负载情况,以评估服务器在压力下的性能。 首先,你可以使用stress-ng工具来测试CPU的性能。该工具可以通过模拟各种CPU密集型任务来使CPU处于高负载状态。你可以使用以下命令安装stress-ng: ``` sudo apt-get install stress-ng ``` 然后,你可以使用以下命令在开机时运行stress-ng来进行CPU压力测试: ``` sudo stress-ng --cpu <number_of_cpus> --timeout <duration_in_seconds> ``` 这将使每个CPU核心都处于高负载状态,持续一定的时间。你可以根据自己的需求指定要使用的CPU核心数和测试的持续时间。 除了CPU压力测试,你还可以使用工具来测试内存、磁盘和网络的性能。例如,使用sysbench工具可以进行内存和磁盘的压力测试。你可以使用以下命令安装sysbench: ``` sudo apt-get install sysbench ``` 然后,你可以使用以下命令来运行内存和磁盘的压力测试: ``` # 内存压力测试 sudo sysbench --test=memory --memory-block-size=<block_size> --memory-total-size=<total_size> run # 磁盘压力测试 sudo sysbench --test=fileio --file-total-size=<total_size> --file-test-mode=<test_mode> prepare sudo sysbench --test=fileio --file-total-size=<total_size> --file-test-mode=<test_mode> run sudo sysbench --test=fileio --file-total-size=<total_size> --file-test-mode=<test_mode> cleanup ``` 在上述命令中,你需要根据你的需求指定内存块大小、总内存大小、总磁盘大小和测试模式。 此外,你还可以使用其他监测命令(如top、vmstat、free、mpstat、netstat、iostat等)来观察系统在压力下的性能指标。通过这些命令,你可以获取CPU使用率、内存使用率、磁盘IO和网络流量等信息。 总结来说,对Linux服务器进行开机压力测试可以通过使用压力测试工具(如stress-ng和sysbench)以及监测命令(如top、vmstat、free、mpstat、netstat、iostat等)来评估CPU、内存、磁盘和网络等资源在压力下的性能
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值