生活随笔
收集整理的這篇文章主要介紹了
UnixBench算分介绍
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
關(guān)于如何用UnixBench,介紹文章很多,這里就不展開了。這里重點描述下它是如何算分的。
運行參數(shù)
碰到很多客戶,裝好后,直接./Run,就把結(jié)果跑出來了,然后還只取最后一個分值,比誰高誰低。
下面列一下4C8G的結(jié)果:
------------------------------------------------------------------------
Benchmark Run: 一 6月 25 2018 20:25:47 - 20:54:19
4 CPUs in system; running 1 parallel copy of testsDhrystone 2 using register variables 30971628.9 lps (10.0 s, 7 samples)
Double-Precision Whetstone 3928.1 MWIPS (12.4 s, 7 samples)
Execl Throughput 3117.6 lps (30.0 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 645027.2 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 229505.4 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 1288742.6 KBps (30.0 s, 2 samples)
Pipe Throughput 1635960.9 lps (10.0 s, 7 samples)
Pipe-based Context Switching 337333.8 lps (10.0 s, 7 samples)
Process Creation 8238.2 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 5817.0 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 2183.9 lpm (60.0 s, 2 samples)
System Call Overhead 2465754.7 lps (10.0 s, 7 samples)System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 30971628.9 2654.0
Double-Precision Whetstone 55.0 3928.1 714.2
Execl Throughput 43.0 3117.6 725.0
File Copy 1024 bufsize 2000 maxblocks 3960.0 645027.2 1628.9
File Copy 256 bufsize 500 maxblocks 1655.0 229505.4 1386.7
File Copy 4096 bufsize 8000 maxblocks 5800.0 1288742.6 2222.0
Pipe Throughput 12440.0 1635960.9 1315.1
Pipe-based Context Switching 4000.0 337333.8 843.3
Process Creation 126.0 8238.2 653.8
Shell Scripts (1 concurrent) 42.4 5817.0 1371.9
Shell Scripts (8 concurrent) 6.0 2183.9 3639.9
System Call Overhead 15000.0 2465754.7 1643.8========
System Benchmarks Index Score 1362.9------------------------------------------------------------------------
Benchmark Run: 一 6月 25 2018 20:54:19 - 21:22:54
4 CPUs in system; running 4 parallel copies of testsDhrystone 2 using register variables 114984418.6 lps (10.0 s, 7 samples)
Double-Precision Whetstone 16614.2 MWIPS (11.6 s, 7 samples)
Execl Throughput 13645.3 lps (30.0 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 751698.4 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 230211.7 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 1964420.6 KBps (30.0 s, 2 samples)
Pipe Throughput 5999380.0 lps (10.0 s, 7 samples)
Pipe-based Context Switching 1095000.2 lps (10.0 s, 7 samples)
Process Creation 34454.9 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 18218.1 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 2493.1 lpm (60.0 s, 2 samples)
System Call Overhead 5643267.3 lps (10.0 s, 7 samples)System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 114984418.6 9853.0
Double-Precision Whetstone 55.0 16614.2 3020.8
Execl Throughput 43.0 13645.3 3173.3
File Copy 1024 bufsize 2000 maxblocks 3960.0 751698.4 1898.2
File Copy 256 bufsize 500 maxblocks 1655.0 230211.7 1391.0
File Copy 4096 bufsize 8000 maxblocks 5800.0 1964420.6 3386.9
Pipe Throughput 12440.0 5999380.0 4822.7
Pipe-based Context Switching 4000.0 1095000.2 2737.5
Process Creation 126.0 34454.9 2734.5
Shell Scripts (1 concurrent) 42.4 18218.1 4296.7
Shell Scripts (8 concurrent) 6.0 2493.1 4155.1
System Call Overhead 15000.0 5643267.3 3762.2========
System Benchmarks Index Score 3357.0
很多人就拿了3357那個分?jǐn)?shù)去比了,但是上面那個單進程結(jié)果1362.9也有意義,但凡接觸了這么多案例,沒人關(guān)心過。多進程結(jié)果就是根據(jù)系統(tǒng)CPU核數(shù),同時起多個進程的結(jié)果;單進程就是只起一個進程的結(jié)果,對于系統(tǒng)性能來說,兩個結(jié)果都是有意義的。
話說回來,./Run?到底執(zhí)行了什么?默認執(zhí)行的是Index模塊,它包含下面幾個小程序:
"dhry2reg", "whetstone-double", "execl","fstime", "fsbuffer", "fsdisk", "pipe", "context1", "spawn", "shell1", "shell8","syscall"
對應(yīng)的就是上面的結(jié)果的各個結(jié)果對應(yīng)的case了。
翻看了下它的源代碼,它的執(zhí)行參數(shù)如下:./Run 模塊 -i 迭代次數(shù) -c 進程并發(fā)數(shù) -q/-v (輸出方式。
- 模塊:有時候你只想測某一個小程序的結(jié)果,那你可以修改自己去新增一個模塊,修改測試內(nèi)容,這對于調(diào)試是非常方便的,也可以直接指定某個執(zhí)行程序。
- 迭代次數(shù):關(guān)于迭代次數(shù),不能想當(dāng)然的就理解成這就是要執(zhí)行的次數(shù)了,默認框架分為兩種迭代模式,一種是短迭代次數(shù),默認 3次,一種是 長迭代次數(shù),默認10 次。那輸入的迭代次數(shù)就是默認的長迭代次數(shù),短迭代次數(shù)=(迭代次數(shù)+1)/3,如果結(jié)果小于就是1. 程序配置好了,該選擇哪個迭代次數(shù)。
- 進程并發(fā)數(shù):如果你想進程并發(fā)數(shù)不是系統(tǒng)CPU數(shù),那就可以通過這個調(diào)整;
- 輸出方式:是靜默還是詳細輸出方式;
算分
每個小程序在執(zhí)行的時候都需要指定迭代模式和執(zhí)行時間以及并發(fā)情況,所有的進程一次執(zhí)行的結(jié)果都是統(tǒng)一模式。
單進程算分:
下面是單進程的一個舉例:
Process Creation -- 1 copy
==> "/opt/unixbench/UnixBench/pgms/spawn" 30 2>&1 >> "/opt/unixbench/UnixBench/results/VM_0_13_centos-2018-06-25-05.log"#### Pass 1# COUNT0: 247371 #分?jǐn)?shù)
# COUNT1: 1 # timebase 程序?qū)懰?# COUNT2: lps # 測試項名稱
# elapsed: 30.003119 # 耗時
# pid: 16803 # 進程ID
# status: 0 # 是否成功退出#### Pass 2# COUNT0: 242919
# COUNT1: 1
# COUNT2: lps
# elapsed: 30.002898
# pid: 5035
# status: 0#### Pass 3# COUNT0: 243989
# COUNT1: 1
# COUNT2: lps
# elapsed: 30.002732
# pid: 21228
# status: 0*Dump score: 242919.0
Count score: 243989.0
Count score: 247371.0>>>> Results of 1 copy
>>>> score: 8188.34084738901
>>>> time: 30.0029255
>>>> iterations: 2
其中COUNT0,COUNT1,COUNT2是這么算出來的,每個進程的結(jié)果如:
COUNT|x|y|x
經(jīng)過解析,變成如下:
COUNT0 = xCOUNT1 = yCOUNT2 = z
算分過程如下:
根據(jù)COUNT0從小到大,去掉 1/3 的最差結(jié)果;如果timebase,耗時都是大于0,?$product += log($COUNT0) - log(耗時/ $timebase)?否則就不需要考慮耗時這塊:?$product += log($COUNT0)?單項性能分:$score = exp($product/2),2是統(tǒng)計的迭代次數(shù),經(jīng)過計算恰好是這個分?jǐn)?shù),與系統(tǒng)輸出一致。
它總的算法思想:就是先通過log降維,把不同次數(shù)不一樣的結(jié)果盡可能拉平,平均然后在階乘,后面多個結(jié)果也是這個思想,先降維,再平均,再階乘。
多進程算分
那如果并發(fā)執(zhí)行多個呢?舉例如下:
Shell Scripts (1 concurrent) -- 4 copies
==> "/opt/unixbench/UnixBench/pgms/looper" 60 "/opt/unixbench/UnixBench/pgms/multi.sh" 1 2>&1 >> "/opt/unixbench/UnixBench/results/VM_0_13_centos-2018-06-25-05.log"#### Pass 1# COUNT0: 4614
# COUNT1: 60
# COUNT2: lpm
# elapsed: 60.005639
# pid: 20858
# status: 0# COUNT0: 4596
# COUNT1: 60
# COUNT2: lpm
# elapsed: 60.009496
# pid: 20859
# status: 0# COUNT0: 4592
# COUNT1: 60
# COUNT2: lpm
# elapsed: 60.011761
# pid: 20862
# status: 0# COUNT0: 4614
# COUNT1: 60
# COUNT2: lpm
# elapsed: 60.011930
# pid: 20864
# status: 0#### Pass 2# COUNT0: 4547
# COUNT1: 60
# COUNT2: lpm
# elapsed: 60.005597
# pid: 10791
# status: 0# COUNT0: 4590
# COUNT1: 60
# COUNT2: lpm
# elapsed: 60.013270
# pid: 10793
# status: 0# COUNT0: 4578
# COUNT1: 60
# COUNT2: lpm
# elapsed: 60.006054
# pid: 10794
# status: 0# COUNT0: 4561
# COUNT1: 60
# COUNT2: lpm
# elapsed: 60.014214
# pid: 10797
# status: 0#### Pass 3# COUNT0: 4631
# COUNT1: 60
# COUNT2: lpm
# elapsed: 60.013816
# pid: 31734
# status: 0# COUNT0: 4632
# COUNT1: 60
# COUNT2: lpm
# elapsed: 60.012614
# pid: 31735
# status: 0# COUNT0: 4637
# COUNT1: 60
# COUNT2: lpm
# elapsed: 60.005633
# pid: 31737
# status: 0# COUNT0: 4645
# COUNT1: 60
# COUNT2: lpm
# elapsed: 60.006082
# pid: 31740
# status: 0*Dump score: 18276.0
Count score: 18416.0
Count score: 18545.0>>>> Sum of 4 copies
>>>> score: 18477.4244713467
>>>> time: 60.009621375
>>>> iterations: 2
算分過程如下:
分?jǐn)?shù):如18545,就是PASS3個項的加總: 4631+4632+4637+4645耗時:平均值,即:(60.013816+60.012614+60.005633+60.006082)/4=60.00953625timebase: 還是那個COUNT1
上述3步即是把一個并發(fā)結(jié)果合成一個結(jié)果,然后的積分方式跟單進程的方式一樣
總分
那文章開頭多進程的圖例分?jǐn)?shù)舉例:
算出來的每項score有個加權(quán)分?jǐn)?shù),要除以10(作為單項比拼,我覺得除不除10無所謂,估計是為了跟總分接近)總分計算:=exp(average(每項score分*10)),結(jié)果恰恰好就是我們要的結(jié)果。
?
原文鏈接
本文為云棲社區(qū)原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。
總結(jié)
以上是生活随笔為你收集整理的UnixBench算分介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。