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

一種虛擬化平臺中的數(shù)據(jù)處理方法及裝置的制造方法

文檔序號:9865301閱讀:552來源:國知局
一種虛擬化平臺中的數(shù)據(jù)處理方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種虛擬化平臺中的數(shù)據(jù)處理方法及裝置。
【背景技術(shù)】
[0002]虛擬化技術(shù)是一種新型的計算模式,它支持在單一硬件平臺上同時運(yùn)行多個隔離的虛擬環(huán)境,通過將不同的服務(wù)部署在這些虛擬環(huán)境中,實現(xiàn)多個服務(wù)聚合在單一物理節(jié)點(diǎn)。
[0003]以開放源代碼虛擬化產(chǎn)品XEN為例,其包括一個虛擬機(jī)監(jiān)控器(英文:VirtualMachine Monitor,簡稱:VMM)、一個特權(quán)虛擬機(jī)(Domain O,簡稱:DomO)和多個客戶虛擬機(jī)(Domain U,簡稱:DomU)。
[0004]VMM運(yùn)行在客戶虛擬機(jī)和硬件之間,DomO與DomU都運(yùn)行在VMM層之上。DomO的特殊之處在于:其具有管理其他DomU的管理工具,以及與VMM通信的接口,從而達(dá)到對虛擬環(huán)境進(jìn)行控制的目的c^DomO端還包括接收DomU硬件訪問信息的接口,稱為后端驅(qū)動(netback),后端驅(qū)動能夠接收同一物理機(jī)上所有的DomU的硬件請求。DomU端還包括向DomO發(fā)送硬件請求的接口,稱為前端驅(qū)動(netfront) ο
[0005]在DomO與DomU之間存在一塊固定的共享內(nèi)存,即輸入/輸出端口(英文:input/output,簡稱:1/0)環(huán),用于DomU與DomO之間傳遞數(shù)據(jù)請求和響應(yīng)。DomO與DomU相互之間交互數(shù)據(jù)請求和響應(yīng)需要通過設(shè)置于VMM上的事件通道(event channel),即DomO與DomU相互之間交互數(shù)據(jù)請求和響應(yīng)都會經(jīng)過DomO〈->VMM〈->DomU。
[0006]前端驅(qū)動會事先申請內(nèi)存空間,將內(nèi)存地址攜帶在數(shù)據(jù)請求(英文:request,簡稱:req)中放置到1環(huán)上。發(fā)往虛擬機(jī)的外部數(shù)據(jù)包(即發(fā)往DomU的數(shù)據(jù)包)首先會到達(dá)由VMM管理的物理網(wǎng)卡(NIC),VMM會通過event channel方式發(fā)送一個中斷請求到DomOc3DomO會對此中斷進(jìn)行處理,封裝相應(yīng)的數(shù)據(jù)包為網(wǎng)絡(luò)套接字包緩存(英文:Socket Buffer,簡稱:skb),并通過netback放置到一個skb隊列中(skb_list)。
[0007]此后,運(yùn)行于DomO的一個獨(dú)立的內(nèi)核接收線程(vif-rx-qX)會從此skb隊列中獲取該數(shù)據(jù)包,并拷貝數(shù)據(jù)包中包括的數(shù)據(jù)到10環(huán)上的數(shù)據(jù)請求(req)攜帶的內(nèi)存地址對應(yīng)的內(nèi)存空間中,然后將拷貝數(shù)據(jù)對應(yīng)的內(nèi)存地址攜帶在數(shù)據(jù)響應(yīng)中(英文:response,簡稱:rsp)放置到10環(huán)上之前數(shù)據(jù)請求(req)所占用的位置,并通過event channel發(fā)送通知消息來通知DomU的netfront anetfront會從10環(huán)上取出數(shù)據(jù)響應(yīng)(rsp),獲取數(shù)據(jù)響應(yīng)對應(yīng)的內(nèi)存地址存儲的數(shù)據(jù)包,并完成數(shù)據(jù)包的處理。然后,netfront會再次申請內(nèi)存空間,攜帶內(nèi)存空間的內(nèi)存地址在數(shù)據(jù)請求(req)中并放置到1環(huán)上,以供netback繼續(xù)放置數(shù)據(jù)響應(yīng)(req)。
[0008]需要注意的是,在此過程中,如果netfront處理速度較慢,導(dǎo)致10環(huán)上被數(shù)據(jù)響應(yīng)填滿,導(dǎo)致接收線程無法生成新的數(shù)據(jù)響應(yīng)放置到10環(huán),接收線程就會處于等待狀態(tài),即接收線程休眠,或者Skb隊列中沒有數(shù)據(jù)時,接收線程也會休眠;接收線程休眠時即使skb隊列中有數(shù)據(jù)時也不對數(shù)據(jù)做任何處理。因此,每次在有新數(shù)據(jù)包到達(dá)物理網(wǎng)卡并由DomO處理放置到Skb隊列后,netback均會喚醒接收線程從而使得接收線程對skb隊列中的數(shù)據(jù)進(jìn)行處理。相應(yīng)的,當(dāng)DomU的netfront從1環(huán)上讀取并處理數(shù)據(jù),并申請內(nèi)存空間并生成新的數(shù)據(jù)請求放置到1環(huán)上。由于netfront不確定接收線程是否處于休眠狀態(tài),因此netfront先需要通過event channel通知到DomO來喚醒接收線程。而DomU的每次event channel操作,均會造成DomU的退出,而虛擬化環(huán)境下,DomU頻繁的退出正是需要盡量避免的。后端驅(qū)動頻繁喚醒接收線程以及DomU頻繁的退出均是造成現(xiàn)有網(wǎng)絡(luò)前后端性能較低的一個重要因素。

