1. 程式人生 > >openstack 效能測試

openstack 效能測試

先放測試結果

測的是openstack G版本上的虛擬機器效能

測試結論是虛擬機器的總體效能與普通筆記本差不多,但是與桌上型電腦有一定差距,特別是磁碟IO部分。

CPU

1.vmstat

vmstat 1

引數介紹

r,可執行佇列的執行緒數,這些執行緒都是可執行狀態,只不過 CPU 暫時不可用;
b,被 blocked 的程序數,正在等待 IO 請求;
in,被處理過的中斷數
cs,系統上正在做上下文切換的數目
us,使用者佔用 CPU 的百分比
sys,核心和中斷佔用 CPU 的百分比
wa,所有可執行的執行緒被 blocked 以後都在等待 IO,這時候 CPU 空閒的百分比
id,CPU 完全空閒的百分比

swpd,已使用的 SWAP 空間大小,KB 為單位;
free,可用的實體記憶體大小,KB 為單位;
buff,實體記憶體用來快取讀寫操作的 buffer 大小,KB 為單位;
cache,實體記憶體用來快取程序地址空間的 cache 大小,KB 為單位;
si,資料從 SWAP 讀取到 RAM(swap in)的大小,KB 為單位;
so,資料從 RAM 寫到 SWAP(swap out)的大小,KB 為單位;
bi,磁碟塊從檔案系統或 SWAP 讀取到 RAM(blocks in)的大小,block 為單位;
bo,磁碟塊從 RAM 寫到檔案系統或 SWAP(blocks out)的大小,block 為單位;
上面是一個頻繁讀寫交換區的例子,可以觀察到以下幾點:
物理可用記憶體 free 基本沒什麼顯著變化,swapd 逐步增加,說明最小可用的記憶體始終保持在 256MB X 10% = 2.56MB 左右,當髒頁達到10%的時候(vm.dirty_background_ratio = 10)就開始大量使用 swap;
buff 穩步減少說明系統知道記憶體不夠了,kwapd 正在從 buff 那裡借用部分記憶體;
kswapd 持續把髒頁面寫到 swap 交換區(so),並且從 swapd 逐漸增加看出確實如此。根據上面講的 kswapd 掃描時檢查的三件事,如果頁面被修改了,但不是被檔案系統修改的,把頁面寫到 swap,所以這裡 swapd 持續增加。 

2.bzip2

 wget http://mirror.ihep.ac.cn/centos/6.4/isos/x86_64/CentOS-6.4-x86_64-bin-DVD2.iso -O 1GB.iso
 start=$(date +%s) && bzip2 -9 1GB.iso && end=$(date +%s) && echo $(( $end - $start ))

3.sysbench

安裝

apt-get install sysbench

素數測試

sysbench --test=cpu --cpu-max-prime=30000 run 

執行緒

 sysbench --test=threads --num-threads=64 --thread-yields=100 --thread-locks=2 run
檔案IO讀寫
 sysbench --test=fileio --num-threads=16 --file-total-size=1G --file-test-mode=rndrw prepare
 sysbench --test=fileio --num-threads=16 --file-total-size=1G --file-test-mode=rndrw run
 sysbench --test=fileio --num-threads=16 --file-total-size=1G --file-test-mode=rndrw cleanup

4.SPECCPU2006

CPU執行整型計算的效能達到原生系統的97.04% 浮點計算的效能達到原生系統的96.89%

5.SPECjbb2005

6.UnixBench

7.SysBench

8.PCMark

     只能在windows中執行

9.核心編譯

     可以在make時新增"-j N"引數來使用N程序協作編譯

     效能為同等原生系統的94.15%左右

10.Super PI

      可以支援計算到小數點後32M個數據位

     CPU效能為原生系統的97.17%

配置

為了防止圖形介面對結果的影響,設定執行級別為3,不開啟圖形介面

記憶體

1.mbw

apt-get install mbw
mbw 1024

2.命令列

cat /proc/meminfo

3.LMbench

可達到原生系統95%以上的效能

4.Memtest86+

5.STREAM

EPT和VPID對KVM中記憶體虛擬加速效果非常好

網路

主要效能指標是throughput,延遲, 抖動, 丟包率等等。

1.iperf

iperfiperf -s 一臺作為伺服器  
iperf -c 202.122.39.226 -i 1 一臺作為客戶端 

物理實際頻寬1Gbps,實際能達到800多M左右

2.vps 網速測試

 wget freevps.us/downloads/bench.sh -O - -o /dev/null | bash

3.netflow 跟蹤

4.ethtool

apt-get install ethtool
ethtool eth0 

5.netperf

apt-get install netperf
netserver 
netperf -H 202.122.39.232 -l 1

使用virtio,VT-d,SR-IOV等方式的網絡卡虛擬化可以達到與原生系統差不多的效能

在達到相同頻寬時,VT-d和SR-IOV方式佔用的CPU資源比virtio少

6.tcpdump

apt-get install tcptrace
tcpdump -w network.dmp
tcptrace network.dmp

7.NETIO

8.SCP




磁碟IO

各種情況下的讀寫throughput,如:連續/隨機/大塊/小塊等等。

1.dd

 dd if=/dev/zero of=1GB.files bs=64k count=16k conv=fdatasync
dd if=file.dat of/dev/null iflag=direct bs=1k count=10k
dd if=/dev/zero of=dd1.dat conv=fsync oflag=direct bs=1k count=10k

2.iozone3

指令碼中記得清cache

