天天看点

Linux服务器性能压力测试

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

1)安装使用

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

<code>[root@</code><code>test</code><code>-vm001 ~]</code><code># cat bench.sh</code>

<code>#! /bin/bash</code>

<code>PATH=</code><code>/bin</code><code>:</code><code>/sbin</code><code>:</code><code>/usr/bin</code><code>:</code><code>/usr/sbin</code><code>:</code><code>/usr/local/bin</code><code>:</code><code>/usr/local/sbin</code><code>:~</code><code>/bin</code>

<code>export</code> <code>PATH</code>

<code>#===============================================================================================</code>

<code>#   Description:  Unixbench for Test</code>

<code># Create new soft download dir</code>

<code>mkdir</code> <code>-p </code><code>/opt/unixbench</code><code>;</code>

<code>mv</code> <code>/root/UnixBench5</code><code>.1.3.tgz </code><code>/opt/unixbench</code><code>;</code>

<code>cd</code> <code>/opt/unixbench</code><code>;</code>

<code># Download UnixBench5.1.3</code>

<code>#if [ -s UnixBench5.1.3.tgz ]; then</code>

<code>#  echo "UnixBench5.1.3.tgz [found]"</code>

<code>#else</code>

<code># echo "UnixBench5.1.3.tgz not found!!!download now......"</code>

<code># if ! wget -c http://byte-unixbench.googlecode.com/files/UnixBench5.1.3.tgz;then</code>

<code>#   echo "Failed to download UnixBench5.1.3.tgz,please download it to "/opt/unixbench" directory manually and rerun the install script."</code>

<code>#   exit 1</code>

<code># fi</code>

<code>#fi</code>

<code>tar</code> <code>-xzf UnixBench5.1.3.tgz;</code>

<code>cd</code> <code>UnixBench;</code>

<code>yum -y </code><code>install</code> <code>gcc</code> <code>gcc</code><code>-c autoconf </code><code>gcc</code><code>-c++ </code><code>time</code> <code>perl-Time-HiRes</code>

<code>#Run unixbench</code>

<code>sed</code> <code>-i </code><code>"s/GRAPHIC_TESTS = defined/#GRAPHIC_TESTS = defined/g"</code> <code>.</code><code>/Makefile</code>

<code>make</code><code>;</code>

<code>.</code><code>/Run</code><code>;</code>

<code>echo</code> <code>''</code><code>;</code>

<code>echo</code> <code>"======= Script description and score comparison completed! ======= "</code><code>;</code>

二、测试结果

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

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

<code>[root@</code><code>test</code><code>-vm001 ~]</code><code># sh -x bench.sh</code>

<code>+ PATH=</code><code>/bin</code><code>:</code><code>/sbin</code><code>:</code><code>/usr/bin</code><code>:</code><code>/usr/sbin</code><code>:</code><code>/usr/local/bin</code><code>:</code><code>/usr/local/sbin</code><code>:</code><code>/root/bin</code>

<code>+ </code><code>export</code> <code>PATH</code>

<code>+ </code><code>mkdir</code> <code>-p </code><code>/opt/unixbench</code>

<code>+ </code><code>mv</code> <code>/root/UnixBench5</code><code>.1.3.tgz </code><code>/opt/unixbench</code>

<code>+ </code><code>cd</code> <code>/opt/unixbench</code>

<code>+ </code><code>tar</code> <code>-xzf UnixBench5.1.3.tgz</code>

<code>+ </code><code>cd</code> <code>UnixBench</code>

<code>+ yum -y </code><code>install</code> <code>gcc</code> <code>gcc</code><code>-c autoconf </code><code>gcc</code><code>-c++ </code><code>time</code> <code>perl-Time-HiRes</code>

<code>.........</code>

