The NoteBook of EricKong

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            611 Posts :: 1 Stories :: 190 Comments :: 0 Trackbacks

          VM性能的快速測試方法


          核心提示: 經(jīng)常有同行問怎么樣去做這些性能評測。其實這些性能評測都很簡單,任何一個具備Linux基礎(chǔ)知識的工程師都可以完成。我們通常使用UnixBench來評估虛擬機CPU性能,mbw來評估內(nèi)存性能,iozone來評估文件IO性能,iperf來評估網(wǎng)絡(luò)性能,pgbench來評估數(shù)據(jù)庫性能。在這里我將我自己做性能測試的過程整理一下,供各位同行參考。

          中國IDC圈10月30日報道 前段時間陸續(xù)發(fā)布了一些對公有云服務(wù)性能評測的數(shù)據(jù)。經(jīng)常有同行問怎么樣去做這些性能評測。其實這些性能評測都很簡單,任何一個具備Linux基礎(chǔ)知識的工程師都可以完成。我們通常使用UnixBench來評估虛擬機CPU性能,mbw來評估內(nèi)存性能,iozone來評估文件IO性能,iperf來評估網(wǎng)絡(luò)性能,pgbench來評估數(shù)據(jù)庫性能。在這里我將我自己做性能測試的過程整理一下,供各位同行參考。

          (0)安裝必要的軟件

          假定VM的操作系統(tǒng)是Ubuntu,可以按照如下步驟安裝必要的軟件:

          20141030104942

          (1)CPU性能測試

          我們使用UnixBench來進行CPU性能測試。UnixBench是一套具有悠久歷史的性能測試工具,其測試結(jié)果反映的是一臺主機的綜合性能。從理論上來說UnixBench測試結(jié)果與被測試主機的CPU、內(nèi)存、存儲、操作系統(tǒng)都有直接的關(guān)系。但是根據(jù)我們的觀察,對于現(xiàn)代的計算機系統(tǒng)來說,UnixBench測試結(jié)果受CPU 處理能力的影響更大一些。因此,在這里我們用UnixBench測試結(jié)果來代表虛擬機的vCPU 處理能力。每個UnixBench測試結(jié)果包括兩個數(shù)據(jù),一個是單線程測試結(jié)果,另一個是多線程測試結(jié)果(虛擬機上有幾顆虛擬CPU,就有幾個并發(fā)的測試線程)。

          cd ~/UnixBench

          ./Run

          下面是一個可供參考的測試結(jié)果。在這個測試中使用了兩臺物理機,每臺物理機各配置一顆Intel Core i3 540 @ 3.07 GHz (雙核四線程),16 GB內(nèi)存(DDR3 @ 1333 MHz),一塊Seagate ST2000DL003-9VT1硬盤(SATA,2TB,5900RPM),運行Ubuntu 10.04 AMD64 Server操作系統(tǒng),使用的文件系統(tǒng)為ext4,使用的Hypervisor為KVM(qemu-kvm-0.12.3)。我們分別測試了宿主機、磁盤映像以文件格式(RAW格式,沒有啟用virtio)存儲在本地磁盤上的虛擬機、磁盤映像以文件格式(RAW格式,沒有啟用virtio)存儲在NFS上的虛擬機的CPU性能。虛擬機的配置為2 顆vCPU(占用兩個物理線程,也就是一個物理核心)和4 GB內(nèi)存,運行Ubuntu 12.04 AMD64 Server操作系統(tǒng)。在這個測試中沒有對操作系統(tǒng)、文件系統(tǒng)、NFS、KVM等等進行任何性能調(diào)優(yōu)。

          14982672_201410291058471naZq

           

          從如上測試結(jié)果可以看出,在沒有進行任何性能調(diào)優(yōu)的情況下,在單線程CPU性能方面,宿主機 >> 本地磁盤上的虛擬機 >> NFS服務(wù)上的虛擬機;在多線程CPU性能方面,宿主機 >> 本地磁盤上的虛擬機 = NFS服務(wù)上的虛擬機。需要注意的是,在多線程測試結(jié)果方面,宿主機所占的優(yōu)勢完全是由于宿主機比虛擬機多占用了兩個物理線程,也就是一個物理核心。可以認為,在如上所述測試中,物理機和虛擬機的CPU性能基本上是一致的,虛擬化基本上沒有導致CPU性能損失。

          (2)文件IO性能測試

          我們使用iozone來進行文件IO性能測試。iozone性能測試結(jié)果表示的是文件IO的吞吐量(KBps),但是通過吞吐量可以估算出IOPS.在如下命令中,我們評估的是以256K為數(shù)據(jù)塊大小對文件進行寫、重寫、讀、重讀、隨機讀、隨機寫性能測試,在測試過程當中使用/io.tmp作為臨時測試文件,該測試文件的大小是4 GB.需要注意的是,命令中所指定的測試文件是帶路徑的,因此我們可以測試同一虛擬機上不同文件系統(tǒng)的性能。例如我們通過NFS將某一網(wǎng)絡(luò)共享文件系統(tǒng)掛載到虛擬機的/mnt目錄,那么我們可以將該測試文件的路徑設(shè)定為/mnt/io.tmp.

          cd ~/iozone3_414/src/current

          ./iozone -Mcew -i0 -i1 -i2 -s4g -r256k -f /io.tmp

          下面是一個可供參考的測試結(jié)果。在這個測試中使用了兩臺物理機,每臺物理機各配置一顆Intel Core i3 540 @ 3.07 GHz (雙核四線程),16 GB內(nèi)存(DDR3 @ 1333 MHz),一塊Seagate ST2000DL003-9VT1硬盤(SATA,2TB,5900RPM),運行Ubuntu 10.04 AMD64 Server操作系統(tǒng),使用的文件系統(tǒng)為ext4,使用的Hypervisor為KVM(qemu-kvm-0.12.3)。我們分別測試了宿主機、NFS、磁盤映像以文件格式(RAW格式,沒有啟用virtio)存儲在本地磁盤上的虛擬機、磁盤映像以文件格式(RAW格式,沒有啟用virtio)存儲在NFS上的虛擬機、以及從虛擬機內(nèi)部掛載宿主機NFS服務(wù)(虛擬網(wǎng)卡啟用了virtio)的磁盤IO性能。虛擬機的配置為2 顆vCPU(占用兩個物理線程,也就是一個物理核心)和4 GB內(nèi)存,運行Ubuntu 12.04 AMD64 Server操作系統(tǒng)。在這個測試中沒有對操作系統(tǒng)、文件系統(tǒng)、NFS、KVM等等進行任何性能調(diào)優(yōu)。

          14982672_201410291058472o0uv

          從如上測試結(jié)果可以看出,在如上所述特定測試場景中,在文件IO性能方面,宿主機 > NFS > 虛擬機中的NFS > 本地磁盤上的虛擬機 >NFS服務(wù)上的虛擬機。值得注意的是,即使是從虛擬機中掛載NFS服務(wù),其文件IO性能也遠遠超過本地磁盤上的虛擬機。
                  

          [特別說明]需要注意的是,當我們說文件(或者磁盤)IO性能的時候,我們指的通常是應(yīng)用程序(例如iozone)進行文件讀寫操作時所看到的IO性能。這個性能通常是與系統(tǒng)相關(guān)的,包括了多級緩存(磁盤自身的緩存機制、操作系統(tǒng)的緩存機制)的影響,而不僅僅是磁盤本身。利用iozone進行文件IO性能測試時,測試結(jié)果與主機的內(nèi)存大小、測試數(shù)據(jù)塊的大小、測試文件的大小都有很大的關(guān)系。如果要全面地描述一個特定系統(tǒng)(CPU、內(nèi)存、硬盤)的文件IO性能,往往需要對測試數(shù)據(jù)塊的大小和測試文件的大小進行調(diào)整,進行一系列類似的測試并對測試結(jié)果進行全面分析。本文所提供的僅僅是一個快速測試方法,所提供的測試參數(shù)并沒有針對任何特定系統(tǒng)進行優(yōu)化,僅僅是為了說明iozone這個工具的使用方法。如上所述之測試數(shù)據(jù),僅僅在如上所述之測試場景下是有效的,并不足以定性地說明任何虛擬化場景下宿主機和虛擬機的文件IO性能差異。建議讀者在掌握了iozone這個工具的使用方法的基礎(chǔ)上,對被測試對象進行更加全面的測試。(感謝saphires網(wǎng)友的修改建議。)

          (3)內(nèi)存性能測試

          我們使用mbw來測試虛擬機的內(nèi)存性能。mbw通常用來評估用戶層應(yīng)用程序進行內(nèi)存拷貝操作所能夠達到的帶寬(MBps)。

          mbw 128

          下面是一個可供參考的測試結(jié)果。在這個測試中使用了兩臺物理機,每臺物理機各配置一顆Intel Core i3 540 @ 3.07 GHz (雙核四線程),16 GB內(nèi)存(DDR3 @ 1333 MHz),一塊Seagate ST2000DL003-9VT1硬盤(SATA,2TB,5900RPM),運行Ubuntu 10.04 AMD64 Server操作系統(tǒng),使用的文件系統(tǒng)為ext4,使用的Hypervisor為KVM(qemu-kvm-0.12.3),虛擬機運行Ubuntu 12.04 AMD64 Server操作系統(tǒng)。我們分別測試了宿主機、磁盤映像以文件格式(RAW格式,沒有啟用virtio)存儲在本地磁盤上的虛擬機、磁盤映像以文件格式(RAW格式,沒有啟用virtio)存儲在NFS上的虛擬機的內(nèi)存性能。虛擬機的配置為2 顆vCPU(占用兩個物理線程,也就是一個物理核心)和4 GB內(nèi)存。在這個測試中沒有對操作系統(tǒng)、文件系統(tǒng)、NFS、KVM等等進行任何性能調(diào)優(yōu)。

          14982672_201410291058473O2O9

          從如上測試結(jié)果可以看出,在沒有進行任何性能調(diào)優(yōu)的情況下,宿主機、本地磁盤上的虛擬機、NFS服務(wù)上的虛擬機在內(nèi)存性能方面基本上是一致的,虛擬化基本上沒有導致內(nèi)存性能損失。

          (4)網(wǎng)絡(luò)帶寬測試

          我們使用iperf來測試虛擬機之間的網(wǎng)絡(luò)帶寬(Mbps)。測試方法是在一臺虛擬機上運行iperf服務(wù)端,另外一臺虛擬機上運行iperf客戶端。假設(shè)運行服務(wù)端的虛擬機的IP地址是192.168.1.1,運行客戶端的虛擬機的IP地址是192.168.1.2.

          在服務(wù)端執(zhí)行如下命令:

          iperf -s

          在客戶端執(zhí)行如下命令:

          iperf -c 192.168.1.1

          測試完成后,在客戶端會顯示兩臺虛擬機之間的網(wǎng)絡(luò)帶寬。

          下面是一個可供參考的測試結(jié)果。在這個測試中使用了兩臺物理機,每臺物理機各配置一顆Intel Core i3 540 @ 3.07 GHz (雙核四線程),16 GB內(nèi)存(DDR3 @ 1333 MHz),一塊Seagate ST2000DL003-9VT1硬盤(SATA,2TB,5900RPM),運行Ubuntu 10.04 AMD64 Server操作系統(tǒng),使用的文件系統(tǒng)為ext4,使用的Hypervisor為KVM(qemu-kvm-0.12.3)。我們分別測試了宿主機之間、宿主機與虛擬機之間、虛擬機與虛擬機之間的內(nèi)網(wǎng)帶寬。虛擬機的配置為2 顆vCPU(占用兩個物理線程,也就是一個物理核心)和4 GB內(nèi)存。虛擬機的配置為2 顆vCPU(占用兩個物理線程,也就是一個物理核心)和4 GB內(nèi)存,運行Ubuntu 12.04 AMD64 Server操作系統(tǒng)。在這個測試中沒有對操作系統(tǒng)、文件系統(tǒng)、NFS、KVM等等進行任何性能調(diào)優(yōu),但是虛擬機的網(wǎng)卡啟用了virtio.

          從如上測試結(jié)果可以看出,宿主機之間的內(nèi)網(wǎng)帶寬接近內(nèi)網(wǎng)交換

          14982672_201410291058474jZZA

          機的極限。在啟用了virtio的情況下,宿主機與虛擬機之間內(nèi)網(wǎng)帶寬有小幅度的性能損失,基本上不會影響數(shù)據(jù)傳輸能力;虛擬機與虛擬機之間的內(nèi)網(wǎng)帶寬有接近15%的損失,對數(shù)據(jù)傳輸能力影響也不是很大。

          (5)數(shù)據(jù)庫性能測試

          postgresql是一個著名的開源數(shù)據(jù)庫系統(tǒng)。在MySQL被Sun 公司收購并進一步被Oracle公司收購之后,越來越多的公司正在從MySQL遷移到postgresql.pgbench是一個針對postgresql的性能測試工具,其測試結(jié)果接近于TPC-B.pgbench的優(yōu)點之一在于它能夠輕易地進行多線程測試,從而充分利用多核處理器的處理能力。

          在虛擬機上以postgres用戶登錄:

          su -l postgres

          將/usr/lib/postgresql/9.1/bin加入到路徑PATH當中。

          創(chuàng)建測試數(shù)據(jù)庫:

          createdb pgbench

          初始化測試數(shù)據(jù)庫:

          pgbench -i -s 16 pgbench

          執(zhí)行單線程測試:

          pgbench -t 2000 -c 16 -U postgres pgbench

          執(zhí)行多線程測試,在下面的命令中將N替換為虛擬機的vCPU數(shù)量:

          pgbench -t 2000 -c 16 -j N -U postgres pgbench

          下面是一個可供參考的測試結(jié)果。在這個測試中使用了兩臺物理機,每臺物理機各配置一顆Intel Core i3 540 @ 3.07 GHz (雙核四線程),16 GB內(nèi)存(DDR3 @ 1333 MHz),一塊Seagate ST2000DL003-9VT1硬盤(SATA,2TB,5900RPM),運行Ubuntu 10.04 AMD64 Server操作系統(tǒng),使用的文件系統(tǒng)為ext4,使用的Hypervisor為KVM(qemu-kvm-0.12.3),虛擬機運行Ubuntu 12.04 AMD64 Server操作系統(tǒng)。我們分別測試了宿主機、磁盤映像以文件格式(RAW格式,沒有啟用virtio)存儲在本地磁盤上的虛擬機、磁盤映像以文件格式(RAW格式,沒有啟用virtio)存儲在NFS上的虛擬機的數(shù)據(jù)庫性能。虛擬機的配置為2 顆vCPU(占用兩個物理線程,也就是一個物理核心)和4 GB內(nèi)存,運行Ubuntu 12.04 AMD64 Server操作系統(tǒng)。在這個測試中沒有對操作系統(tǒng)、文件系統(tǒng)、NFS、KVM等等進行任何性能調(diào)優(yōu)。

          14982672_201410291058475a5wk

          從如上測試結(jié)果可以看出,在沒有進行任何性能調(diào)優(yōu)的情況下,在數(shù)據(jù)庫性能方面,宿主機 >> 本地磁盤上的虛擬機 >> NFS服務(wù)上的虛擬機。


           

          posted on 2015-06-16 10:50 Eric_jiang 閱讀(183) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           
          主站蜘蛛池模板: 洮南市| 尼玛县| 宾阳县| 电白县| 离岛区| 锦屏县| 依兰县| 祁东县| 富源县| 裕民县| 松阳县| 巨野县| 九寨沟县| 清原| 巴林左旗| 东城区| 历史| 永胜县| 南安市| 富阳市| 江源县| 沁源县| 会宁县| 岚皋县| 韶山市| 扎鲁特旗| 运城市| 鲁山县| 南皮县| 宁阳县| 临漳县| 郧西县| 铜川市| 江源县| 宝丰县| 宜宾市| 丰原市| 山东| 藁城市| 海城市| 巩义市|