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