apt-get install iozone3
iozone -s 512m -r 8k -S 20480 -L 64 -I -i 0 -i 1 -i 2 -Rab iozone.xls

3.sysstat

iostat -kx 1

順序 IO 是指同時順序請求大量資料,比如資料庫執行大量的查詢、流媒體服務等,順序 IO 可以同時很快的移動大量資料。可以這樣來評估 IOPS 的效能,用每秒讀寫 IO 位元組數除以每秒讀寫 IOPS 數,rkB/s 除以 r/s,wkB/s 除以 w/s. 下面顯示的是連續2秒的 IO 情況,可見每次 IO 寫的資料是增加的(45060.00 / 99.00 = 455.15 KB per IO,54272.00 / 112.00 = 484.57 KB per IO)。
相對隨機 IO 而言,順序 IO 更應該重視每次 IO 的吞吐能力(KB per IO):

隨機 IO 是指隨機請求資料,其 IO 速度不依賴於資料的大小和排列,依賴於磁碟的每秒能 IO 的次數,比如 Web 服務、Mail 服務等每次請求的資料都很小,
隨機 IO 每秒同時會有更多的請求數產生,所以磁碟的每秒能 IO 多少次是關鍵。

4.fio

apt-get install fio

順序讀

fio -name iops -rw=read -bs=4k -runtime=60 -iodepth 32 -filename /dev/sda6 -ioengine libaio -direct=1
其中 rw=read表示隨機讀,bs=4k表示每次讀4k,filename指定對應的分割槽 direct=1表示穿越linux的快取
順序讀,SAS總體表現是SATA硬碟的1.3倍,SSD總體表現是sata硬碟的4倍

隨機讀

fio -name iops -rw=randread -bs=4k -runtime=60 -iodepth 32 -filename /dev/sda6 -ioengine libaio -direct=1
隨機讀,SAS總體表現是SATA硬碟的4倍,SSD總體表現是sata硬碟的一千多倍。

順序寫

測試命令:fio -name iops -rw=write -bs=4k -runtime=60 -iodepth 32 -filename /dev/sda6 -ioengine libaio -direct=1

同樣的4KB資料包順序寫的情況下,SSD卡的成績為592MB/S,SAS卡的成績為190MB/S,SATA卡的成績為124.9MB/S

本地硬碟僅為118MB/S,IOPS僅為30290

隨機寫

fio -name iops -rw=randwrite -bs=4k -runtime=60 -iodepth 32 -filename /dev/sda6 -ioengine libaio -direct=1
在接下來的4KB資料包隨機寫操作中,
SSD卡再次展示了其高超的IO效能,高達549MB/S的隨機寫速率,IOPS高達140K。
SAS 2000K /s
SAT 548K /s

本地硬碟的隨機讀寫僅為548KB/S,IOPS為134。

5.Bonie++

6.hdparm

當一次讀寫的資料塊較小時,KVM虛擬機器的磁碟讀寫速度大約為原生系統的七分之一左右,當一次讀寫資料塊較大時,磁碟I/O效能差距不大. 另外用virtio方式的磁碟I/O效能比純模擬的IDE磁碟要好一些。

評分測試

geekbench

wget https://www.dropbox.com/s/vhzy8rbchw6p6d9/Geekbench-3.1.3-Linux.tar.gz

unixbench

wget http://www.zhujima.com/soft/unixbench.sh;sh ./unixbench.sh;

效能優化

1.客戶端作業系統中的VCPU與物理CPU進行繫結
2.未啟用擴充套件頁表

測試環境

Openstack 環境

計算結點1 HP 8核 G8

計算結點2 HP 4核 H9

筆記本

Intel Pentium CPU P6000 1.87GHz 聯想E46A P6000

桌上型電腦

Dell OptiPlex 7010

舊伺服器


惠普DL 380G5


最終結果



N2(2V並雙)表示 openstack 第2個計算結點 的一個2VCPU的虛擬機器 4GB 記憶體 同時執行2個虛擬機器 雙任務
N2(2V並單)表示 openstack 第2個計算結點 的一個2VCPU的虛擬機器 4GB 記憶體 同時執行2個虛擬機器 單任務
N2(2V單) 表示 openstack 第2個計算結點 的一個2VCPU的虛擬機器 4GB 記憶體 只同時執行1個虛擬機器 單任務
N2(1V)表示 openstack 第2個計算結點 的一個1VCPU的虛擬機器 4GB 記憶體 只同時執行1個虛擬機器 單任務
N1(1V)表示 openstack 第1個計算結點 的一個1VCPU的虛擬機器 4GB 記憶體 只同時執行1個虛擬機器 單任務
N2(2V 雙)表示 openstack 第2個計算結點 的一個2VCPU的虛擬機器 4GB 記憶體 只同時執行1個虛擬機器 雙任務
N2(2V 單)表示 openstack 第2個計算結點 的一個2VCPU的虛擬機器 4GB 記憶體 只同時執行1個虛擬機器 單任務
K5(1V) 表示  舊環境的一臺1VCPU 4G 的虛擬機器

G5(單) 表示 舊的 惠普DL380 G5  單任務
G5(8)表示 舊的 惠普DL380 G5 8任務


參考


http://www.cpubenchmark.net/multi_cpu.html
http://mingxinglai.com/cn/2013/07/sysbench/
http://smilejay.com/2013/12/classfications-of-performance-testing/
http://www.chenshake.com/secondary-development-of-openstack-dashboard/

http://yaronspace.cn/blog/archives/1102

http://m.oschina.net/blog/159640

http://smilejay.com/2013/01/cpu-performance-test-tools/