亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種基于kvm的多虛擬機(jī)映射、多通路的fuse加速方法及系統(tǒng)與流程

文檔序號:12063475閱讀:293來源:國知局
本發(fā)明涉及文件系統(tǒng)
技術(shù)領(lǐng)域
:,特別涉及一種基于kvm的多虛擬機(jī)映射、多通路的fuse加速方法及系統(tǒng)。
背景技術(shù)
::目前文件系統(tǒng)客戶端的使用主要提供兩種方式:一是API庫,像HDFS文件系統(tǒng),采用JAVA編寫,提供API和SHELL腳本供用戶使用,用戶已有的程序無法直接使用,需要通過HDFS的API函數(shù)才能使用,局限了使用范圍。一是POSIX語義,即通過mount的方式將文件系統(tǒng)掛在本地目錄,如同操作本地文件一樣,相對API和SHELL方式,支持POSIX語義的文件系統(tǒng)極大方便了用戶的使用,根據(jù)客戶端編碼方式,又分為內(nèi)核態(tài)文件系統(tǒng)客戶端和用戶態(tài)文件系統(tǒng)客戶,內(nèi)核態(tài)文件系統(tǒng)將客戶端直接嵌入LINUX內(nèi)核中,使得客戶端的性能幾乎沒有損失,但提高了客戶端的編碼難度,并且不易于調(diào)試。用戶態(tài)文件系統(tǒng)基于FUSE模塊提供的API庫進(jìn)行編碼,編碼效率更高,調(diào)試更加容易。FUSE包含兩部分,內(nèi)核部分和用戶態(tài)部分,客戶端只需要使用用戶態(tài)API庫即可進(jìn)行編碼,針對功能擴(kuò)展需求能夠更好更快的完善,如圖1所示,以我們的分布式糾刪碼參數(shù)系統(tǒng)ECFS為例,闡述數(shù)據(jù)流如何通過FUSE流到客戶端。FUSE內(nèi)核模塊加載成功后,生成“/dev/fuse”的雜項(xiàng)設(shè)備,當(dāng)應(yīng)用程序調(diào)用write操作寫入數(shù)據(jù)后,數(shù)據(jù)通過sys_write系統(tǒng)調(diào)用,進(jìn)入內(nèi)核態(tài)的VFS層(VFS:VirtualFileSystem,采用標(biāo)準(zhǔn)的Unix系統(tǒng)調(diào)用讀寫位于不同物理介質(zhì)上的文件系統(tǒng),為各類文件系統(tǒng)提供了一個(gè)統(tǒng)一的操作界面和應(yīng)用程序接口,即在Linux系統(tǒng)中,所有的系統(tǒng)調(diào)用都會(huì)經(jīng)過VFS層過度到對應(yīng)的文件系統(tǒng)中),VFS將數(shù)據(jù)拷貝到FUSE內(nèi)核申請的內(nèi)存中,并將數(shù)據(jù)寫入“/dev/fuse”設(shè)備中(對fuse設(shè)備的讀寫即為對內(nèi)存的讀寫操作),用戶態(tài)監(jiān)測到”/dev/fuse“設(shè)備中存在數(shù)據(jù)時(shí),將其中數(shù)據(jù)讀取出來,并調(diào)用客戶端注冊的鉤子函數(shù)(文件系統(tǒng)客戶端編碼時(shí),通過完成FUSEAPI庫提供的鉤子函數(shù),完成客戶端的功能),客戶端拿到數(shù)據(jù)后,經(jīng)過對應(yīng)的操作處理后,跟文件系統(tǒng)元數(shù)據(jù)服務(wù)器和對象數(shù)據(jù)服務(wù)器交互,將數(shù)據(jù)進(jìn)行存儲,隨后客戶端在處理完這些流程后,將操作結(jié)果通過“/dev/fuse”設(shè)備返回給VFS,進(jìn)而返回給應(yīng)用程序,完成write操作的調(diào)用?;贔USE的用戶態(tài)文件系統(tǒng)與內(nèi)核態(tài)文件系統(tǒng)相比,存在以下幾個(gè)缺點(diǎn):通過測試發(fā)現(xiàn),用戶態(tài)文件系統(tǒng)較內(nèi)核態(tài)文件系統(tǒng)相比,IOPS較低,用戶態(tài)文件系統(tǒng)讀寫速度極慢,極大的影響了系統(tǒng)的性能;FUSE分為兩部分,內(nèi)核部分跟用戶態(tài)lib庫,內(nèi)核FUSE模塊極度依賴于系統(tǒng)內(nèi)核函數(shù),互不兼容,必須更新內(nèi)核才能使用,使得FUSE的使用很不方便。通過對圖1的分析,我們發(fā)現(xiàn)FUSE的實(shí)現(xiàn)過程中有以下幾個(gè)問題:a、每次系統(tǒng)調(diào)用路徑中,需要若干次內(nèi)核態(tài)與用戶態(tài)的上下文切換,導(dǎo)致系統(tǒng)進(jìn)行頻繁的上下文切換,帶來了系統(tǒng)開銷,高版本3.16kernel內(nèi)核中的writeback_cache功能,無法應(yīng)用于低版本系統(tǒng)中,使用極為不方便;b、每次系統(tǒng)調(diào)用路徑中,需要進(jìn)行4-5次內(nèi)存拷貝操作,同樣需要進(jìn)行內(nèi)存的申請和釋放操作,內(nèi)存申請、釋放和拷貝操作,嚴(yán)重影響了系統(tǒng)的系統(tǒng);c、每次系統(tǒng)調(diào)用,從調(diào)用開始到返回,需要經(jīng)過用戶態(tài)、到內(nèi)核態(tài)、再到用戶態(tài),再到內(nèi)核態(tài)、最后到用戶態(tài)一個(gè)完整的流程,系統(tǒng)開銷很大,導(dǎo)致IOPS較低,系統(tǒng)每次以4k或者更大粒度進(jìn)行,導(dǎo)致整體讀寫帶寬較低。d、通過源碼發(fā)現(xiàn),對設(shè)備”/dev/fuse”的處理屬于串行操作,系統(tǒng)帶寬較低。在文件系統(tǒng)開發(fā)過程中,通過大量的測試分析發(fā)現(xiàn),F(xiàn)USE成為客戶端性能的瓶頸。4kB數(shù)據(jù)小粒度順序?qū)憸y試過程中,系統(tǒng)的IO只有79MB/s,1MB數(shù)據(jù)大粒度順序?qū)憸y試過程中,系統(tǒng)IO帶寬只有161MB/s,極大限制了系統(tǒng)的系統(tǒng)。小粒度讀寫進(jìn)行一次完整的操作需要經(jīng)過幾次用戶態(tài)、內(nèi)核態(tài)的切換,內(nèi)存的申請、釋放和拷貝等,每次操作都要完整的執(zhí)行完這些繁瑣的流程,并且只有當(dāng)一個(gè)操作完成后,才能進(jìn)行下一次操作,直接導(dǎo)致了較低的IOPS和帶寬,經(jīng)過研究,我們在內(nèi)核態(tài)代碼中,將數(shù)據(jù)進(jìn)行緩沖聚合,等到足夠多時(shí)或者經(jīng)過一段時(shí)間后,一次性進(jìn)行寫入,減少頻繁上下文切換,提升IOPS。每次系統(tǒng)調(diào)用路徑中,需要進(jìn)行多次內(nèi)存拷貝操作,同樣伴隨多次的內(nèi)存申請、釋放和拷貝操作,嚴(yán)重影響了系統(tǒng)的系統(tǒng),通過測試,每減少一次內(nèi)存拷貝操作,系統(tǒng)帶寬將提升300MB/s,針對頻繁的內(nèi)存申請釋放操作,我們通過構(gòu)建內(nèi)存分配系統(tǒng)的方法,管理FUSE使用的內(nèi)存,減少IO通路上頻繁的內(nèi)存操作。通過系統(tǒng)IO通路的分析,我們發(fā)現(xiàn),F(xiàn)USE在VFS與FUSE之間、內(nèi)核態(tài)與用戶態(tài)之間、FUSE小粒度聚合存在多次數(shù)據(jù)拷貝,這些拷貝是多余的,并未帶來系統(tǒng)性能的提升,因此,我們通過內(nèi)存映射的方法,管理內(nèi)存塊區(qū)間,減少數(shù)據(jù)拷貝操作,進(jìn)一步提升系統(tǒng)性能。技術(shù)實(shí)現(xiàn)要素:針對現(xiàn)有技術(shù)的不足,本發(fā)明提出一種基于kvm的多虛擬機(jī)映射、多通路的fuse加速方法及系統(tǒng)。一種基于kvm的多虛擬機(jī)映射、多通路的FUSE加速方法,包括:步驟1,對現(xiàn)有FUSE內(nèi)核模塊的數(shù)據(jù)路徑添加延遲寫功能,其中所述延遲寫功能包括數(shù)據(jù)在經(jīng)過內(nèi)核時(shí),通過VFS層,在FUSE內(nèi)核模塊進(jìn)行聚合,直接返回到系統(tǒng)調(diào)用,僅當(dāng)聚合數(shù)據(jù)滿足一定大小,或一定時(shí)間不再追加時(shí),再通過“/dev/fuse”設(shè)備傳輸?shù)接脩魬B(tài)客戶端進(jìn)行數(shù)據(jù)落盤操作;步驟2,對FUSE內(nèi)核模塊進(jìn)行多掛載點(diǎn)掛載。上述的基于kvm的多虛擬機(jī)映射、多通路的fuse加速方法,其中,數(shù)據(jù)在通過FUSE內(nèi)核模塊時(shí),并發(fā)通過多個(gè)FUSE設(shè)備鏈路進(jìn)行通信。上述的基于kvm的多虛擬機(jī)映射、多通路的fuse加速方法,其中,構(gòu)建多個(gè)內(nèi)存鏈表,每個(gè)鏈表定制不同的內(nèi)存大小,預(yù)先申請內(nèi)存空間,內(nèi)存鏈表使用達(dá)到上限時(shí),自動(dòng)異步申請內(nèi)存,添加到內(nèi)存鏈表中,當(dāng)系統(tǒng)內(nèi)存缺乏時(shí),定期釋放內(nèi)存鏈表中的內(nèi)存空間。上述的基于kvm的多虛擬機(jī)映射、多通路的fuse加速方法,其中,數(shù)據(jù)通過進(jìn)程間通信機(jī)制,傳輸內(nèi)存操作命令,包括內(nèi)存操作相關(guān)元數(shù)據(jù)。本發(fā)明還提供一種基于kvm的多虛擬機(jī)映射、多通路的FUSE加速系統(tǒng),其中,包括:延遲寫模塊,對現(xiàn)有FUSE內(nèi)核模塊添加延遲寫功能,其中所述返回寫功能包括數(shù)據(jù)在經(jīng)過內(nèi)核時(shí),通過VFS層,在FUSE內(nèi)核模塊進(jìn)行聚合,直接返回到系統(tǒng)調(diào)用,僅當(dāng)聚合數(shù)據(jù)滿足一定大小,或一定時(shí)間不在追加時(shí),再通過“/dev/fuse”設(shè)備傳輸?shù)接脩魬B(tài)客戶端進(jìn)行數(shù)據(jù)落盤操作;掛載模塊,用于對FUSE內(nèi)核模塊進(jìn)行多掛載點(diǎn)掛載。上述的基于kvm的多虛擬機(jī)映射、多通路的fuse加速系統(tǒng),其中,數(shù)據(jù)在通過FUSE內(nèi)核模塊時(shí),并發(fā)通過多個(gè)FUSE設(shè)備鏈路進(jìn)行通信。上述的基于kvm的多虛擬機(jī)映射、多通路的fuse加速系統(tǒng),其中,構(gòu)建多個(gè)內(nèi)存鏈表,每個(gè)鏈表定制不同的內(nèi)存大小,預(yù)先申請內(nèi)存空間,內(nèi)存鏈表使用達(dá)到上限時(shí),自動(dòng)異步申請內(nèi)存,添加到內(nèi)存鏈表中,當(dāng)系統(tǒng)內(nèi)存缺乏時(shí),定期釋放內(nèi)存鏈表中的內(nèi)存空間。上述的基于kvm的多虛擬機(jī)映射、多通路的fuse加速系統(tǒng),其中,數(shù)據(jù)通過進(jìn)程間通信機(jī)制,傳輸內(nèi)存操作命令,包括內(nèi)存操作相關(guān)元數(shù)據(jù)。由以上方案可知,本發(fā)明的優(yōu)點(diǎn)在于:a、將虛機(jī)客戶端處理操作下放到宿主機(jī)端,能夠減少虛擬機(jī)CPU、MEM的壓力,空出更多的資源供虛擬機(jī)進(jìn)行計(jì)算處理任務(wù);b、通過多頁聚合、后寫機(jī)制,減少內(nèi)核態(tài)、用戶態(tài)的上下文切換,加速寫的IOPS;c、通過內(nèi)存映射、內(nèi)存分配機(jī)制,加速FUSE的IO通路的數(shù)據(jù)帶寬,同一分配內(nèi)存,將內(nèi)存通過映射機(jī)制,減少內(nèi)存申請、釋放、內(nèi)存拷貝的系統(tǒng)開銷;d、通過多虛機(jī)映射、多通路機(jī)制,打通KVM虛機(jī)與宿主機(jī)的數(shù)據(jù)流,將更復(fù)雜的數(shù)據(jù)處理流程下方到性能更強(qiáng)的宿主機(jī)上,更好的發(fā)揮宿主機(jī)硬件的性能。附圖說明圖1是FUSE數(shù)據(jù)流梳理圖;圖2是現(xiàn)有工作框架圖;圖3是page頁聚合返回寫示意圖;圖4是多通路示意圖;圖5是數(shù)據(jù)拷貝示意圖;圖6是內(nèi)存映射示意圖;圖7是多虛擬機(jī)映射、多通路示意圖。具體實(shí)施方式FUSE模塊為需要POSIX(PortableOperatingSystemInterface,可移植操作系統(tǒng)接口)語義的文件系統(tǒng)提供用戶態(tài)開發(fā)支持,支持POSIX的文件系統(tǒng)主要的目的是使存儲跟基于KVM的云運(yùn)算虛擬化平臺更好的融合,為云計(jì)算平臺的大數(shù)據(jù)處理提供更高、更快的IO性能。相對復(fù)雜的內(nèi)核編碼調(diào)試,F(xiàn)USE極大的降低了客戶端的編碼調(diào)試難度。本發(fā)明提出的基于KVM的FUSE模塊加速方案,通過對FUSE模塊的改善,提高了FUSE的IO性能,使得文件系統(tǒng)的性能得意大幅度提高。如圖2所示,為我們現(xiàn)有工作框架圖,所有的開發(fā)工作為用戶態(tài)開發(fā),將不同的底層通用庫進(jìn)行抽象,分別為通信庫和FUSE模塊庫。針對大數(shù)據(jù)背景下的云計(jì)算虛擬化平臺,KVM和openstack等虛擬化環(huán)境提供了對象存儲、塊存儲和鏡像存儲,面向大數(shù)據(jù)應(yīng)用分析環(huán)境,還需要分布式文件系統(tǒng)的支持,因此面向大數(shù)據(jù)應(yīng)用的云計(jì)算虛擬化平臺需要做好與存儲的融合工作。分布式文件系統(tǒng)的部署和使用中,與虛擬機(jī)接觸最多的屬于客戶端,現(xiàn)有的分布式文件系統(tǒng)客戶端部分又分為內(nèi)核態(tài)和用戶態(tài)兩種,內(nèi)核態(tài)編程,編碼難度系數(shù)高,不易于調(diào)試,且容易導(dǎo)致系統(tǒng)崩潰,開發(fā)成本較高;用戶態(tài)編程簡單,易于擴(kuò)展,開發(fā)成本低。如圖1所示,數(shù)據(jù)經(jīng)過文件系統(tǒng)客戶端時(shí),應(yīng)用程序經(jīng)系統(tǒng)調(diào)用,從用戶態(tài)進(jìn)入內(nèi)核態(tài),數(shù)據(jù)經(jīng)VFS拷貝至FUSE模塊中,并經(jīng)fuse設(shè)備完成內(nèi)核態(tài)與用戶態(tài)的交互,期間涉及到兩次內(nèi)存操作,用戶態(tài)FUSE拿到數(shù)據(jù)后,通過客戶端注冊給FUSE的鉤子函數(shù),完成數(shù)據(jù)的處理,然后,在按照原路返回給應(yīng)用程序,表示一次讀寫操作完成,一次操作完成才能進(jìn)行下一次操作。FUSE在內(nèi)核態(tài)與用戶態(tài)之間采用寫穿透策略,并且數(shù)據(jù)通路較長,嚴(yán)重影響了FUSE的數(shù)據(jù)寫效率,尤其是小粒度寫操作的效率。針對寫效率低下的情況,歸結(jié)原因?yàn)檩^低的IOPS,通過源碼分析,發(fā)現(xiàn)源碼在通信關(guān)鍵路徑“/dev/fuse”設(shè)備上屬于串行操作,針對每次的“穿透寫”操作(數(shù)據(jù)經(jīng)過完整路徑達(dá)到客戶端,處理后再返回),較長的數(shù)據(jù)路徑和上下文切換成為主要的性能消耗點(diǎn),因此,我們采用“返回寫”的方式進(jìn)行(數(shù)據(jù)在經(jīng)過內(nèi)核時(shí),通過VFS層,在FUSE內(nèi)核模塊進(jìn)行聚合,直接返回到系統(tǒng)調(diào)用,不再走完完整的路,僅當(dāng)聚合數(shù)據(jù)滿足一定大小,或一定時(shí)間不在追加時(shí),再通過“/dev/fuse”設(shè)備傳輸?shù)接脩魬B(tài)客戶端進(jìn)行數(shù)據(jù)落盤操作)。經(jīng)過此測試,F(xiàn)USE的IO帶寬增長到1.2GB/s,通過圖1和圖3進(jìn)行對比,可以看出,在FUSE內(nèi)核模塊增加了數(shù)據(jù)聚合功能。在對FUSE添加“返回寫”功能后,F(xiàn)USE性能的提升非常明顯,但是相對通信庫的通信性能和糾刪碼的計(jì)算性能來說,F(xiàn)USE依然是一個(gè)瓶頸,因此,依然需要提升系統(tǒng)性能,采取以下兩種方法:a、基于單一fuse.ko模塊,進(jìn)行多掛載點(diǎn)掛載后,F(xiàn)USE的聚合性能達(dá)到2.9GB/s;b、通過對源碼修改,簡單增加fuse.ko模塊,增加多掛載點(diǎn)后,F(xiàn)USE的聚合性能達(dá)到3.2GB/s;通過以上兩種方法,通過簡單的多掛載點(diǎn)或者多模塊聚合后,F(xiàn)USE的性能提升2倍,通過上述a、b兩種測試方法,可以總結(jié)為:fuse在經(jīng)過并發(fā)讀取“/dev/fuse”設(shè)備,或者并發(fā)讀取多個(gè)“/dev/fuse”設(shè)備,可以提升FUSE的聚合性能。如圖4所示,本發(fā)明提出基于“/dev/fuse”設(shè)備,構(gòu)建基于設(shè)備的多鏈路并發(fā)通信模型,數(shù)據(jù)在通過FUSE內(nèi)核模塊時(shí),并發(fā)通過多個(gè)fuse設(shè)備鏈路進(jìn)行通信,F(xiàn)USE用戶態(tài)部分同樣是并發(fā)讀取數(shù)據(jù),數(shù)據(jù)可以達(dá)到預(yù)期效果。如圖5所示,經(jīng)過page頁聚合、多通路并發(fā)改進(jìn)后,F(xiàn)USE性能依然存在著性能提升的空間,數(shù)據(jù)在FUSE內(nèi)核態(tài)和用戶態(tài)空間內(nèi)存在多次數(shù)據(jù)拷貝,經(jīng)過實(shí)際測試,系統(tǒng)在測試過程中,每減少一次數(shù)據(jù)拷貝過程中,F(xiàn)USE的帶寬可以提升300MB/s,并且,數(shù)據(jù)在FUSE關(guān)鍵路徑上的傳輸過程中,存在多次內(nèi)存拷貝(用戶態(tài)向內(nèi)核態(tài)拷貝、數(shù)據(jù)聚合拷貝、設(shè)備寫、設(shè)備讀等)過程,因此,我們需要盡量減少數(shù)據(jù)的拷貝過程,減少關(guān)鍵路徑上的內(nèi)存操作和數(shù)據(jù)傳輸過程。如圖6所示,我們在FUSE內(nèi)核態(tài)與用戶態(tài)的內(nèi)存操作過程中,通過內(nèi)存映射機(jī)制,打通通信關(guān)鍵路徑上的數(shù)據(jù)傳輸操作,減少數(shù)據(jù)的操作。數(shù)據(jù)通過進(jìn)程間通信機(jī)制,傳輸內(nèi)存操作命令,包括內(nèi)存操作相關(guān)元數(shù)據(jù),通過地址映射機(jī)制,保證內(nèi)核態(tài)與用戶態(tài)之間的數(shù)據(jù)共享,減少數(shù)據(jù)操作。數(shù)據(jù)在傳輸過程中,經(jīng)歷多次內(nèi)存的申請和釋放操作,嚴(yán)重的影響了系統(tǒng)的性能,并且容易造成內(nèi)存碎片,因此,我們基于數(shù)據(jù)聚合的需求,構(gòu)建多個(gè)內(nèi)存鏈表,每個(gè)鏈表定制不同的內(nèi)存大小,定制適用于FUSE的內(nèi)存分配器,系統(tǒng)建立時(shí)預(yù)先申請內(nèi)存空間,內(nèi)存鏈表使用達(dá)到上限時(shí),自動(dòng)異步申請內(nèi)存,添加到內(nèi)存鏈表中,當(dāng)系統(tǒng)內(nèi)存缺乏時(shí),定期釋放內(nèi)存鏈表中的內(nèi)存空間,內(nèi)存的申請采用簡單的先進(jìn)先出機(jī)制,使用簡單的緩存策略,減少系統(tǒng)的負(fù)擔(dān)。如圖7所示,基于KVM的多虛擬機(jī)云計(jì)算環(huán)境,通過將宿主機(jī)的“/dev/fuse”設(shè)備映射到虛擬機(jī)中,結(jié)合圖4的多通路機(jī)制,構(gòu)建多虛擬機(jī)映射、多通路的fuse,數(shù)據(jù)處理下移到宿主機(jī)進(jìn)行處理,將fusemount操作剝離到虛擬機(jī)中,虛擬機(jī)涉及操作僅限在數(shù)據(jù)的傳輸,減少虛擬機(jī)的性能要求,更好的進(jìn)行其他業(yè)務(wù),fuse的正常處理在宿主機(jī)端進(jìn)行,能夠在宿主機(jī)端更好的發(fā)揮宿主機(jī)的性能,減少虛擬機(jī)帶來的性能損耗。本發(fā)明還提出一種基于kvm的多虛擬機(jī)映射、多通路的FUSE加速系統(tǒng),包括:延遲寫模塊,對現(xiàn)有FUSE內(nèi)核模塊添加延遲寫功能,其中所述返回寫功能包括數(shù)據(jù)在經(jīng)過內(nèi)核時(shí),通過VFS層,在FUSE內(nèi)核模塊進(jìn)行聚合,直接返回到系統(tǒng)調(diào)用,僅當(dāng)聚合數(shù)據(jù)滿足一定大小,或一定時(shí)間不在追加時(shí),再通過“/dev/fuse”設(shè)備傳輸?shù)接脩魬B(tài)客戶端進(jìn)行數(shù)據(jù)落盤操作;掛載模塊,用于對FUSE內(nèi)核模塊進(jìn)行多掛載點(diǎn)掛載。其中,延遲寫模塊回遷LINUXkernel3.16版本中的writeback_cache功能,對現(xiàn)有FUSE內(nèi)核模塊數(shù)據(jù)路徑添加延遲寫功能,進(jìn)一步優(yōu)化函數(shù)架構(gòu),優(yōu)化數(shù)據(jù)通路的內(nèi)存操作,優(yōu)化內(nèi)存聚合粒度。對FUSE內(nèi)核模塊添加返回寫功能,其中所述返回寫功能包括數(shù)據(jù)在經(jīng)過內(nèi)核時(shí),通過VFS層,在FUSE內(nèi)核模塊進(jìn)行聚合,直接返回到系統(tǒng)調(diào)用,僅當(dāng)聚合數(shù)據(jù)滿足一定大小,或一定時(shí)間不在追加時(shí),再通過“/dev/fuse”設(shè)備傳輸?shù)接脩魬B(tài)客戶端進(jìn)行數(shù)據(jù)落盤操作;對FUSE關(guān)鍵路徑上的內(nèi)存相關(guān)操作進(jìn)行接管,通過內(nèi)存映射機(jī)制打通用戶態(tài)內(nèi)核態(tài)數(shù)據(jù)共享機(jī)制,將內(nèi)存空間整合成可用內(nèi)存鏈表,根據(jù)聚合大小,提前申請內(nèi)存空間,打通FUSE數(shù)據(jù)通路的內(nèi)存路徑,打通內(nèi)核態(tài)與用戶態(tài)內(nèi)存通路。當(dāng)FUSE申請內(nèi)存時(shí),直接從鏈表中獲取合適的內(nèi)存塊,內(nèi)存釋放時(shí),重新掛回內(nèi)存鏈表中,通過內(nèi)存塊的管理和映射,打通用戶態(tài)和內(nèi)核態(tài)空間的數(shù)據(jù)共享機(jī)制。降低數(shù)據(jù)路徑上內(nèi)存申請釋放的開銷,降低FUSE數(shù)據(jù)路徑中的內(nèi)存拷貝開銷,降低數(shù)據(jù)傳輸開銷,提升數(shù)據(jù)傳輸效率。其中,掛載模塊對FUSE內(nèi)核模塊進(jìn)行多掛載點(diǎn)掛載。a、通過剝離FUSE模塊功能,通過多虛機(jī)映射機(jī)制將多虛機(jī)數(shù)據(jù)直接映射到宿主機(jī),將虛機(jī)客戶端處理操作下放到宿主機(jī)端,能夠減少虛擬機(jī)CPU、MEM的壓力,空出更多的資源供虛擬機(jī)進(jìn)行計(jì)算處理任務(wù);b、通過多頁聚合、后寫機(jī)制,減少內(nèi)核態(tài)、用戶態(tài)的上下文切換,加速寫的IOPS。數(shù)據(jù)在通過FUSE內(nèi)核模塊時(shí),并發(fā)通過多個(gè)FUSE設(shè)備鏈路進(jìn)行通信。構(gòu)建多個(gè)內(nèi)存鏈表,每個(gè)鏈表定制不同的內(nèi)存大小,預(yù)先申請內(nèi)存空間,內(nèi)存鏈表使用達(dá)到上限時(shí),自動(dòng)異步申請內(nèi)存,添加到內(nèi)存鏈表中,當(dāng)系統(tǒng)內(nèi)存缺乏時(shí),定期釋放內(nèi)存鏈表中的內(nèi)存空間。數(shù)據(jù)通過進(jìn)程間通信機(jī)制,傳輸內(nèi)存操作命令,包括內(nèi)存操作相關(guān)元數(shù)據(jù)。當(dāng)前第1頁1 2 3 當(dāng)前第1頁1 2 3 
當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1