麻豆精品无码国产在线播放,国产亚洲精品成人AA片新蒲金,国模无码大尺度一区二区三区,神马免费午夜福利剧场

提高虛擬機(jī)資源利用率的裝置及方法與流程

文檔序號:11154580閱讀:1917來源:國知局
提高虛擬機(jī)資源利用率的裝置及方法與制造工藝

本發(fā)明涉及云計(jì)算領(lǐng)域,具體是涉及一種提高虛擬機(jī)資源利用率的裝置及方法。



背景技術(shù):

當(dāng)前云計(jì)算領(lǐng)域大量使用了分布式存儲,當(dāng)分布式存儲可以作為云主機(jī)后端的塊存儲時,通常分布式存儲都要提供一個私有的客戶端程序,應(yīng)用程序通過存儲客戶端連接到存儲的server端。為了提高客戶端訪問存儲的性能,客戶端程序會啟用大量的線程,通過大量線程來提高訪問存儲的并發(fā)性。

在云計(jì)算的環(huán)境下,每個虛擬機(jī)進(jìn)程在連接和使用分布式存儲時,都需要占用大量的線程資源和文件描述符,如圖1所示。分布式存儲中每塊硬盤對應(yīng)一個OSD(Object Storage Daemon,對象存儲設(shè)備),一個存儲容量在PB(Peta Byte,千萬億字節(jié))級別的生產(chǎn)環(huán)境中,磁盤的數(shù)量會有幾千塊,每一個存儲客戶端都會啟用幾百個線程處理IO(Input/Output,輸入/輸出),例如500個,同時每個client(客戶端)都會和所有OSD建立連接,以保證客戶端能夠正常讀寫數(shù)據(jù)。

為了提高資源的利用率,一臺物理主機(jī)上會運(yùn)行盡可能多的虛擬機(jī),當(dāng)虛擬機(jī)較多時,例如30個以上的虛擬機(jī),那么占用的系統(tǒng)線程數(shù)就達(dá)到了30×500=15000,在進(jìn)行讀寫操作時,操作系統(tǒng)會占用大量的CPU(Central Processing Unit,中央處理器)處理線程切換,此時會降低虛擬機(jī)的讀寫性能,并且隨著物理機(jī)上虛擬機(jī)數(shù)目的增加,導(dǎo)致系統(tǒng)額外的開銷,對虛擬機(jī)性能的影響會進(jìn)一步加劇。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明的目的是為了克服上述背景技術(shù)的不足,提供一種提高虛擬機(jī)資源利用率的裝置及方法,當(dāng)同一臺物理機(jī)上的虛擬機(jī)增加時,系統(tǒng)占用的線程資源保持不變,不會因?yàn)樘摂M機(jī)的增加而導(dǎo)致系統(tǒng)額外的開銷,不影響虛擬機(jī)的性能。

本發(fā)明提供一種提高虛擬機(jī)資源利用率的裝置,該裝置包括若干代理模塊和一個執(zhí)行模塊,其中,代理模塊位于虛擬機(jī)內(nèi)部,執(zhí)行模塊位于虛擬機(jī)外部;

所述代理模塊用于:將原有的輸入/輸出IO處理部分從虛擬機(jī)內(nèi)移除,只通過一個單線程接收虛擬機(jī)磁盤的IO請求,然后轉(zhuǎn)發(fā)給執(zhí)行模塊;

所述執(zhí)行模塊用于:啟動時創(chuàng)建用于處理IO請求的線程池,并與每一個對象存儲設(shè)備OSD建立鏈接,用于將IO請求發(fā)送到OSD節(jié)點(diǎn);將代理模塊發(fā)來的IO請求數(shù)據(jù)按照固定長度進(jìn)行分片,對分片后的IO請求數(shù)據(jù)進(jìn)行計(jì)算,計(jì)算出分片后的IO請求數(shù)據(jù)需要保存到的OSD的位置,然后通過已經(jīng)建立的鏈接,將分片后的IO請求數(shù)據(jù)發(fā)送到對應(yīng)的OSD上。

在上述技術(shù)方案的基礎(chǔ)上,所述執(zhí)行模塊與每一個OSD建立傳輸控制協(xié)議鏈接。

在上述技術(shù)方案的基礎(chǔ)上,所述代理模塊作為虛擬機(jī)進(jìn)程的一部分,接收每個虛擬機(jī)的IO請求,但是不處理這些IO請求,也不需要連接到所有的OSD;當(dāng)虛擬機(jī)需要訪問存儲時,代理模塊將需要訪問的IO請求轉(zhuǎn)發(fā)到執(zhí)行模塊。

在上述技術(shù)方案的基礎(chǔ)上,所述執(zhí)行模塊啟用多線程并發(fā)處理代理模塊發(fā)送過來的IO請求,當(dāng)同一臺物理機(jī)上的虛擬機(jī)增加時,系統(tǒng)占用的線程資源保持不變。

本發(fā)明還提供一種應(yīng)用于上述裝置的提高虛擬機(jī)資源利用率的方法,包括以下步驟:

