樊林
[摘 要]內(nèi)存是計(jì)算機(jī)的獨(dú)占資源,僅本機(jī)可用,在不改動內(nèi)存硬件配置的前提下,主機(jī)內(nèi)存容量有限且不變。隨著技術(shù)的發(fā)展,主機(jī)物理內(nèi)存容量已經(jīng)可以達(dá)到TB級別,但這樣的主機(jī)價格高昂,因此,研究主機(jī)物理內(nèi)存共用技術(shù),既能降低企業(yè)的運(yùn)營成本,也能解決資源利用率低下的問題,基于此,本文對云上主機(jī)物理內(nèi)存共用技術(shù)進(jìn)行了研究。
[關(guān)鍵詞]計(jì)算機(jī);云上;物理內(nèi)存共用
doi:10.3969/j.issn.1673 - 0194.2017.08.085
[中圖分類號]TP333 [文獻(xiàn)標(biāo)識碼]A [文章編號]1673-0194(2017)08-0-02
1 云上技術(shù)與物理內(nèi)存的基本概述
近年來,出現(xiàn)并不斷發(fā)展的云計(jì)算是信息產(chǎn)業(yè)領(lǐng)域革命性改革的基礎(chǔ),它改變了用戶使用計(jì)算機(jī)的方式,逐漸成熟的虛擬化技術(shù)使云計(jì)算這種商業(yè)模式得以推廣普及。傳統(tǒng)商業(yè)模式中,擁有計(jì)算能力的CPU、擁有存儲能力的內(nèi)存等硬件資源必須由每個用戶單獨(dú)購買,這造成了硬件閑置時間長,使用率低下等問題。虛擬化技術(shù)出現(xiàn)后,計(jì)算資源(如CPU時間片)、存儲資源(如內(nèi)存、硬盤)以虛擬商品形式出現(xiàn),用戶無需購買硬件,而是直接購買硬件所擁有的由虛擬化技術(shù)提供的計(jì)算能力或存儲能力即可。這種將擁有不同大小計(jì)算能力或存儲能力的虛擬化資源,以商品形式銷售給用戶的做法,使用戶可以根據(jù)自己的需求定制個性化服務(wù),節(jié)約了成本和開銷。
雖然計(jì)算機(jī)云上虛擬機(jī)硬件設(shè)備,是通過虛擬化技術(shù)產(chǎn)生且沒有物理形態(tài)的,但這些虛擬硬件設(shè)備的運(yùn)作,仍然要依托虛擬機(jī)所在物理計(jì)算機(jī)的實(shí)體硬件設(shè)備。虛擬化技術(shù)通過一定方式,實(shí)現(xiàn)了虛擬硬件設(shè)備與物理計(jì)算機(jī)上實(shí)體硬件設(shè)備的交互,如在虛擬機(jī)中輸入的虛擬CPU指令流,最終是輸入到了物理計(jì)算機(jī)實(shí)體CPU中進(jìn)行計(jì)算的,存儲在虛擬內(nèi)存中的數(shù)據(jù)實(shí)際上是存儲在物理計(jì)算機(jī)實(shí)體內(nèi)存中的。
從虛擬化技術(shù)和內(nèi)存計(jì)算的特點(diǎn)可以看出,計(jì)算機(jī)內(nèi)存的性能是決定計(jì)算機(jī)服務(wù)質(zhì)量和處理能力的重要因素。計(jì)算機(jī)內(nèi)存的性能,隨著計(jì)算機(jī)技術(shù)的發(fā)展得到了不斷的提升和優(yōu)化,主要手段有三種。
(1)計(jì)算機(jī)體系結(jié)構(gòu)的改革。體系結(jié)構(gòu)的改革是硬件層面的改進(jìn),使CPU可更快速訪問內(nèi)存。
(2)計(jì)算機(jī)內(nèi)存管理方式的改進(jìn)。這種手段是操作系統(tǒng)內(nèi)核層面的,目的是減少重復(fù)內(nèi)存頁面數(shù)量,以提高內(nèi)存利用率;或增加虛擬內(nèi)存,以提高可用內(nèi)存容量。
(3)分布式內(nèi)存資源整合共享。這種工作是在用戶層面上的改進(jìn)措施,其可以將物理上分散在不同主機(jī)上的內(nèi)存資源在邏輯上整合為一體,以滿足內(nèi)存密集型應(yīng)用對內(nèi)容容量的需求。
總之,這三種改進(jìn)路線雖然層次不同,但最終目的均是為了提升計(jì)算機(jī)的內(nèi)存性能。
2 物理內(nèi)存共用技術(shù)的研究
2.1 原型系統(tǒng)結(jié)構(gòu)
內(nèi)存共用原型系統(tǒng)中包括兩種角色的主機(jī):客戶主機(jī)和服務(wù)主機(jī),這兩者同屬于一個集群,通過高速網(wǎng)絡(luò)相互連接??蛻糁鳈C(jī)是內(nèi)存借入方,服務(wù)主機(jī)是內(nèi)存借出方,通過主機(jī)角色的轉(zhuǎn)換,內(nèi)存可以在主機(jī)之間相互借用,以此實(shí)現(xiàn)主機(jī)間的內(nèi)存共用。
客戶主機(jī)中的進(jìn)程不僅可以使用本地物理內(nèi)存,還可以向虛擬內(nèi)存對象申請內(nèi)存分配并使用。虛擬內(nèi)存對象是由內(nèi)核驅(qū)動創(chuàng)建的虛擬設(shè)備,它是集群中其他主機(jī)內(nèi)存在本地的映射;客戶主機(jī)中的進(jìn)程可以向虛擬內(nèi)存對象申請內(nèi)存分配、讀寫內(nèi)存頁面,所有對虛擬內(nèi)存對象的操作不會對本地物理內(nèi)存的操作有任何差別??蛻糁鳈C(jī)內(nèi)核模塊是客戶主機(jī)中的核心部分,包含虛擬內(nèi)存對象的驅(qū)動程序,另外,還負(fù)責(zé)內(nèi)存的借用與歸還。遠(yuǎn)端內(nèi)存在本地虛擬內(nèi)存對象中映射的建立和刪除,通過網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)的雙向傳輸,向上提供管理接口,同時也是虛擬內(nèi)存對象和本地網(wǎng)絡(luò)設(shè)備之間通信的橋梁。
2.2 處理流程
云上物理內(nèi)存共用技術(shù)處理流程主要有3個步驟,即虛擬內(nèi)存對象擴(kuò)展流程、虛擬內(nèi)存對象主動收縮流程、虛擬內(nèi)存對象被動收縮流程。
2.2.1 虛擬內(nèi)存對象擴(kuò)展流程
虛擬內(nèi)存對象擴(kuò)展機(jī)制是客戶主機(jī)可用內(nèi)存不足時,由客戶主機(jī)內(nèi)核模塊自行調(diào)用的系統(tǒng)過程。該過程不需要用戶層面程序進(jìn)行干預(yù),完全由內(nèi)核模塊發(fā)起操作,并處理過程中產(chǎn)生的錯誤??蛻糁鳈C(jī)首先計(jì)算需要借用的內(nèi)存塊數(shù)量,BlkBor需要向上對齊到MemBlkSize的整數(shù)倍。
BlkBor=[(CPMT+CVMT)×CPer]÷MemBlkSize
計(jì)算出BlkBor后,客戶主機(jī)會從前向后遍歷Server List列表,當(dāng)某臺服務(wù)主機(jī)的SerBlkAvail滿足SerBlkAvail>0時,即可向該服務(wù)主機(jī)發(fā)起一次內(nèi)存借用申請;不滿足公式則從Server List中選擇下一臺服務(wù)主機(jī)判斷其是否滿足條件。如果Server List列表為空或所有服務(wù)主機(jī)均不滿足上式,則表明無內(nèi)存可借用,內(nèi)存借用過程失敗,本次內(nèi)存擴(kuò)展過程結(jié)束。
2.2.2 虛擬內(nèi)存對象主動收縮流程
虛擬內(nèi)存對象主動收縮流程如圖1所示。
圖1中,客戶主機(jī)內(nèi)核模塊在系統(tǒng)啟動后,每隔TCtest時間周期性檢測系統(tǒng)當(dāng)前內(nèi)存使用情況。當(dāng)客戶主機(jī)空閑內(nèi)存比例大于上限值PCU,即滿足公式(1)時:
(1)
認(rèn)為系統(tǒng)當(dāng)前空閑內(nèi)存率過高;當(dāng)連續(xù)三次檢測結(jié)果均顯示當(dāng)前空閑內(nèi)存率過高時,則認(rèn)為需要?dú)w還部分借用的內(nèi)存塊。若不滿足歸還條件則不做處理,結(jié)束本次內(nèi)存收縮過程。
2.2.3 虛擬內(nèi)存對象被動收縮流程
服務(wù)主機(jī)在運(yùn)行的過程中同樣會出現(xiàn)一定程度內(nèi)存不足的情況,針對這種情況,在此借鑒虛擬機(jī)動態(tài)內(nèi)存調(diào)節(jié)技術(shù)中的“氣球技術(shù)”,并對其進(jìn)行適應(yīng)性修改。當(dāng)服務(wù)主機(jī)內(nèi)存過載時,通過停止借出內(nèi)存或強(qiáng)制將借出的內(nèi)存塊回收等手段,優(yōu)先保證服務(wù)主機(jī)的正常運(yùn)行,這便是所謂虛擬內(nèi)存對象被動收縮。
強(qiáng)制回收內(nèi)存塊時,服務(wù)主機(jī)對MemPoolTable中已借出的內(nèi)存塊進(jìn)行統(tǒng)計(jì),統(tǒng)計(jì)各客戶主機(jī)借用的內(nèi)存塊數(shù)量,從中選出借用內(nèi)存塊最多的客戶主機(jī)向其發(fā)送內(nèi)存塊強(qiáng)制歸還消息。當(dāng)客戶主機(jī)收到強(qiáng)制歸還內(nèi)存塊的消息后,遍歷MemSlotTable,選定其中屬于該服務(wù)主機(jī)且BlkUseRate最小的內(nèi)存塊,如果該內(nèi)存塊BlkUseRate為0,則直接歸還該內(nèi)存塊;如果BlkUseRate不為0,則啟用內(nèi)存頁面遷移機(jī)制,頁面遷移時優(yōu)先選擇本地內(nèi)存作為頁面遷移目的地,其次選擇虛擬內(nèi)存對象中的其他內(nèi)存塊,最后選擇頁交換文件。當(dāng)確認(rèn)內(nèi)存塊完全空閑后,即可歸還給對應(yīng)的服務(wù)主機(jī)。
3 結(jié) 語
隨著云計(jì)算、大數(shù)據(jù)的不斷發(fā)展,海量計(jì)算業(yè)務(wù)對集群主機(jī)性能的要求越來越高。提升集群主機(jī)性能一方面可以通過單純提升主機(jī)硬件配置實(shí)現(xiàn),另一方面可通過軟件技術(shù)手段對資源進(jìn)行整合實(shí)現(xiàn),因此,筆者希望通過本文的研究,能夠?yàn)橛?jì)算機(jī)物理內(nèi)存的研究工作提供可以參考的依據(jù)資料。
主要參考文獻(xiàn)
[1]王小銀,陳莉君.Linux內(nèi)核中內(nèi)存池的實(shí)現(xiàn)及應(yīng)用[J].西安郵電大學(xué)學(xué)報,2011(4).
[2]侯昉,王禹,趙躍龍.內(nèi)存頁面交換文件定位優(yōu)化方法[J].計(jì)算機(jī)工程與應(yīng)用,2010(4).
[3]魏海濤,姜昱明,李建武,等.內(nèi)存管理機(jī)制的高效實(shí)現(xiàn)研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2009(16).
[4]史樂平,吳邦欲,顧明.桌面Linux操作系統(tǒng)頁面交換算法的改進(jìn)[J].計(jì)算機(jī)應(yīng)用研究,2005(8).