<code>make</code><code>[1]: Leaving directory `</code><code>/opt/unixbench/UnixBench</code><code>'</code>

<code>sh: 3dinfo: </code><code>command</code> <code>not found</code>

<code>   </code><code>#    #  #    #  #  #    #          #####   ######  #    #   ####   #    #</code>

<code>   </code><code>#    #  ##   #  #   #  #           #    #  #       ##   #  #    #  #    #</code>

<code>   </code><code>#    #  # #  #  #    ##            #####   #####   # #  #  #       ######</code>

<code>   </code><code>#    #  #  # #  #    ##            #    #  #       #  # #  #       #    #</code>

<code>   </code><code>#    #  #   ##  #   #  #           #    #  #       #   ##  #    #  #    #</code>

<code>    </code><code>####   #    #  #  #    #          #####   ######  #    #   ####   #    #</code>

<code>   </code><code>Version 5.1.3                      Based on the Byte Magazine Unix Benchmark</code>

<code>   </code><code>Multi-CPU version                  Version 5 revisions by Ian Smith,</code>

<code>                                      </code><code>Sunnyvale, CA, USA</code>

<code>   </code><code>January 13, 2011                   johantheghost at yahoo period com</code>

<code>1 x Dhrystone 2 using register variables  1 2 3 4 5 6 7 8 9 10</code>

<code>1 x Double-Precision Whetstone  1 2 3 4 5 6 7 8 9 10</code>

<code>1 x Execl Throughput  1 2 3</code>

<code>1 x File Copy 1024 bufsize 2000 maxblocks  1 2 3</code>

<code>1 x File Copy 256 bufsize 500 maxblocks  1 2 3</code>

<code>1 x File Copy 4096 bufsize 8000 maxblocks  1 2 3</code>

<code>1 x Pipe Throughput  1 2 3 4 5 6 7 8 9 10</code>

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

<code>1 x Process Creation  1 2 3</code>

<code>1 x System Call Overhead  1 2 3 4 5 6 7 8 9 10</code>

<code>1 x Shell Scripts (1 concurrent)  1 2 3</code>

<code>1 x Shell Scripts (8 concurrent)  1 2 3</code>

<code>========================================================================</code>

<code>   </code><code>BYTE UNIX Benchmarks (Version 5.1.3)</code>

<code>   </code><code>System: </code><code>test</code><code>-vm001: GNU</code><code>/Linux</code>

<code>   </code><code>OS: GNU</code><code>/Linux</code> <code>-- 3.10.0-514.el7.x86_64 -- </code><code>#1 SMP Tue Nov 22 16:42:41 UTC 2016</code>

<code>   </code><code>Machine: x86_64 (x86_64)</code>

<code>   </code><code>Language: en_US.utf8 (charmap=</code><code>"UTF-8"</code><code>, collate=</code><code>"UTF-8"</code><code>)</code>

<code>   </code><code>CPU 0: Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz (4390.8 bogomips)</code>

<code>          </code><code>x86-64, MMX, Physical Address Ext, SYSENTER</code><code>/SYSEXIT</code><code>, SYSCALL</code><code>/SYSRET</code>

<code>   </code><code>17:31:42 up  8:11,  6 </code><code>users</code><code>,  load average: 0.14, 0.09, 0.06; runlevel 3</code>

<code>------------------------------------------------------------------------</code>

<code>Benchmark Run: 六 9月 16 2017 17:31:42 - 17:59:59</code>

<code>1 CPU </code><code>in</code> <code>system; running 1 parallel copy of tests</code>

<code>Dhrystone 2 using register variables       31665236.6 lps   (10.0 s, 7 samples)</code>

<code>Double-Precision Whetstone                     4345.5 MWIPS (9.9 s, 7 samples)</code>

<code>Execl Throughput                               4163.9 lps   (30.0 s, 2 samples)</code>

<code>File Copy 1024 bufsize 2000 maxblocks       1091117.9 KBps  (30.0 s, 2 samples)</code>

<code>File Copy 256 bufsize 500 maxblocks          299689.6 KBps  (30.0 s, 2 samples)</code>

<code>File Copy 4096 bufsize 8000 maxblocks       2535441.2 KBps  (30.0 s, 2 samples)</code>

<code>Pipe Throughput                             1556494.1 lps   (10.0 s, 7 samples)</code>

<code>Pipe-based Context Switching                 362875.3 lps   (10.0 s, 7 samples)</code>

<code>Process Creation                              10440.1 lps   (30.0 s, 2 samples)</code>

<code>Shell Scripts (1 concurrent)                   5115.9 lpm   (60.0 s, 2 samples)</code>

<code>Shell Scripts (8 concurrent)                    726.5 lpm   (60.1 s, 2 samples)</code>

<code>System Call Overhead                        2707740.8 lps   (10.0 s, 7 samples)</code>

<code>System Benchmarks Index Values               BASELINE       RESULT    INDEX</code>

<code>Dhrystone 2 using register variables         116700.0   31665236.6   2713.4</code>

<code>Double-Precision Whetstone                       55.0       4345.5    790.1</code>

<code>Execl Throughput                                 43.0       4163.9    968.3</code>

<code>File Copy 1024 bufsize 2000 maxblocks          3960.0    1091117.9   2755.3</code>

<code>File Copy 256 bufsize 500 maxblocks            1655.0     299689.6   1810.8</code>

<code>File Copy 4096 bufsize 8000 maxblocks          5800.0    2535441.2   4371.5</code>

<code>Pipe Throughput                               12440.0    1556494.1   1251.2</code>

<code>Pipe-based Context Switching                   4000.0     362875.3    907.2</code>

<code>Process Creation                                126.0      10440.1    828.6</code>

<code>Shell Scripts (1 concurrent)                     42.4       5115.9   1206.6</code>

<code>Shell Scripts (8 concurrent)                      6.0        726.5   1210.8</code>

<code>System Call Overhead                          15000.0    2707740.8   1805.2</code>

<code>                                                                   </code><code>========</code>

<code>System Benchmarks Index Score                                        1482.1</code>

<code>+ </code><code>echo</code> <code>''</code>

<code>+ </code><code>echo</code> <code>'======= Script description and score comparison completed! ======= '</code>

<code>======= Script description and score comparison completed! =======</code>

注意:上面会有两个跑分结果,一个是 1 parallel process 的结果,另一个是4 parallel process 的结果 (具体可以看html里的输出)。两者的区别即一个是单进程跑,一个是多进程跑 。

默认测试完成后测试结果会存放在results目录,如下:

<code>[root@</code><code>test</code><code>-vm001 results]</code><code># pwd</code>

<code>/opt/unixbench/UnixBench/results</code>

<code>[root@</code><code>test</code><code>-vm001 results]</code><code># ls</code>

<code>test</code><code>-vm001-2017-09-16-01  </code><code>test</code><code>-vm001-2017-09-16-01.html  </code><code>test</code><code>-vm001-2017-09-16-01.log</code>

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

三、测试项目分析

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

<code>1. ***********************</code>

<code>Dhrystone 2 using register variables  1 2 3 4 5 6 7 8 9 10</code>

<code>此项产生于 1984,测试 string handling,因为没有浮点操作,所以深受软件和硬件设计(hardware and software design)、编译和链接(compiler and linker options)、代码优化(code optimazaton)、对内存的cache(cache memory)、等待状态(?wait states)整数数据类型(integer data types)的影响</code>

<code>&lt;br&gt;2. ********************</code>

<code>Double-Precision Whetstone  1 2 3 4 5 6 7 8 9 10</code>

<code>这一项测试浮点数操作的速度和效率。这一测试包括几个模块,每个模块都包括一组用于科学计算的操作。覆盖面很广的一系列c函数:sin,cos,sqrt,exp,log 被用于整数和浮点数的数学运算、数组访问、条件分支(conditional branch)和程序调用。此测试同时测试了整数和浮点数算术运算。</code>

<code>&lt;br&gt;3. **************</code>

<code>System Call Overhead  1 2 3 4 5 6 7 8 9 10</code>

<code>测试进入和离开操作系统内核的代价,即一次系统调用的代价。它利用一个反复地调用 getpid 函数的小程序达到此目的。</code>

<code>4. ***************</code>

<code>Pipe Throughput  1 2 3 4 5 6 7 8 9 10</code>

<code>管道(pipe)是进程间交流的最简单方式,这里的 Pipe throughtput 指的是一秒钟内一个进程可以向一个管道写 512 字节数据然后再读回的次数。需要注意的是,pipe throughtput 在实际编程中没有对应的真实存在。</code>

<code>5. *************</code>

<code>Pipe-based Context Switching  1 2 3 4 5 6 7 8 9 10</code>

<code>这个测试两个进程(每秒钟)通过一个管道交换一个不断增长的整数的次数。这一点很向现实编程中的一些应用,这个测试程序首先创建一个子进程,再和这个子进程进行双向的管道传输。</code>

<code>6. ************</code>

<code>Process Creation  1 2 3</code>

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

<code>7. ***********</code>

<code>Execl Throughput  1 2 3</code>

<code>此测试考察每秒钟可以执行的 execl 系统调用的次数。 execl 系统调用是 </code><code>exec</code> <code>函数族的一员。它和其他一些与之相似的命令一样是 execve() 函数的前端。</code>

<code>8. ***********</code>

<code>File copy</code>

<code>测试从一个文件向另外一个文件传输数据的速率。每次测试使用不同大小的缓冲区。这一针对文件 </code><code>read</code><code>、write、copy 操作的测试统计规定时间(默认是 10s)内的文件 </code><code>read</code><code>、write、copy 操作次数。</code>

<code> </code> 

<code>Filesystem Throughput 1024 bufsize 2000 maxblocks  1 2 3</code>

<code>Filesystem Throughput 256 bufsize 500 maxblocks  1 2 3</code>

<code>Filesystem Throughput 4096 bufsize 8000 maxblocks  1 2 3</code>

<code>9. **********</code>

<code>Shell Scripts</code>

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

<code>Shell Scripts (1 concurrent)  1 2 3</code>

<code>Shell Scripts (8 concurrent)  1 2 3</code>

<code>Shell Scripts (16 concurrent)  1 2 3</code>

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

***************当你发现自己的才华撑不起野心时,就请安静下来学习吧***************

本文转自散尽浮华博客园博客,原文链接:http://www.cnblogs.com/kevingrace/p/7565371.html,如需转载请自行联系原作者

继续阅读