S1、在虛擬機(jī)訪問存儲之前,執(zhí)行模塊先啟用執(zhí)行服務(wù),創(chuàng)建用于處理輸入/輸出IO請求的線程池,并與每一個OSD建立鏈接,用于將IO請求發(fā)送到OSD節(jié)點(diǎn);

S2、用戶創(chuàng)建虛擬機(jī)時,生成一個虛擬機(jī)進(jìn)程,虛擬機(jī)進(jìn)程中包括代理模塊,代理模塊僅僅作為一個虛擬機(jī)進(jìn)程中的一個線程存在,且代理模塊對虛擬機(jī)提供的IO接口保持不變;

S3、代理模塊接收虛擬機(jī)的IO請求后,直接將IO請求放入隊(duì)列中,代理模塊將隊(duì)列中的IO請求按照順序逐一取出,發(fā)送給執(zhí)行模塊;

S4、執(zhí)行模塊將代理模塊發(fā)來的IO請求數(shù)據(jù)按照固定長度進(jìn)行分片,對分片后的IO請求數(shù)據(jù)進(jìn)行計(jì)算,計(jì)算出分片后的IO請求數(shù)據(jù)需要保存到的OSD的位置,然后通過已經(jīng)建立的鏈接,將分片后的IO請求數(shù)據(jù)發(fā)送到對應(yīng)的OSD上。

在上述技術(shù)方案的基礎(chǔ)上,步驟S1中,所述執(zhí)行模塊與每一個OSD建立傳輸控制協(xié)議鏈接。

在上述技術(shù)方案的基礎(chǔ)上,步驟S3中,所述代理模塊作為虛擬機(jī)進(jìn)程的一部分,接收每個虛擬機(jī)的IO請求,但是不處理這些IO請求,也不需要連接到所有的OSD;當(dāng)虛擬機(jī)需要訪問存儲時,代理模塊將需要訪問的IO請求轉(zhuǎn)發(fā)到執(zhí)行模塊。

在上述技術(shù)方案的基礎(chǔ)上,步驟S4中,所述執(zhí)行模塊啟用多線程并發(fā)處理代理模塊發(fā)送過來的IO請求,當(dāng)同一臺物理機(jī)上的虛擬機(jī)增加時,系統(tǒng)占用的線程資源保持不變。

與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點(diǎn)如下:

(1)本發(fā)明通過在虛擬機(jī)內(nèi)增加代理的方式,將多個虛擬機(jī)所需要的線程資源進(jìn)行整合,減少了虛擬機(jī)所屬節(jié)點(diǎn)的線程使用,當(dāng)同一臺物理機(jī)上的虛擬機(jī)增加時,系統(tǒng)占用的線程資源保持不變,不會因?yàn)樘摂M機(jī)的增加而導(dǎo)致系統(tǒng)額外的開銷,不影響虛擬機(jī)的性能。

(2)每個虛擬機(jī)不再需要和每個OSD都建立網(wǎng)絡(luò)連接,避免OSD太多時,系統(tǒng)資源不足的情況。

(3)在存儲的服務(wù)端,每個OSD只需要和每個物理主機(jī)建立一條數(shù)據(jù)傳輸通道,數(shù)據(jù)傳輸?shù)男蕰摺?/p>

附圖說明

圖1是現(xiàn)有虛擬機(jī)進(jìn)程在連接和使用分布式存儲時占用大量線程資源和文件描述符的示意圖。

圖2是本發(fā)明實(shí)施例中提高虛擬機(jī)資源利用率的裝置的結(jié)構(gòu)框圖。

具體實(shí)施方式

下面結(jié)合附圖及具體實(shí)施例對本發(fā)明作進(jìn)一步的詳細(xì)描述。

參見圖2所示,本發(fā)明實(shí)施例提供一種提高虛擬機(jī)資源利用率的裝置,該裝置包括若干代理模塊和一個執(zhí)行模塊,其中,代理模塊位于虛擬機(jī)內(nèi)部,執(zhí)行模塊位于虛擬機(jī)外部,代理模塊的邏輯相對簡單,執(zhí)行模塊用于真正的數(shù)據(jù)處理。

代理模塊用于:將原有復(fù)雜的IO(input/output,輸入/輸出)處理部分從虛擬機(jī)內(nèi)移除,只通過一個單線程接收虛擬機(jī)磁盤的IO請求,然后轉(zhuǎn)發(fā)給執(zhí)行模塊。

執(zhí)行模塊用于:啟動時創(chuàng)建用于處理IO請求的線程池,并與每一個OSD建立TCP(Transmission Control Protocol,傳輸控制協(xié)議)鏈接,用于將IO請求發(fā)送到OSD節(jié)點(diǎn);將代理模塊發(fā)來的IO請求數(shù)據(jù)按照固定長度進(jìn)行分片,對分片后的IO請求數(shù)據(jù)進(jìn)行計(jì)算,計(jì)算出分片后的IO請求數(shù)據(jù)需要保存到的OSD(Object Storage Daemon,對象存儲設(shè)備)的位置,然后通過已經(jīng)建立的鏈接,將分片后的IO請求數(shù)據(jù)發(fā)送到對應(yīng)的OSD上。

