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