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/