代理模塊作為虛擬機(jī)進(jìn)程的一部分,負(fù)責(zé)接收每個虛擬機(jī)的IO(Input/Output,輸入/輸出)請求,但是代理模塊不再處理這些IO請求,也不需要連接到所有的OSD。當(dāng)虛擬機(jī)需要訪問存儲時,代理模塊將需要訪問的IO請求轉(zhuǎn)發(fā)到執(zhí)行模塊。

執(zhí)行模塊一方面接收所有代理模塊發(fā)送過來的IO請求,另一方面負(fù)責(zé)連接到存儲后端的所有OSD。在執(zhí)行模塊上啟用多線程并發(fā)處理代理模塊發(fā)送過來的IO請求,當(dāng)同一臺物理機(jī)上的虛擬機(jī)增加時,系統(tǒng)占用的線程資源保持不變,操作系統(tǒng)進(jìn)行線程切換的開銷不會隨著虛擬機(jī)的增加而增大,同時物理機(jī)上和OSD的連接數(shù)也大大減少了。

本發(fā)明實(shí)施例還提供一種應(yīng)用于上述裝置的提高虛擬機(jī)資源利用率的方法,包括以下步驟:

S1、啟動執(zhí)行服務(wù)。執(zhí)行模塊作為一個獨(dú)立的服務(wù)存在,在虛擬機(jī)訪問存儲之前,需要先啟用執(zhí)行服務(wù),執(zhí)行服務(wù)在啟動時創(chuàng)建用于處理IO請求的線程池,并與每一個OSD建立TCP(Transmission Control Protocol,傳輸控制協(xié)議)鏈接,用于將IO請求發(fā)送到OSD節(jié)點(diǎn)。

S2、創(chuàng)建虛擬機(jī)。用戶在創(chuàng)建虛擬機(jī)時,生成一個虛擬機(jī)進(jìn)程,虛擬機(jī)進(jìn)程中包括代理模塊,代理模塊僅僅作為一個虛擬機(jī)進(jìn)程中的一個線程存在。同時,代理模塊對虛擬機(jī)提供的IO接口保持不變,所以上層的虛擬機(jī)不用感知代理模塊的存在。

S3、代理模塊轉(zhuǎn)發(fā)數(shù)據(jù)。代理模塊接收虛擬機(jī)的IO請求后,直接將IO請求放入隊(duì)列中,代理模塊將隊(duì)列中的IO請求按照順序逐一取出,發(fā)送給執(zhí)行模塊。

代理模塊作為虛擬機(jī)進(jìn)程的一部分,接收每個虛擬機(jī)的IO請求,但是不處理這些IO請求,也不需要連接到所有的OSD;當(dāng)虛擬機(jī)需要訪問存儲時,代理模塊將需要訪問的IO請求轉(zhuǎn)發(fā)到執(zhí)行模塊。

S4、數(shù)據(jù)處理。執(zhí)行模塊收到代理模塊發(fā)來的IO請求后,將代理模塊發(fā)來的IO請求數(shù)據(jù)按照固定長度進(jìn)行分片,對分片后的IO請求數(shù)據(jù)進(jìn)行計(jì)算,計(jì)算出分片后的IO請求數(shù)據(jù)需要保存到的OSD的位置,然后通過已經(jīng)建立的鏈接,將分片后的IO請求數(shù)據(jù)發(fā)送到對應(yīng)的OSD上。

執(zhí)行模塊啟用多線程并發(fā)處理代理模塊發(fā)送過來的IO請求,當(dāng)同一臺物理機(jī)上的虛擬機(jī)增加時,系統(tǒng)占用的線程資源保持不變。

本領(lǐng)域的技術(shù)人員可以對本發(fā)明實(shí)施例進(jìn)行各種修改和變型,倘若這些修改和變型在本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則這些修改和變型也在本發(fā)明的保護(hù)范圍之內(nèi)。

說明書中未詳細(xì)描述的內(nèi)容為本領(lǐng)域技術(shù)人員公知的現(xiàn)有技術(shù)。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
主站蜘蛛池模板: 乾安县| 北海市| 古浪县| 西藏| 塔城市| 龙川县| 额济纳旗| 合水县| 奎屯市| 通河县| 乌鲁木齐县| 佛冈县| 黄浦区| 酒泉市| 乌拉特前旗| 麦盖提县| 宁阳县| 卓尼县| 临西县| 鹤峰县| 西贡区| 民和| 恩施市| 深圳市| 温宿县| 廊坊市| 都昌县| 年辖:市辖区| 泽普县| 屯门区| 琼中| 遂昌县| 伊川县| 万山特区| 彩票| 浑源县| 廊坊市| 台东市| 永登县| 静宁县| 金堂县|