孫磊,李帥,郭松輝
(信息工程大學(xué),河南 鄭州 450001)
近年來(lái),云計(jì)算憑借其強(qiáng)大的計(jì)算和存儲(chǔ)能力逐漸在產(chǎn)業(yè)界得到廣泛應(yīng)用[1]。隨著云計(jì)算的快速發(fā)展,其應(yīng)用也逐漸在軍事、電子商務(wù)和電子政務(wù)等領(lǐng)域得到推廣,而同時(shí)云計(jì)算也面臨為敏感信息提供機(jī)密性、完整性和真實(shí)性等保護(hù)的迫切需求。通過(guò)部署密碼服務(wù)器,利用虛擬化技術(shù)為用戶提供密碼運(yùn)算服務(wù),是目前廣泛使用的密碼服務(wù)保障模式[2]。
密碼服務(wù)器通過(guò)外接密碼設(shè)備為用戶提供密碼運(yùn)算服務(wù),密碼設(shè)備處理密碼任務(wù)不僅要求運(yùn)算的正確性,還要求任務(wù)處理的實(shí)時(shí)性[3]。在虛擬化環(huán)境下,由虛擬密碼機(jī)(VCM,virtual cipher machine)(為用戶提供密碼服務(wù)的虛擬機(jī))[4]發(fā)出的密碼運(yùn)算請(qǐng)求以中斷的方式通知密碼設(shè)備,然而在整個(gè)中斷傳輸?shù)倪^(guò)程中存在較大延遲,這是由于虛擬機(jī)監(jiān)控器(VMM,virtual machine monitor)會(huì)截獲相應(yīng)的中斷,觸發(fā)VM-exit造成的。單根I/O虛擬化技術(shù)(SR-IOV,single-root I/O virtualization)[5]是一種硬件輔助虛擬化技術(shù),該技術(shù)借鑒Passthrough I/O傳輸方式[6],在數(shù)據(jù)傳輸過(guò)程中繞過(guò)VMM,并通過(guò)輸入/輸出內(nèi)存管理單元(IOMMU,input/output memory management unit)減少了存儲(chǔ)保護(hù)和地址轉(zhuǎn)換的開銷,大大提高了傳輸效率[7]。然而,虛擬中斷請(qǐng)求仍然會(huì)被VMM 截獲,其傳輸過(guò)程造成多次上下文切換,使在中斷密集時(shí),密碼設(shè)備不能及時(shí)處理密碼運(yùn)算任務(wù),降低了密碼運(yùn)算的效率。而且,當(dāng)云中用戶對(duì)加密服務(wù)的請(qǐng)求在同一時(shí)間過(guò)多時(shí)會(huì)產(chǎn)生大量不可預(yù)測(cè)的中斷請(qǐng)求,導(dǎo)致密碼設(shè)備外部中斷請(qǐng)求過(guò)多,嚴(yán)重影響了密碼設(shè)備處理密碼運(yùn)算的能力,增大了系統(tǒng)開銷[8]。
針對(duì)SR-IOV設(shè)備中斷的問題,國(guó)內(nèi)外學(xué)者進(jìn)行了大量研究。Dong等[9]在 2010年指出了SR-IOV中斷引起的性能降低問題,在對(duì)SR-IOV中斷優(yōu)化的過(guò)程中,上海交通大學(xué)管海兵團(tuán)隊(duì)先后提出了中斷聚集方法[10]、基于事件的輪詢方法[11]和一種自適應(yīng)中斷頻率控制方法[12],這3種方法分別從優(yōu)化中斷頻率和消除VM-exit入手來(lái)提高系統(tǒng)性能。然而,中斷聚集方法和自適應(yīng)中斷頻率控制方法需要考慮多方面因素,因?yàn)橹袛嗑奂馕吨看沃袛鄮?lái)的數(shù)據(jù)量較大,可能會(huì)導(dǎo)致數(shù)據(jù)丟失,且中斷聚集引起的中斷頻率的減少可能會(huì)帶來(lái)更高的延遲,這在高速網(wǎng)絡(luò)傳輸過(guò)程中是非常嚴(yán)重的問題。而采用基于事件的輪詢方法是以虛擬中斷注入作為輪詢起點(diǎn),這是一條更長(zhǎng)的代碼路徑,會(huì)造成額外開銷。國(guó)外學(xué)者Gordon等[13]提出了一種更少中斷退出的機(jī)制(ELI,exit-less interrupt),該機(jī)制采用軟件模擬的方式在客戶虛擬機(jī)內(nèi)建立影子中斷描述符表(IDT,interrupt description table),可實(shí)現(xiàn)客戶機(jī)直接處理中斷,但ELI只允許影子IDT直接處理已經(jīng)分配的設(shè)備中斷,其他中斷仍需要主機(jī)的介入,云環(huán)境下中斷請(qǐng)求復(fù)雜多樣,該方法顯然具有一定的局限性。Tu等[14]提出了一種直接中斷傳輸?shù)姆椒ǎ―ID,direct interrupt delivery),該方法通過(guò)清除虛擬機(jī)控制結(jié)構(gòu)中的外部中斷控制位來(lái)禁止VM-exit,可能會(huì)導(dǎo)致中斷的錯(cuò)誤處理。從虛擬密碼設(shè)備的角度來(lái)說(shuō),這種做法會(huì)導(dǎo)致密碼運(yùn)算錯(cuò)誤,是不可取的。
研究影響 SR-IOV密碼設(shè)備的性能問題必須要考慮密碼任務(wù)的特點(diǎn),本文以單臺(tái)密碼服務(wù)器為例,針對(duì)虛擬化環(huán)境下 SR-IOV密碼設(shè)備頻繁產(chǎn)生中斷影響運(yùn)算性能的問題,根據(jù)密碼任務(wù)先到先服務(wù)的規(guī)則,利用排隊(duì)論的知識(shí)建立了M/M/1模型,分析了影響SR-IOV密碼設(shè)備密碼運(yùn)算性能的關(guān)鍵因素,并通過(guò)仿真和實(shí)驗(yàn)對(duì)比驗(yàn)證了模型的有效性,最后對(duì)系統(tǒng)性能進(jìn)行了測(cè)試。
云計(jì)算環(huán)境的安全體系主要依托密碼技術(shù)來(lái)建立,實(shí)現(xiàn)密碼運(yùn)算的載體是各種密碼設(shè)備,傳統(tǒng)的密碼設(shè)備擴(kuò)展性差,無(wú)法滿足云環(huán)境下海量數(shù)據(jù)的密碼服務(wù)需求,虛擬化技術(shù)的出現(xiàn)解決了資源利用率低的問題,通過(guò)在云資源中心部署密碼服務(wù)器集群,采用虛擬化技術(shù)為云用戶提供密碼運(yùn)算服務(wù),充分提高了密碼設(shè)備資源的利用率[15]。
為了更高效地為云用戶提供密碼運(yùn)算服務(wù),考慮到密碼設(shè)備本身是一種物理硬件設(shè)備,通常采用一種硬件輔助虛擬化技術(shù)——SR-IOV技術(shù)實(shí)現(xiàn)密碼設(shè)備的虛擬化。其中,SR-IOV是PCI-SIG組織發(fā)布的PCIe規(guī)范的擴(kuò)展,它借鑒了Passthrough I/O技術(shù),在數(shù)據(jù)傳輸過(guò)程中繞過(guò)了VMM,使用IOMMU在虛擬內(nèi)存中直接尋址,減少了存儲(chǔ)保護(hù)和地址轉(zhuǎn)換的開銷?;?PCIe規(guī)范,具有SR-IOV功能的設(shè)備可創(chuàng)建多個(gè)虛擬功能(VF,virtual function),并且每個(gè)SR-IOV設(shè)備具有一個(gè)或多個(gè)物理功能(PF,physical function),每個(gè)PF都是標(biāo)準(zhǔn)的PCIe 功能,且關(guān)聯(lián)多個(gè)VF,這些VF均可共享密碼設(shè)備資源[12]。SR-IOV密碼設(shè)備基本架構(gòu)如圖1所示。每個(gè)虛擬密碼機(jī)對(duì)應(yīng)一個(gè)VF,VCM和VF之間通過(guò)VFIO驅(qū)動(dòng)進(jìn)行通信,并且不受VMM干預(yù)。
圖1 SR-IOV密碼設(shè)備基本架構(gòu)
密碼設(shè)備集成了專用密碼運(yùn)算單元和 CPU模塊,密碼運(yùn)算單元中集成了對(duì)稱加密、不對(duì)稱加密、身份驗(yàn)證、數(shù)字簽名、公開密鑰加密和DH等加密技術(shù),用戶可以通過(guò)相應(yīng)的接口調(diào)用相應(yīng)的密碼算法來(lái)實(shí)現(xiàn)加密需求。密碼設(shè)備在執(zhí)行密碼運(yùn)算時(shí),從用戶發(fā)出密碼運(yùn)算請(qǐng)求開始到密碼設(shè)備執(zhí)行密碼運(yùn)算結(jié)束,整個(gè)運(yùn)算過(guò)程所用的時(shí)間長(zhǎng)短直接反映了系統(tǒng)處理密碼運(yùn)算的效率,即高效的密碼運(yùn)算要求較短的時(shí)間。其中,整個(gè)密碼運(yùn)算過(guò)程所消耗的時(shí)間主要包括 CPU執(zhí)行密碼運(yùn)算的時(shí)間和請(qǐng)求響應(yīng)時(shí)間,而CPU執(zhí)行密碼運(yùn)算的時(shí)間由密碼算法復(fù)雜度和CPU頻率決定,取值相對(duì)固定。因此,提高密碼運(yùn)算效率需從減小請(qǐng)求響應(yīng)時(shí)間入手。
密碼設(shè)備的請(qǐng)求響應(yīng)是一種I/O傳輸,I/O傳輸?shù)姆绞接胁樵?、輪詢和中?種方式。其中,查詢方式是一種I/O串行方式,該方式存在很大的空閑期,會(huì)造成嚴(yán)重的CPU資源浪費(fèi)。輪詢方式改進(jìn)為定期查詢完成信號(hào),提高了 CPU利用率,但系統(tǒng)輪詢頻率設(shè)置的高低又帶來(lái)其他不可避免的問題。例如,當(dāng)系統(tǒng)設(shè)置較大的輪詢頻率時(shí),輪詢例程被調(diào)用時(shí)若系統(tǒng)沒有可用響應(yīng),會(huì)浪費(fèi)CPU周期,增加卸載成本;如果系統(tǒng)設(shè)置的輪詢頻率過(guò)低,就會(huì)增加延遲。中斷進(jìn)一步提高了CPU的使用效率,當(dāng)系統(tǒng)需要處理設(shè)備接收到的新數(shù)據(jù)時(shí),會(huì)中斷當(dāng)前任務(wù)轉(zhuǎn)去處理新接收的數(shù)據(jù),該做法提高了請(qǐng)求響應(yīng)時(shí)間,大大提升了系統(tǒng)的利用效率。而且,設(shè)備發(fā)出中斷處理請(qǐng)求后,中斷方式會(huì)立刻通知操作系統(tǒng),而輪詢方式需要下一次輪詢到該設(shè)備時(shí),才會(huì)得知這一請(qǐng)求。所以,相比查詢方式和輪詢方式,中斷方式有較小的延遲??紤]到密碼任務(wù)的實(shí)時(shí)性要求,即在一定時(shí)間內(nèi)系統(tǒng)必須對(duì)高優(yōu)先級(jí)的任務(wù)做出及時(shí)響應(yīng),而且大多數(shù)實(shí)時(shí)任務(wù)是靠中斷驅(qū)動(dòng)的[3],密碼設(shè)備采用中斷觸發(fā)方式響應(yīng)用戶請(qǐng)求,可滿足密碼任務(wù)實(shí)時(shí)性的要求。
由 2.1節(jié)的分析可知,用戶發(fā)出的密碼運(yùn)算請(qǐng)求以中斷的方式通知密碼設(shè)備上相應(yīng)的寄存器,交由密碼運(yùn)算單元處理密碼任務(wù)。在虛擬化環(huán)境下,由虛擬密碼機(jī)發(fā)出的密碼運(yùn)算請(qǐng)求同樣以中斷的方式通知密碼設(shè)備,然而在整個(gè)中斷傳輸?shù)倪^(guò)程中有相應(yīng)的延遲,這是由于VMM會(huì)截獲相應(yīng)的中斷,觸發(fā)VM-exit事件造成的。VMM截獲中斷信號(hào)之后將中斷注入主機(jī)內(nèi)核,主機(jī)內(nèi)核調(diào)用相關(guān)的函數(shù)接口將密碼請(qǐng)求任務(wù)交給密碼設(shè)備,密碼設(shè)備執(zhí)行完密碼任務(wù)后生成一個(gè)完成信號(hào),該信號(hào)返回給虛擬機(jī)的過(guò)程中再次被VMM截獲,觸發(fā)VM-exit事件,引發(fā)EOI寫操作。整個(gè)中斷傳輸?shù)倪^(guò)程造成多次上下文切換,當(dāng)中斷頻率過(guò)大時(shí),頻繁的上下文切換使 cache污染的概率大大提高[9],嚴(yán)重影響密碼設(shè)備運(yùn)算性能。物理環(huán)境下和虛擬環(huán)境下的中斷處理過(guò)程如圖2和圖3所示。
圖2 物理環(huán)境下的中斷處理過(guò)程
由圖2和圖3對(duì)比分析知,物理環(huán)境下的中斷處理過(guò)程造成了兩次上下文切換,且不存在虛擬機(jī)監(jiān)控器的參與;而虛擬環(huán)境下的中斷處理造成了4次上下文切換,且每次VM-exit事件均被VMM 截獲,開銷比物理環(huán)境下大得多。如果將虛擬環(huán)境下中斷的處理過(guò)程分成虛擬機(jī)處理中斷和VMM介入兩部分,在運(yùn)行Netperf工作流下,實(shí)驗(yàn)測(cè)得兩部分消耗的CPU周期中,由VMM介入所消耗的 CPU周期高達(dá) 86%[16]。而且,密碼算法的操作序列比較長(zhǎng),當(dāng)采用密碼算法對(duì)一段數(shù)據(jù)進(jìn)行加密時(shí),一般具有大量重復(fù)的操作。由于VMM截獲中斷的開銷較大,當(dāng)虛擬化環(huán)境下的中斷頻率過(guò)多時(shí),會(huì)造成更大的開銷,當(dāng)大量的中斷引發(fā)中斷嵌套時(shí),甚至?xí)咏饷苁?,?yán)重影響了密碼設(shè)備處理密碼運(yùn)算的效率。Intel Corporation DH895XCC Series QAT密碼設(shè)備考慮到虛擬機(jī)中斷帶來(lái)的巨大開銷,采用基于事件的輪詢模式——“Epoll模式”處理響應(yīng),但該模式只能在用戶空間中使用,內(nèi)核空間部分依然利用中斷模式,如果內(nèi)核中斷有延遲,則會(huì)在向用戶空間交付事件時(shí)出現(xiàn)相應(yīng)的延遲[11]。因此,在密碼設(shè)備處理密碼運(yùn)算任務(wù)的過(guò)程中,中斷的發(fā)生是必然的,處理中斷所引起的系統(tǒng)開銷也是不可避免的,而系統(tǒng)開銷的大小取決于中斷帶來(lái)的延時(shí)。在上述的分析中,造成中斷延時(shí)的原因主要是中斷處理過(guò)程中 VMM的介入和高中斷頻率。
圖3 虛擬環(huán)境下的I/O中斷處理過(guò)程
在單個(gè)服務(wù)器上,SR-IOV密碼設(shè)備中斷傳輸過(guò)程如圖4所示,主要包括SR-IOV密碼設(shè)備、虛擬密碼機(jī)、VMM 和中斷請(qǐng)求隊(duì)列。其中,密碼設(shè)備采用SR-IOV技術(shù)將單個(gè)物理設(shè)備呈現(xiàn)為一個(gè)PF和若干VF。在實(shí)際使用時(shí),把每個(gè)VF分配給每一個(gè)虛擬密碼機(jī),虛擬密碼機(jī)通過(guò) VF獲取密碼設(shè)備資源,完成密碼運(yùn)算操作。由于VF之間相互隔離,因此每臺(tái)虛擬密碼機(jī)執(zhí)行密碼運(yùn)算時(shí)互不影響。但由于虛擬密碼機(jī)共享硬件資源,當(dāng)同一時(shí)間內(nèi),虛擬密碼機(jī)發(fā)出大量中斷請(qǐng)求時(shí),會(huì)造成主機(jī)不能及時(shí)處理中斷請(qǐng)求,從而形成中斷請(qǐng)求隊(duì)列。在中斷請(qǐng)求隊(duì)列中,密碼運(yùn)算類中斷請(qǐng)求具有同等優(yōu)先級(jí),因此隊(duì)列中的中斷請(qǐng)求按照先到先服務(wù)的規(guī)則進(jìn)行排序。密碼設(shè)備處理完密碼運(yùn)算后生成一個(gè) EOI信號(hào)交由 VMM 處理,處理完成后注入VCM,最終VCM恢復(fù)正常運(yùn)行。
在SR-IOV密碼設(shè)備中斷傳輸過(guò)程中,兩個(gè)相鄰中斷請(qǐng)求的時(shí)間間隔具有無(wú)記憶性,且每個(gè)中斷請(qǐng)求之間相互獨(dú)立,實(shí)際上,系統(tǒng)中斷請(qǐng)求的到達(dá)過(guò)程具有馬氏性,且兩個(gè)相鄰中斷請(qǐng)求時(shí)間間隔服從指數(shù)分布。中斷請(qǐng)求進(jìn)入排隊(duì)系統(tǒng)后,系統(tǒng)處理每個(gè)中斷請(qǐng)求的時(shí)間是獨(dú)立同分布的指數(shù)隨機(jī)變量,且服從指數(shù)分布。上述中斷請(qǐng)求時(shí)間間隔和系統(tǒng)處理每個(gè)中斷請(qǐng)求的時(shí)間所滿足的概率分布符合排隊(duì)論的基本條件[17],且隊(duì)列中的中斷請(qǐng)求按照先到先服務(wù)的規(guī)則進(jìn)行排序,則針對(duì)單個(gè)服務(wù)器,密碼服務(wù)系統(tǒng)中每個(gè)虛擬密碼機(jī)的中斷請(qǐng)求處理過(guò)程構(gòu)成了M/M/1排隊(duì)模型。
假設(shè)密碼服務(wù)系統(tǒng)中中斷請(qǐng)求的平均到達(dá)率為λ,系統(tǒng)處理每個(gè)中斷請(qǐng)求的平均服務(wù)率為μ。考慮到密碼服務(wù)系統(tǒng)中中斷請(qǐng)求的隨機(jī)性,取中斷請(qǐng)求時(shí)間間隔的平均值為Tb,則系統(tǒng)任務(wù)的平均到達(dá)率即系統(tǒng)中斷請(qǐng)求頻率。假設(shè)系統(tǒng)中斷請(qǐng)求頻率為I,則λ=I。取系統(tǒng)處理每個(gè)中斷請(qǐng)求的平均處理時(shí)間為T,則中斷的平均服務(wù)速率為。假設(shè)N(t)表示t時(shí)刻系統(tǒng)中斷請(qǐng)求隊(duì)列長(zhǎng)度,其中包括正在處理的中斷以及隊(duì)列中的中斷。對(duì)M/M/1排隊(duì)模型來(lái)說(shuō),是一個(gè)時(shí)間參數(shù)連續(xù)的馬氏鏈,實(shí)際上是一個(gè)生滅過(guò)程,其Q矩陣為
圖4 SR-IOV密碼設(shè)備中斷傳輸過(guò)程
根據(jù)Q矩陣,可畫出的狀態(tài)轉(zhuǎn)移圖,如圖5所示。
圖5 系統(tǒng)中斷請(qǐng)求隊(duì)長(zhǎng)狀態(tài)轉(zhuǎn)移圖
則系統(tǒng)的穩(wěn)態(tài)隊(duì)長(zhǎng)的分布為
當(dāng)k=n時(shí)
其中,ρ為系統(tǒng)服務(wù)強(qiáng)度,且
當(dāng)k取0時(shí),得出系統(tǒng)處于空閑狀態(tài)的概率為
則系統(tǒng)處于繁忙狀態(tài)的概率為
由little公式[18],系統(tǒng)的平均任務(wù)數(shù)為
在密碼服務(wù)系統(tǒng)中,系統(tǒng)的平均中斷響應(yīng)時(shí)間反映了密碼設(shè)備處理中斷請(qǐng)求的效率,它等于從虛擬密碼機(jī)發(fā)出中斷請(qǐng)求開始到SR-IOV密碼設(shè)備接收到中斷請(qǐng)求并進(jìn)入中斷處理程序的時(shí)間。在 SR-IOV密碼設(shè)備中斷傳輸過(guò)程中,這個(gè)時(shí)間可分為兩部分:中斷請(qǐng)求的排隊(duì)等待時(shí)間和中斷請(qǐng)求在系統(tǒng)中的傳輸時(shí)間。假設(shè)Tq為中斷請(qǐng)求的排隊(duì)等待時(shí)間,tT為中斷請(qǐng)求在系統(tǒng)中的傳輸時(shí)間,則系統(tǒng)的平均中斷響應(yīng)時(shí)間可表示為
在上述性能參考指標(biāo)中,系統(tǒng)服務(wù)強(qiáng)度ρ一般情況下小于 1,即系統(tǒng)處理每個(gè)中斷請(qǐng)求的平均處理時(shí)間T小于中斷請(qǐng)求時(shí)間間隔Tb;若ρ大于 1,顯然系統(tǒng)不能及時(shí)處理中斷請(qǐng)求,且隨著時(shí)間的推進(jìn),系統(tǒng)中斷請(qǐng)求的隊(duì)長(zhǎng)將趨于無(wú)限;若ρ等于 1,則系統(tǒng)一直處于繁忙狀態(tài),即系統(tǒng)每接收到一個(gè)中斷請(qǐng)求信號(hào)就馬上處理,處理完畢后又立即處理下一個(gè)中斷請(qǐng)求信號(hào),但中斷響應(yīng)都有相應(yīng)的延時(shí),隨著時(shí)間的推進(jìn),系統(tǒng)中斷請(qǐng)求的隊(duì)長(zhǎng)也將趨于無(wú)限。顯然,在SR-IOV密碼設(shè)備中斷傳輸過(guò)程中,ρ大于等于1的情況是不希望發(fā)生的,那么T一定不能超過(guò)Tb,且即控制系統(tǒng)中斷請(qǐng)求頻率I不能過(guò)大。
在SR-IOV密碼設(shè)備中斷傳輸過(guò)程中,系統(tǒng)的中斷響應(yīng)時(shí)間直接體現(xiàn)了密碼設(shè)備處理密碼運(yùn)算的效率。在上述性能參考指標(biāo)中,系統(tǒng)的平均中斷響應(yīng)時(shí)間Tr由中斷請(qǐng)求排隊(duì)等待時(shí)間Tq和中斷請(qǐng)求傳輸時(shí)間tT組成,可通過(guò)減少Tq和tT降低系統(tǒng)的中斷響應(yīng)時(shí)間。減少Tq的本質(zhì)是增大Tb,即降低I。由第2節(jié)分析可知,減少中斷請(qǐng)求傳輸時(shí)間tT要從 VMM 入手,即盡可能避免VMM截獲中斷。因此,要提高 SR-IOV密碼設(shè)備密碼運(yùn)算性能,需從降低系統(tǒng)中斷請(qǐng)求頻率和減少VMM介入入手。
本文采用軟件仿真和實(shí)驗(yàn)測(cè)試兩種方式驗(yàn)證模型的有效性,并對(duì)性能特征進(jìn)行分析。軟件仿真使用Matlab_2016a建立模型,實(shí)驗(yàn)環(huán)境如下。主機(jī)和虛擬密碼機(jī)操作系統(tǒng)均為 CentOS-7-x86_64-1511,內(nèi)核版本為L(zhǎng)inux 3.10.0-327.e17.x86_64,處理器為 Intel(R) Xeon(R) CPU E5-2620 v3@2.40 GHz,CPU核心數(shù)為12核,內(nèi)存大小為128 GB,支持SR-IOV技術(shù),每臺(tái)虛擬密碼機(jī)均分配一個(gè)vCPU和2 048 MB內(nèi)存,密碼設(shè)備為Intel Corporation DH895XCC Series QAT。
SR-IOV密碼設(shè)備的VF自身支持中斷頻率上限的設(shè)置,實(shí)驗(yàn)中本文分別設(shè)置VF中斷頻率上限為 1 000、2 000、3 000、4 000、5 000、6 000、7 000、8 000、9 000和10 000,測(cè)試了單個(gè)虛擬密碼機(jī)在相應(yīng)設(shè)置下的中斷響應(yīng)時(shí)間,測(cè)試結(jié)果與仿真結(jié)果進(jìn)行對(duì)比,結(jié)果如圖6(a)所示。為了測(cè)試整個(gè)系統(tǒng)的運(yùn)行隊(duì)列長(zhǎng)度,本文分別運(yùn)行1臺(tái)、2臺(tái)、4臺(tái)、8臺(tái)和16臺(tái)虛擬密碼機(jī),測(cè)試系統(tǒng)運(yùn)行隊(duì)列長(zhǎng)度,并對(duì)仿真結(jié)果進(jìn)行對(duì)比,結(jié)果如圖6(b)所示。圖6表明,實(shí)驗(yàn)結(jié)果與仿真結(jié)果曲線走勢(shì)相同,模型有較高的有效性。
本節(jié)選取對(duì)稱加密算法AES128作為實(shí)驗(yàn)對(duì)象,以密碼算法的加密速度作為虛擬密碼機(jī)性能參考指標(biāo),基于crytodev加密框架[18]發(fā)送和接收相關(guān)指令,實(shí)現(xiàn)虛擬密碼機(jī)與密碼設(shè)備的通信,獲取相應(yīng)的密碼服務(wù)。該加密框架可以測(cè)試虛擬密碼機(jī)密碼運(yùn)算速度,其中包含AES128等加密算法。系統(tǒng)性能的各項(xiàng)指標(biāo)由Linux vmstat 命令獲得,該命令可獲得給定時(shí)間間隔內(nèi)系統(tǒng)的狀態(tài)值,包括系統(tǒng)隊(duì)列長(zhǎng)度、系統(tǒng)中斷頻率、系統(tǒng)上下文切換次數(shù)、系統(tǒng) CPU時(shí)間和用戶 CPU時(shí)間等。其中,系統(tǒng)隊(duì)列長(zhǎng)度表示當(dāng)前系統(tǒng)正在運(yùn)行的進(jìn)程數(shù)目,系統(tǒng)中斷頻率表示每秒CPU的中斷次數(shù),系統(tǒng)上下文切換次數(shù)主要反映調(diào)用系統(tǒng)函數(shù)的繁忙程度,系統(tǒng)CPU時(shí)間和用戶CPU時(shí)間主要反映系統(tǒng)I/O操作的繁忙程度。下面分別對(duì)單臺(tái)虛擬密碼機(jī)和多臺(tái)虛擬密碼機(jī)進(jìn)行性能測(cè)試。
圖6 模型有效性驗(yàn)證
首先對(duì)一臺(tái)虛擬密碼機(jī)進(jìn)行測(cè)試,在分別運(yùn)行1個(gè)任務(wù)、2個(gè)任務(wù)、4個(gè)任務(wù)和8個(gè)任務(wù)的狀況下,測(cè)試虛擬密碼機(jī)在輸入加密數(shù)據(jù)分組大小從64 byte變化到65 536 byte11次的加密速度,反復(fù)測(cè)試10次求取平均值,測(cè)試結(jié)果如圖7(a)所示。圖 7(a)的測(cè)試顯示了虛擬密碼機(jī)處理單個(gè)密碼任務(wù)時(shí),AES128算法對(duì)接收到的不同加密字節(jié)塊大小加密速度的變化趨勢(shì)。從實(shí)驗(yàn)結(jié)果中可以看出,加密字節(jié)在16 384之前,虛擬密碼機(jī)加密速度一直在增大,當(dāng)加密字節(jié)為16 384時(shí),虛擬密碼機(jī)加密速度達(dá)到最大,當(dāng)加密字節(jié)繼續(xù)增大時(shí),虛擬密碼機(jī)加密速度基本無(wú)變化甚至出現(xiàn)降低的趨勢(shì)。使用vmstat相關(guān)命令獲取系統(tǒng)實(shí)時(shí)中斷頻率、上下文切換次數(shù)和系統(tǒng)CPU時(shí)間,記錄11次采樣結(jié)果。圖7(b)顯示了虛擬密碼機(jī)分別運(yùn)行1個(gè)任務(wù)、2個(gè)任務(wù)、4個(gè)任務(wù)和8個(gè)任務(wù)時(shí)的每秒中斷頻率,其平均值分別為1 065、1 126、1 173和1 323,說(shuō)明隨著任務(wù)量增加,系統(tǒng)中斷頻率不斷增大。圖 7(c)顯示了虛擬密碼機(jī)分別運(yùn)行1個(gè)任務(wù)、2個(gè)任務(wù)、4個(gè)任務(wù)和8個(gè)任務(wù)時(shí)系統(tǒng)的上下文切換次數(shù),且系統(tǒng)的平均上下文切換次數(shù)為299、345、391和451,說(shuō)明系統(tǒng)任務(wù)量越大,系統(tǒng)上下文切換次數(shù)越多。圖7(d)顯示了虛擬密碼機(jī)分別運(yùn)行1個(gè)任務(wù)、2個(gè)任務(wù)、4個(gè)任務(wù)和8個(gè)任務(wù)時(shí)的系統(tǒng)CPU時(shí)間,該值基本保持在 85%以上。其中運(yùn)用 vmstat命令測(cè)試得出的系統(tǒng) CPU時(shí)間越長(zhǎng),表明系統(tǒng)調(diào)用時(shí)間越長(zhǎng),如頻繁的 I/O操作會(huì)導(dǎo)致較高的系統(tǒng) CPU時(shí)間,這也說(shuō)明了AES128加密操作屬于I/O密集型的操作。綜合圖7,對(duì)于單臺(tái)虛擬密碼機(jī)來(lái)說(shuō),密碼任務(wù)越多,運(yùn)算性能越低,這不僅是由于每個(gè)密碼任務(wù)平分物理硬件資源,任務(wù)增加帶來(lái)的中斷頻率增大以及上下文切換次數(shù)增大也是導(dǎo)致運(yùn)算性能降低的主要因素。因?yàn)閷?duì)于同一類密碼任務(wù)來(lái)說(shuō),多個(gè)任務(wù)的加密速度之和總是小于一個(gè)任務(wù)的加密速度,且任務(wù)越多差值越大。
圖7 單臺(tái)虛擬密碼機(jī)性能測(cè)試
圖8 多臺(tái)虛擬密碼機(jī)性能測(cè)試
為了測(cè)試多臺(tái)相同配置的虛擬密碼機(jī)同時(shí)工作時(shí)帶來(lái)的性能開銷,分別對(duì)1臺(tái)、2臺(tái)、4臺(tái)、8臺(tái)和16臺(tái)虛擬密碼機(jī)同時(shí)循環(huán)執(zhí)行AES128加密運(yùn)算,用vmstat命令每2 s進(jìn)行一次采樣,記錄15次采樣結(jié)果,篩選出系統(tǒng)運(yùn)行隊(duì)列長(zhǎng)度、系統(tǒng)每秒中斷頻率、系統(tǒng)每秒上下文切換次數(shù)和用戶CPU時(shí)間,具體結(jié)果如圖 8所示。由圖 8(a)和圖 8(b)可明顯看出,當(dāng)系統(tǒng)中虛擬密碼機(jī)數(shù)量增加時(shí),系統(tǒng)運(yùn)行隊(duì)列長(zhǎng)度和系統(tǒng)中斷頻率明顯增大,且當(dāng)系統(tǒng)運(yùn)行16臺(tái)虛擬密碼機(jī)時(shí),系統(tǒng)運(yùn)行隊(duì)列長(zhǎng)度與系統(tǒng)中斷頻率的比值明顯增大,該比值即為中斷請(qǐng)求的排隊(duì)等待時(shí)間,該結(jié)果驗(yàn)證了中斷頻率過(guò)大使中斷排隊(duì)時(shí)間變長(zhǎng)的結(jié)論。圖8(c)和圖8(d)所示,系統(tǒng)的上下文切換次數(shù)隨虛擬密碼機(jī)數(shù)量的增加而增加,用戶CPU時(shí)間也隨虛擬密碼機(jī)數(shù)量的增加而急劇增加。當(dāng)運(yùn)行16臺(tái)虛擬密碼機(jī)時(shí),用戶CPU時(shí)間達(dá)到100%,說(shuō)明系統(tǒng)加解密頻繁,CPU繁忙。
綜合上述測(cè)試結(jié)果,不管單臺(tái)虛擬密碼機(jī)還是多臺(tái)虛擬密碼機(jī),密碼運(yùn)算任務(wù)越多,系統(tǒng)中斷頻率和系統(tǒng)上下文切換次數(shù)越多,更多的CPU資源則用來(lái)處理系統(tǒng)調(diào)用,致使系統(tǒng) I/O繁忙,密碼任務(wù)的請(qǐng)求響應(yīng)時(shí)間變長(zhǎng),進(jìn)而影響密碼運(yùn)算的速度,導(dǎo)致加密字節(jié)達(dá)到一定值時(shí)密碼運(yùn)算速度呈現(xiàn)降低的趨勢(shì)。要提高虛擬密碼機(jī)密碼運(yùn)算速率,就要保證 I/O傳輸?shù)母咝?,控制系統(tǒng)中斷頻率和系統(tǒng)上下文切換次數(shù)可有效提高I/O傳輸能力,因此,影響SR-IOV密碼設(shè)備系統(tǒng)性能的關(guān)鍵因素是中斷頻率和上下文切換次數(shù)。
本文從SR-IOV密碼設(shè)備相關(guān)技術(shù)入手,分析了中斷是一種有效滿足密碼任務(wù)實(shí)時(shí)性要求的通信機(jī)制,然而也帶來(lái)了嚴(yán)重的開銷問題。首先,虛擬環(huán)境下的中斷傳輸機(jī)制相比物理環(huán)境下更復(fù)雜,中斷請(qǐng)求在傳輸過(guò)程中被VMM兩次截獲,造成嚴(yán)重的上下文切換,增大了系統(tǒng)開銷;其次,當(dāng)虛擬環(huán)境下中斷請(qǐng)求頻率過(guò)高時(shí),會(huì)嚴(yán)重降低SR-IOV密碼設(shè)備處理密碼運(yùn)算的能力。本文針對(duì)SR-IOV密碼設(shè)備處理密碼任務(wù)的特點(diǎn)建立了M/M/1排隊(duì)模型,分析了影響SR-IOV密碼設(shè)備密碼運(yùn)算性能的因素,通過(guò)仿真和實(shí)驗(yàn)兩種方式,對(duì)系統(tǒng)隊(duì)列長(zhǎng)度、系統(tǒng)中斷頻率、系統(tǒng)上下文切換次數(shù)、系統(tǒng)CPU時(shí)間和用戶CPU時(shí)間進(jìn)行了測(cè)試和分析,并對(duì)模型的有效性進(jìn)行了驗(yàn)證。結(jié)果表明,本文建立的模型對(duì)SR-IOV密碼設(shè)備中斷傳輸過(guò)程的分析具有較高的有效性。
本文關(guān)于SR-IOV密碼設(shè)備中斷傳輸過(guò)程模型的建立僅適用于某一類密碼服務(wù)的情況,后續(xù)的研究將拓展到密碼云環(huán)境,對(duì)密碼云環(huán)境下不同類和不同優(yōu)先級(jí)的密碼服務(wù)進(jìn)行建模,研究影響SR-IOV密碼設(shè)備密碼運(yùn)算性能的各項(xiàng)因素。