杜雅紅,張 棟,黃 鑫
(中鐵信弘遠(yuǎn)(北京)軟件科技有限責(zé)任公司,北京100089)
在計算機技術(shù)中,虛擬化技術(shù)可以幫助有效地管理計算機中的各種實體資源[1-2],比如:CPU、內(nèi)存、網(wǎng)絡(luò)和存儲等,它通過將計算機資源抽象出來并實現(xiàn)轉(zhuǎn)換,讓資源可以有效地動態(tài)分配和跨域共享,突破了實體資源不可拆分以及受地域限制的這一技術(shù)難點,讓用戶可以更加靈活、有效地使用這些資源[3-4]。虛擬化資源通常是指擁有計算能力和存儲能力的資源[5]。
很多企業(yè)或者組織在是生產(chǎn)環(huán)境中使用虛擬化之前,都會對虛擬化技術(shù)的性能損耗進(jìn)行測試,以確保虛擬化技術(shù)可以滿足生產(chǎn)需要,但是,由于基礎(chǔ)硬件及應(yīng)用系統(tǒng)的不同,虛擬化的性能測試結(jié)果也不盡相同。鑒于此,本文進(jìn)行了基于鐵路標(biāo)準(zhǔn)硬件設(shè)施的虛擬化性能測試,為應(yīng)用系統(tǒng)選擇物理機或者虛擬化技術(shù)提供參考。
VMwarevSphere是一款商用的服務(wù)器虛擬化平臺,組件包括vCenter Server、ESXi、vSphereWeb Client、vSphereClient 和vSphereHost Client。虛擬機的管理程序ESXi是vSphere所有產(chǎn)品套件的核心,是其他產(chǎn)品所依賴的基礎(chǔ)。vCenter 可以集中管理VmwarevSphere環(huán)境,從而提高管理員對虛擬環(huán)境的控制[6]。
VMware 的系統(tǒng)架構(gòu),如圖1所示。
圖1 VMware系統(tǒng)架構(gòu)
VMwarevSphere 主要組件及功能如下:
(1)VMwarevCenterServer:配置及管理虛擬化IT 環(huán)境的中樞節(jié)點。
(2)VMwarevSphereClient:用戶可以使用此Client 從WindowsPC連接到vCenter server 或者
ESXi。
(3)VMwarevSphereWebAccess:用戶可以通過此Web界面對虛擬機進(jìn)行管理、對遠(yuǎn)程控制臺進(jìn)行訪問。
(4)VMware虛擬機文件系統(tǒng)(VMFS):ESXi虛擬機使用的高性能集群文件系統(tǒng)。
(5)VMwareVirtual SMP:允許單一的虛擬機同時使用多個物理處理器。
(6)VMwarevMotion和StoragevMotion:VMwarevMotion 可以將運行態(tài)的虛擬機從一個主機動態(tài)遷移到另一個主機,且遷移期間虛擬機不需要關(guān)機,業(yè)務(wù)不受影響。
(7)VMwareHighAvailability(HA):可為虛擬機提供高可用性的功能。如果服務(wù)器出現(xiàn)故障,會在其他空閑主機上重新啟動故障主機上的虛擬機。
(8)VMwareDistributedResourceScheduler(DRS):通過收集硬件資源,實現(xiàn)虛擬機的動態(tài)分配,同時平衡計算容量。
(9)VMwarevSphereSDK:用戶可以通過調(diào)用此接口來訪問VMwarevShpere的功能。
(10)VMware容錯:為虛擬機啟動容錯后,會為此虛擬機創(chuàng)建副本虛擬機。主虛擬機上的所有操作都會同步到副本虛擬機上。如果主虛擬機出現(xiàn)故障,則副本虛擬機將成為主活動虛擬機,保證業(yè)務(wù)連續(xù)可用性。
(11)vNetwork分布式交換機(vDS):實現(xiàn)了分布式的虛擬交換機功能,使得虛擬交換機可以跨多個ESXi主機,簡化網(wǎng)絡(luò)運維工作量,并提高網(wǎng)絡(luò)容量。同時,虛擬機在跨主機遷移時,保證網(wǎng)絡(luò)配置不變。
基于內(nèi)核的虛擬機(KVM,Kernel-basedVirtual Machine)是一個Linux 的內(nèi)核模塊,支持X86(32 bit 和64bit)、s390、Powerpc等CPU。KVM 的虛擬化需要硬件支持(如IntelVT 技術(shù)或者AMD 技術(shù)),是基于硬件的完全虛擬化[7-8]。
在KVM中,虛擬機被實現(xiàn)為普通的Linux進(jìn)程,由標(biāo)準(zhǔn)的Linux 調(diào)度程序進(jìn)行調(diào)度。但是,KVM 本身不執(zhí)行任何硬件模擬,需要QEMU 提供硬件I/O虛擬化。
KVM系統(tǒng)架構(gòu),如圖2所示。
KVM支持的功能包括:
(1)支持CPU 和內(nèi)存超分(Overcommit)。
(2)支持半虛擬化I/O(virtio)。
(3)支持熱插拔(CPU、塊設(shè)備、網(wǎng)絡(luò)設(shè)備等)。
(4)支持對稱多處理(SMP,SymmetricMulti-Processing)。
(5)支持實時遷移(LiveMigration)。
(6)支持PCI 設(shè)備直接分配和單根I/O 虛擬化(SR-IOV)。
圖2 KVM系統(tǒng)架構(gòu)
(7)支持內(nèi)核同頁合并(KSM)。
(8)支持非一致存儲訪問結(jié)構(gòu)(NUMA,Non-Uniform Memory Access)。
測試環(huán)境說明,如表1所示。
表1 測試環(huán)境說明
使用sysbench 測試框架,運行尋找質(zhì)數(shù)的程序,指定上限值,尋找該值范圍內(nèi)的質(zhì)數(shù)。上限分別取10000和100000000。上限是10000時,對比單位時間內(nèi)(1s)程序的執(zhí)行次數(shù)。上限是100000000 時,對比程序的運行時間。測試結(jié)果,如圖3、圖4 所示。
通過測試結(jié)果可以看出,不論是單位時間內(nèi)程序的運行次數(shù)還是限定上限時程序的運行時間,物理機和兩個虛擬機的表現(xiàn)都不相上下。也就是說兩種虛擬化對于單進(jìn)程的程序在CPU性能方面與物理機幾乎沒有差別。
RAMspeed 是一個用來測試計算機系統(tǒng)緩存和內(nèi)存性能的開源的命令行工具。使用RAMspeed 分別對3類主機進(jìn)行不同塊大小的整型和浮點型內(nèi)存讀
圖3 上限是10000的測試結(jié)果
圖4 上限是100000000的測試結(jié)果
寫測試,結(jié)果如圖5~圖8。
圖5 整型寫內(nèi)存測試
圖6 整型讀內(nèi)存測試
圖7 浮點型寫內(nèi)存測試
圖8 浮點型讀內(nèi)存測試
由圖5~圖8可知,在數(shù)據(jù)塊小于64 KB時,VMware對于內(nèi)存的讀寫速度要明顯高于KVM 和物理機;當(dāng)數(shù)據(jù)塊大于64KB時,兩種虛擬化和物理機的表現(xiàn)相差不大。所以對那些需要頻繁讀寫內(nèi)存里的小塊數(shù)據(jù)的應(yīng)用,VMware 可以提供更高的性能。
使用fio進(jìn)行測試,fio是一個非常靈活的I/O測試工具,用來對硬件進(jìn)行壓力測試和驗證,它可以通過多線程或進(jìn)程模擬各種I/O操作,支持13種不同的I/O引擎。本次測試分別對硬盤驅(qū)動器(HDD)和固態(tài)驅(qū)動器(SSD)做了壓力測試,測試結(jié)果如圖9~圖12所示。
通過以上測試結(jié)果可以看出,兩種虛擬化在HDD盤的隨機讀時會有10%的性能損耗,其他情況下,可以提供和物理機同樣的性能。
圖9 HDD盤4KB隨機讀寫測試結(jié)果(隊列深度32)
圖10 HDD盤512KB順序讀寫測試結(jié)果(隊列深度32)
圖11 SSD盤4KB隨機讀寫測試結(jié)果(隊列深度32)
圖12 SSD盤512KB順序讀寫測試結(jié)果(隊列深度32)
使用iperf 進(jìn)行測試,iperf 是一個網(wǎng)絡(luò)性能測試工具,用來測試最大傳輸控制協(xié)議(TCP)和用戶數(shù)據(jù)報協(xié)議(UDP)帶寬性能。iperf 支持傳入多種參數(shù),還支持UDP 特性,可以根據(jù)需要調(diào)整。同時,iperf 還可以測試帶寬,延遲抖動和數(shù)據(jù)包丟失。3種類型主機分別作為客戶端與服務(wù)器端,進(jìn)行TCP 和UDP 帶寬測試。其中,UDP 測試指定單線程帶寬為1Gbps,用10個線程同時發(fā)送數(shù)據(jù)占滿帶寬[9-10]。測試結(jié)果如圖13~圖14所示。
圖13 TCP測試結(jié)果
圖14 UDP測試結(jié)果
通過以上測試結(jié)果可以看出,VMware虛擬機作為TCP 客戶端時,能提供的帶寬會比物理機和KVM 虛擬機少10%左右;而作為UDP 服務(wù)器端時,KVM虛擬機提供的總帶寬都要比物理機低60%,VMware虛擬機比物理機低10%左右;作為UDP 客戶端時,KVM虛擬機提供的總帶寬要比物理機低20%左右。所以如果應(yīng)用系統(tǒng)以UDP 業(yè)務(wù)為主,選擇物理機或者VMware 虛擬機可以獲得比KVM 虛擬機更高的帶寬。
本文分別就CPU、內(nèi)存、磁盤I/O,以及網(wǎng)絡(luò)帶寬對物理機、KVM虛擬機和VMware虛擬機進(jìn)行了對比測試。通過測試發(fā)現(xiàn),兩種虛擬化和物理機在CPU 性能方面并沒有很大差異;在內(nèi)存方面,頻繁讀寫內(nèi)存里的小塊數(shù)據(jù)時,VMware 的表現(xiàn)更加突出;在磁盤I/O方面,兩種虛擬化在HDD的隨機讀寫上表現(xiàn)稍差;在網(wǎng)絡(luò)帶寬方面,如果應(yīng)用系統(tǒng)以UDP業(yè)務(wù)為主,KVM虛擬機提供的帶寬相對較小。
本文每項測試都是針對單項指標(biāo)的測試,應(yīng)用系統(tǒng)的運行經(jīng)常需要同時使用這幾項指標(biāo),所以應(yīng)用系統(tǒng)在選擇運行載體時需要綜合考慮這幾項指標(biāo)的影響,根據(jù)應(yīng)用特點選擇合適的運行載體。當(dāng)然,為了保證應(yīng)用系統(tǒng)的穩(wěn)定性,建議在不影響性能的情況下,使用多種運行載體。