【發(fā)明內(nèi)容】

[0009]本發(fā)明實施例提供一種虛擬化平臺中的數(shù)據(jù)處理方法及裝置,用于解決現(xiàn)有技術(shù)存在的后端驅(qū)動頻繁喚醒接收線程以及DomU頻繁的退出,從而造成現(xiàn)有網(wǎng)絡(luò)前后端性能低下的問題。
[0010]第一方面,本發(fā)明實施例提供了一種虛擬化平臺中的數(shù)據(jù)處理方法,該方法包括:[0011 ] DomO的后端驅(qū)動接收VMM發(fā)來的第一數(shù)據(jù)包;其中VMM通過VMM與后端驅(qū)動之間的事件通道向后端驅(qū)動發(fā)送第一數(shù)據(jù)包。
[0012]所述后端驅(qū)動將接收到的所述第一數(shù)據(jù)包處理后存儲在skb隊列后,在確定所述DomO的接收線程所處的模式為輪詢模式時,無需喚醒所述接收線程,所述輪詢模式用于標(biāo)識接收線程處于非休眠狀態(tài)。
[0013]在現(xiàn)有技術(shù)中后端驅(qū)動不知道接收線程是否休眠,因此所述后端驅(qū)動將接收到的所述第一數(shù)據(jù)包處理后存儲在skb隊列之后,需要喚醒接收線程,但利用本發(fā)明實施例提供的方案,所述后端驅(qū)動在確定所述DomO的接收線程所處的模式為輪詢模式時,確定了接收線程目前處于非休眠狀態(tài),因此無需喚醒所述接收線程,從而避免了后端驅(qū)動頻繁喚醒接收線程。
[0014]在其中一種可能的設(shè)計中,后端驅(qū)動確定所述接收線程所處的模式為輪詢模式,可以通過如下方式實現(xiàn):
[0015]所述后端驅(qū)動在被允許讀取所述接收線程所處的模式時,讀取所述接收線程所處的模式為輪詢模式;或者,
[0016]所述后端驅(qū)動在被禁止讀取所述接收線程所處的模式時,則等待預(yù)定時間后,再次嘗試讀取所述接收線程所處的模式,直到被允許且讀取到所述接收線程所處的模式為輪詢模式。
[0017]其中,所述接收線程所處的模式可以存儲在所述后端驅(qū)動與所述接收線程之間的共享變量中。所述后端驅(qū)動嘗試向所述共享內(nèi)存讀取所述接收線程所處的模式時,在被允許時,讀取到所述接收線程所處的模式。如果被禁止,則所述后端驅(qū)動等待預(yù)定時間后,再次嘗試向所述共享內(nèi)存讀取所述接收線程所處的模式,直到被允許且讀取到所述接收線程所處的模式。
[0018]由于所述接收線程可以被多個后端驅(qū)動使用。因此在其他后端驅(qū)動在對所述接收線程的所處的模式修改時,所述后端驅(qū)動被禁止讀取所述接收線程所處的模式,因此,能夠保證所述后端驅(qū)動不會讀取到接收線程的錯誤模式而出現(xiàn)處理錯誤。
[0019]在其中一種可能的設(shè)計中,所述后端驅(qū)動在確定所述DomO的接收線程所處的模式為輪詢模式之后,還包括:
[0020]在確定skb隊列中的剩余內(nèi)存空間不小于第二空間閾值且確定接收線程處于所述輪詢模式的時間達(dá)到時間閾值時,將所述接收線程所處的模式由所述輪詢模式修改為所述非輪詢模式,所述非輪詢模式用于標(biāo)識所述接收線程在所述skb隊列為空或者在用戶虛擬機(jī)DomU的前端驅(qū)動與所述后端驅(qū)動之間的共享內(nèi)存為滿時處于休眠狀態(tài)。
[0021]上述設(shè)計中,在確定skb隊列中的剩余內(nèi)存空間不小于第二空間閾值且確定接收線程處于所述輪詢模式的時間達(dá)到時間閾值,也就是說skb隊列中在這段時間內(nèi)接收線程處理的數(shù)據(jù)包數(shù)量較小,因此可以將所述接收線程所處的模式由所述輪詢模式修改為所述非輪詢模式,也就是在skb隊列為空時允許接收線程休眠,從而能夠使得接收線程不會長期處于工作狀態(tài)而浪費(fèi)資源。
[0022]在其中一種可能的設(shè)計中,所述方法還可以包括:所述后端驅(qū)動接收VMM的事件通道發(fā)送的第二數(shù)據(jù)包;所述后端驅(qū)動將接收到的所述第二數(shù)據(jù)包處理后存儲在skb隊列中之后,在確定skb隊列中的剩余內(nèi)存空間小于第一空間閾值且確定所述接收線程所處的模式為非輪詢模式時,將所述接收線程所處的模式由非輪詢模式修改為輪詢模式,所述非輪詢模式用于標(biāo)識所述接收線程在所述skb隊列為空或者在用戶虛擬機(jī)DomU的前端驅(qū)動與所述后端驅(qū)動之間的共享內(nèi)存為滿時處于休眠狀態(tài);所述后端驅(qū)動喚醒所述接收線程。
[0023]上述設(shè)計中,在確定skb隊列中的剩余內(nèi)存空間小于第二空間閾值且確定接收線程處于所述非輪詢模式,也就是說skb隊列中在這段時間內(nèi)接收線程處理的數(shù)據(jù)包數(shù)量較大,將所述接收線程所處的模式由所述非輪詢模式修改為所述輪詢模式,也就是強(qiáng)制在接收線程為輪詢模式時不去休眠,從而使得后端驅(qū)動在知道接收線程為輪詢模式時,不再需要喚醒接收線程,提高了后端的性能。
[0024]在其中一種可能的設(shè)計中,所述后端驅(qū)動在對所述接收線程所處的模式修改時,對所述接收線程所處的模式設(shè)置寫鎖,所述寫鎖用于禁止其他后端驅(qū)動以及所述接收線程讀取所述接收線程所處的模式,并
[0025]在對所述接收線程所處的模式修改完成后,解除所述寫鎖。
[0026]由于所述接收線程可以被多個后端驅(qū)動使用。因此在其他特權(quán)虛擬機(jī)的后端驅(qū)動對所述接收線程所處的模式進(jìn)行修改時,可以對所述接收線程所處的模式設(shè)置寫鎖,所述寫鎖,用于禁止除所述對所述接收線程的模式進(jìn)行修改的后端驅(qū)動以外的其他后端驅(qū)動以及所述接收線程讀取所述接收線程所處的模式。那么在對所述接收線程所處的模式修改完成后,解除所述寫鎖。通過設(shè)置寫鎖可以保證在所述接收線程的模式被修改時,其他的后端驅(qū)動以及所述接收線程不會讀取到錯誤的模式而出現(xiàn)錯誤。
[0027]第二方面,本發(fā)明實施例還提供了一種虛擬化平臺中的數(shù)據(jù)處理方法,該方法包括:
[0028]DomO的接收線程嘗試對skb隊列中的數(shù)據(jù)包進(jìn)行處理時,確定skb隊列為空或者確定DomU的前端驅(qū)動與所述DomO的后端驅(qū)動之間的共享內(nèi)存為滿時,讀取所述接收線程需處于的模式;
[0029]所述接收線程在讀取到所述模式為輪詢模式時,無需休眠;所述輪詢模式用于標(biāo)識接收線程處于非休眠狀態(tài)。
[0030]在現(xiàn)有技術(shù)中確定skb隊列為空或者確定DomU的前端驅(qū)動與所述DomO的后端驅(qū)動之間的共享內(nèi)存為滿,接收線程一定休眠,在本發(fā)明實施例提供的方案中,接收線程在確定模式為輪詢模式時,不會去休眠,也就是接收線程在輪詢模式時,無論是什么情況下均不會休眠。保證后端驅(qū)動和前端驅(qū)動在輪詢模式時不去喚醒接收線程,提高了前后端驅(qū)動的接收性能。
[0031]在其中一種可能的設(shè)計中,所述接收線程在讀取到所述模式為輪詢模式后,還包括:
[0032]所述接收線程確定上一次讀取到的所述接收線程需處于的模式為非輪詢模式時,所述接收線程向用戶虛擬機(jī)DomU的前端驅(qū)動發(fā)送用于通知所述接收線程的模式由非輪詢模式更改為輪詢模式的通知信息;
[0033]所述非輪詢模式用于標(biāo)識所述接收線程在所述skb隊列為空或者在用戶虛擬機(jī)DomU的前端驅(qū)動與所述后端驅(qū)動之間的共享內(nèi)存為滿時處于休眠狀態(tài)。
[0034]在現(xiàn)有技術(shù)中,前端驅(qū)動在生成數(shù)據(jù)請求并放置在前端驅(qū)動與后端驅(qū)動之間的共享內(nèi)存之后,都會嘗試喚醒接收線程。而在本發(fā)明實施例中,由于接收線程,在確定自身所處的模式發(fā)生變化時,已經(jīng)通知前端驅(qū)動所述接收線程是由非輪詢模式變?yōu)檩喸兡J?,因此,前端?qū)動可以將所述接收線程的模式存儲下來。從而前端驅(qū)動生成第一數(shù)據(jù)請求放置在所述前端驅(qū)動與后端驅(qū)動之間的共享內(nèi)存之后,讀取自身存儲的所述接收線程的模式,在確定讀取到所述接收線程的模式為輪詢模式時,無需向所述DomO的
當(dāng)前第1頁1 2 3 4 5 6 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1