天天看點

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,如需轉載請自行聯系原作者

繼續閱讀