本發(fā)明涉網(wǎng)絡(luò)傳輸技術(shù)領(lǐng)域,特別是涉及一種配置虛擬機(jī)網(wǎng)卡速率的方法,和一種配置虛擬機(jī)網(wǎng)卡速率的裝置。
背景技術(shù):
隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展,越來(lái)越多的用戶會(huì)通過(guò)軟件模擬具有完整硬件系統(tǒng)功能的、運(yùn)行在一個(gè)完全隔離環(huán)境中的完整計(jì)算機(jī)系統(tǒng),這樣便使得用戶可以將一臺(tái)物理服務(wù)器虛擬化為多個(gè)虛擬機(jī),以提高服務(wù)器資源利用率,降低使用成本。
在現(xiàn)有技術(shù)中,通常會(huì)在物理服務(wù)器內(nèi),服務(wù)器管理員或應(yīng)用軟件使用特定工具軟件來(lái)獲取物理網(wǎng)卡的最大傳輸速率(網(wǎng)卡限速),例如,通過(guò)在linux系統(tǒng)下查詢及設(shè)置網(wǎng)卡參數(shù)的命令ethtool,或,通過(guò)讀取sys/class/net/ethx/speed等字段來(lái)獲取所安裝網(wǎng)卡的傳輸速率。
然而,在虛擬機(jī)內(nèi),采用上述方法一般無(wú)法獲取到虛擬網(wǎng)卡的實(shí)際最大傳輸速率,這是因?yàn)樵谔摂M化的環(huán)境下,虛擬機(jī)內(nèi)的虛擬網(wǎng)卡一般沒(méi)有速率指標(biāo),即便有速率指標(biāo),該速率指標(biāo)也不具備實(shí)際參考價(jià)值,因?yàn)樘摂M網(wǎng)卡的速率指標(biāo)也與物理網(wǎng)卡的速率指標(biāo)不同,所以也無(wú)法通過(guò)虛擬網(wǎng)卡的速率指標(biāo)使虛擬機(jī)獲得實(shí)際帶寬。
技術(shù)實(shí)現(xiàn)要素:
鑒于上述問(wèn)題,提出了本發(fā)明實(shí)施例以便提供一種克服上述問(wèn)題或者至少部分地解決上述問(wèn)題的一種配置虛擬機(jī)網(wǎng)卡速率的方法,和一種配置虛擬機(jī)網(wǎng)卡速率的裝置。
依據(jù)本發(fā)明的一個(gè)方面,提供了一種配置虛擬機(jī)網(wǎng)卡速率的方法,所述虛擬機(jī)中設(shè)置有虛擬網(wǎng)卡,以及,用于配置所述虛擬網(wǎng)卡傳輸速率的內(nèi)部接口,所述內(nèi)部接口被配置為允許與物理機(jī)中用于獲取傳輸速率的外部接口進(jìn)行通信,所述方法包括:
在所述虛擬機(jī)啟動(dòng)后,通過(guò)所述內(nèi)部接口配置所述虛擬網(wǎng)卡的初始傳輸速率,并將所述初始傳輸速率保存在所述虛擬網(wǎng)卡中;
在所述虛擬機(jī)運(yùn)行過(guò)程中,若需要修改所述虛擬網(wǎng)卡傳輸速率,則調(diào)用所述外部接口獲取目標(biāo)傳輸速率后,連接所述內(nèi)部接口重新配置所述虛擬網(wǎng)卡的目標(biāo)傳輸速率。
優(yōu)選地,其特征在于,所述內(nèi)部接口通過(guò)如下方式生成:
獲取所述虛擬網(wǎng)卡的系統(tǒng)文件;
在所述系統(tǒng)文件中增添指定字段;
將所述增添了指定字段后的系統(tǒng)文件作為內(nèi)部接口。
優(yōu)選地,其特征在于,所述將所述初始傳輸速率保存在所述虛擬網(wǎng)卡中的步驟包括:
從所述內(nèi)部接口的指定字段中讀取所述初始傳輸速率;
將所述初始傳輸速率保存在所述虛擬網(wǎng)卡中。
優(yōu)選地,所述連接所述內(nèi)部接口重新配置所述虛擬網(wǎng)卡的目標(biāo)傳輸速率的步驟包括:
采用所述目標(biāo)傳輸速率替換所述內(nèi)部接口的指定字段中的初始傳輸速率;
將所述目標(biāo)傳輸速率保存至所述虛擬網(wǎng)卡。
優(yōu)選地,還包括:
所述虛擬機(jī)基于所述虛擬網(wǎng)卡的目標(biāo)傳輸速率進(jìn)行通信。
優(yōu)選地,所述目標(biāo)傳輸速率包括外部網(wǎng)絡(luò)的實(shí)時(shí)速率,或,預(yù)設(shè)的限速速率。
優(yōu)選地,還包括:
運(yùn)行在虛擬機(jī)中的應(yīng)用程序連接所述內(nèi)部接口獲取所述虛擬網(wǎng)卡的初始傳輸速率;
或者,運(yùn)行在虛擬機(jī)中的應(yīng)用程序連接所述內(nèi)部接口獲取所述虛擬網(wǎng)卡的目標(biāo)傳輸速率。
根據(jù)本發(fā)明的另一方面,提供了一種配置虛擬機(jī)網(wǎng)卡速率的裝置,所述虛擬機(jī)中設(shè)置有虛擬網(wǎng)卡,以及,用于配置所述虛擬網(wǎng)卡傳輸速率的內(nèi)部接口,所述內(nèi)部接口被配置為允許與物理機(jī)中用于獲取傳輸速率的外部接口進(jìn)行通信,所述裝置包括:
初始傳輸速率配置模塊,用于在所述虛擬機(jī)啟動(dòng)后,通過(guò)所述內(nèi)部接口配置所述虛擬網(wǎng)卡的初始傳輸速率,并將所述初始傳輸速率保存在所述虛擬網(wǎng)卡中;
目標(biāo)傳輸速率配置模塊,用于在所述虛擬機(jī)運(yùn)行過(guò)程中,若需要修改所述虛擬網(wǎng)卡傳輸速率,則調(diào)用所述外部接口獲取目標(biāo)傳輸速率后,連接所述內(nèi)部接口重新配置所述虛擬網(wǎng)卡的目標(biāo)傳輸速率。
優(yōu)選地,所述虛擬機(jī)包括內(nèi)部接口生成模塊,所述內(nèi)部接口生成模塊包括:
系統(tǒng)文件獲取子模塊,用于獲取所述虛擬網(wǎng)卡的系統(tǒng)文件;
指定字段增添子模塊,用于在所述系統(tǒng)文件中增添指定字段;
內(nèi)部接口確定子模塊,用于將所述增添了指定字段后的系統(tǒng)文件作為內(nèi)部接口。
優(yōu)選地,所述初始傳輸速率配置模塊包括:
初始傳輸速率讀取子模塊,用于從所述內(nèi)部接口的指定字段中讀取所述初始傳輸速率;
初始傳輸速率保存子模塊,用于將所述初始傳輸速率保存在所述虛擬網(wǎng)卡中。
優(yōu)選地,所述目標(biāo)傳輸速率配置模塊包括:
速率替換子模塊,用于采用所述目標(biāo)傳輸速率替換所述內(nèi)部接口的指定字段中的初始傳輸速率;
目標(biāo)傳輸速率保存子模塊,用于將所述目標(biāo)傳輸速率保存至所述虛擬網(wǎng)卡。
優(yōu)選地,還包括:
所述虛擬機(jī)基于所述虛擬網(wǎng)卡的目標(biāo)傳輸速率進(jìn)行通信。
優(yōu)選地,所述目標(biāo)傳輸速率包括外部網(wǎng)絡(luò)的實(shí)時(shí)速率,或,預(yù)設(shè)的限速速率。
優(yōu)選地,所述虛擬機(jī)還包括如下模塊:
應(yīng)用程序初始傳輸速率獲取模塊,用于運(yùn)行在虛擬機(jī)中的應(yīng)用程序連接所述內(nèi)部接口獲取所述虛擬網(wǎng)卡的初始傳輸速率;
應(yīng)用程序目標(biāo)傳輸速率獲取模塊,用于運(yùn)行在虛擬機(jī)中的應(yīng)用程序連接所述內(nèi)部接口獲取所述虛擬網(wǎng)卡的目標(biāo)傳輸速率。
本發(fā)明實(shí)施例包括以下優(yōu)點(diǎn):
1、本發(fā)明實(shí)施例中的虛擬機(jī)提供用于設(shè)置虛擬網(wǎng)卡速率的接口,可用于讀取虛擬網(wǎng)卡的速率,還可以用于設(shè)置虛擬網(wǎng)卡的速率。
2、本發(fā)明實(shí)施例中的虛擬機(jī)內(nèi)操作系統(tǒng)的虛擬網(wǎng)卡驅(qū)動(dòng)可供物理機(jī)從物理機(jī)系統(tǒng)和虛擬機(jī)系統(tǒng)之間的中間軟件層hypervisor中獲取虛擬網(wǎng)卡速率,以及,可供應(yīng)用程序獲取虛擬網(wǎng)卡速率的接口。
3、在本發(fā)明實(shí)施例中,通過(guò)虛擬網(wǎng)卡速率的接口對(duì)虛擬網(wǎng)卡目標(biāo)傳輸速率進(jìn)行修改時(shí),虛擬機(jī)內(nèi)操作系統(tǒng)的虛擬網(wǎng)卡驅(qū)動(dòng)能夠同步該修改。
4、在本發(fā)明實(shí)施例中,虛擬機(jī)提供用于設(shè)置虛擬網(wǎng)卡速率的接口兼容現(xiàn)有的獲取網(wǎng)卡速率的接口,無(wú)需再對(duì)應(yīng)用軟件進(jìn)行修改即可讀取到虛擬網(wǎng)卡的目標(biāo)傳輸速率。
5、運(yùn)用本發(fā)明實(shí)施例,虛擬機(jī)可以通過(guò)虛擬機(jī)提供用于設(shè)置虛擬網(wǎng)卡速率的接口獲得物理機(jī)的實(shí)際速率,從而能夠動(dòng)態(tài)調(diào)整虛擬機(jī)應(yīng)用程序能夠使用的帶寬,更好地利用好網(wǎng)絡(luò)帶寬資源,達(dá)到充分利用網(wǎng)絡(luò)帶寬資源的目的。
附圖說(shuō)明
圖1是本發(fā)明實(shí)施例一的一種配置虛擬機(jī)網(wǎng)卡速率的方法實(shí)施例的步驟流程圖;
圖2是本發(fā)明實(shí)施例二的一種獲取虛擬機(jī)網(wǎng)卡速率的方法實(shí)施例的步驟流程圖;
圖3是本發(fā)明實(shí)施例三的一種確定虛擬機(jī)網(wǎng)卡速率的方法實(shí)施例的步驟流程圖;
圖4是本發(fā)明實(shí)施例四的一種設(shè)置虛擬機(jī)網(wǎng)卡速率的方法實(shí)施例的步驟流程圖;
圖5是本發(fā)明實(shí)施例五的一種配置虛擬機(jī)網(wǎng)卡速率的裝置實(shí)施例的結(jié)構(gòu)框圖;
具體實(shí)施方式
為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和具體實(shí)施方式對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說(shuō)明。
本發(fā)明實(shí)施例的核心構(gòu)思之一在于,修改虛擬機(jī)軟件,增加設(shè)置虛擬網(wǎng)卡初始傳輸速率的命令行參數(shù),這樣虛擬機(jī)啟動(dòng)之后,每塊虛擬網(wǎng)卡就有一個(gè)初始傳輸速率的限速值,修改虛擬機(jī)內(nèi)運(yùn)行的操作系統(tǒng)的虛擬網(wǎng)卡驅(qū)動(dòng),允許虛擬機(jī)操作系統(tǒng)把上述初始傳輸速率經(jīng)由內(nèi)部接口提供給應(yīng)用程序;修改虛擬機(jī)軟件,允許通過(guò)虛擬機(jī)的外部接口,在虛擬機(jī)運(yùn)行狀態(tài)下,動(dòng)態(tài)地修改虛擬網(wǎng)卡的限速值,并且虛擬機(jī)操作系統(tǒng)能夠?qū)崟r(shí)地把修改后的限速值通過(guò)內(nèi)部接口提供給應(yīng)用程序。
實(shí)施例一
參考圖1,示出了本發(fā)明的一種配置虛擬機(jī)網(wǎng)卡速率的方法實(shí)施例的步驟流程圖,具體可以包括如下步驟:
步驟101,在所述虛擬機(jī)啟動(dòng)后,通過(guò)所述內(nèi)部接口配置所述虛擬網(wǎng)卡的初始傳輸速率,并將所述初始傳輸速率保存在所述虛擬網(wǎng)卡中;
在具體實(shí)現(xiàn)中,本發(fā)明實(shí)施例可以應(yīng)用在計(jì)算機(jī)的虛擬環(huán)境中,在虛擬環(huán)境中,每一個(gè)環(huán)境都相當(dāng)于一個(gè)獨(dú)立的操作系統(tǒng),用戶可以在虛擬環(huán)境中安裝應(yīng)用程序,以及,保存資料等等。
在本發(fā)明實(shí)施例中,內(nèi)部接口通過(guò)如下方式生成:獲取虛擬網(wǎng)卡的系統(tǒng)文件;在系統(tǒng)文件中增添指定字段;將增添了指定字段后的系統(tǒng)文件作為內(nèi)部接口。
在實(shí)際應(yīng)用中,本發(fā)明實(shí)施例可以在虛擬機(jī)中增加用于設(shè)置虛擬網(wǎng)卡速率的內(nèi)部接口,該內(nèi)部接口可以在虛擬機(jī)啟動(dòng)的時(shí)候給虛擬網(wǎng)卡配置一個(gè)初始傳輸速率。
例如,在linux操作系統(tǒng)中,系統(tǒng)文件是一個(gè)由/sys/class/net/ethx/多個(gè)字段組成的sysfs虛擬文件,在獲取sysfs虛擬文件后,對(duì)其增添指定字段speed字段,使其變成由/sys/class/net/ethx/speed多個(gè)字段組成的sysfs虛擬文件,修改后的sysfs虛擬文件即為內(nèi)部接口,通過(guò)讀取這個(gè)文件的內(nèi)容獲得對(duì)應(yīng)網(wǎng)卡的速率值。
在本發(fā)明實(shí)施例中,可以通過(guò)如下方式將初始傳輸速率保存在虛擬網(wǎng)卡中:從內(nèi)部接口的指定字段中讀取初始傳輸速率,將初始傳輸速率保存在虛擬網(wǎng)卡中。
在具體實(shí)現(xiàn)中,本發(fā)明實(shí)施例可以在使用命令行參數(shù)生成虛擬機(jī)的虛擬硬件配置后讀取初始傳輸速率。
為使本領(lǐng)域技術(shù)人員更好的理解本發(fā)明,下面是本發(fā)明實(shí)施例提供一個(gè)具體的參考示例:
例如,在模擬處理器qemu中,對(duì)其命令行參數(shù)增添指定字段speed字段后,在一個(gè)虛擬網(wǎng)卡的命令行配置為:--netdevvirtio-net,mac=00:22:4a:df:cc:d2,id=veth0,speed=1000說(shuō)明虛擬機(jī)設(shè)置有一個(gè)虛擬網(wǎng)卡,型號(hào)為virtio-net,mac地址為00:22:4a:df:cc:d2,最大傳輸速率為1000mbps,其中,speed就是增添的用于傳入虛擬網(wǎng)卡的初始傳輸速率的命令行字段,該字段上的值在虛擬機(jī)啟動(dòng)運(yùn)行后將被保存在虛擬機(jī)的虛擬網(wǎng)卡中。
當(dāng)然,上述示例只作為一個(gè)參考示例,本領(lǐng)域技術(shù)人員通過(guò)生成內(nèi)部接口也是可行的,本發(fā)明對(duì)此不作限制。
步驟102,在所述虛擬機(jī)運(yùn)行過(guò)程中,若需要修改所述虛擬網(wǎng)卡傳輸速率,則調(diào)用所述外部接口獲取目標(biāo)傳輸速率后,連接所述內(nèi)部接口重新配置所述虛擬網(wǎng)卡的目標(biāo)傳輸速率。
在實(shí)際應(yīng)用中,本發(fā)明實(shí)施例可以在虛擬機(jī)中預(yù)設(shè)一個(gè)用于獲取虛擬網(wǎng)卡目標(biāo)傳輸速率的外部接口,用戶或者物理機(jī)中的外部程序可以通過(guò)外部接口對(duì)虛擬機(jī)傳輸目標(biāo)傳輸速率。
在本發(fā)明的一個(gè)優(yōu)選實(shí)施例中,為了使得虛擬機(jī)既能獲取外部網(wǎng)絡(luò)環(huán)境的真是速率,又能使得用戶可以針對(duì)虛擬機(jī)的速率進(jìn)行限制,目標(biāo)傳輸速率可以包括外部網(wǎng)絡(luò)的實(shí)時(shí)速率,或,預(yù)設(shè)的限速速率。
例如,在qemu的控制端monitor中設(shè)置一個(gè)設(shè)置鏈接速度set_link_speed的api(applicationprogramminginterface,應(yīng)用程序編程接口)作為外部接口,外部接口在獲取到外部網(wǎng)絡(luò)的實(shí)時(shí)速率后,并將獲取到的外部網(wǎng)絡(luò)的實(shí)時(shí)速率作為目標(biāo)傳輸速率,或者,用戶預(yù)先設(shè)置一個(gè)限速速率供標(biāo)外部口讀取,當(dāng)外部口獲取到該限速速率時(shí),將限速速率作為虛擬機(jī)的目標(biāo)傳輸速率。
在本發(fā)明實(shí)施例中,可以通過(guò)如下方式連接內(nèi)部接口重新配置虛擬網(wǎng)卡的目標(biāo)傳輸速率:采用目標(biāo)傳輸速率替換內(nèi)部接口的指定字段中的初始傳輸速率,將目標(biāo)傳輸速率保存至虛擬網(wǎng)卡。
在具體實(shí)現(xiàn)中,本發(fā)明實(shí)施例可以在獲取到目標(biāo)傳輸速率后,調(diào)用外部接口連接內(nèi)部接口,通過(guò)外部接口將目標(biāo)傳輸速率的速率值寫入內(nèi)部接口的指定字段中,替換內(nèi)部接口的指定字段中的初始傳輸速率,并將目標(biāo)傳輸速率的速率值儲(chǔ)存于虛擬網(wǎng)卡中。
例如,在虛擬機(jī)運(yùn)行中,一個(gè)虛擬網(wǎng)卡的命令行配置為:--netdevvirtio-net,mac=00:22:4a:df:cc:d2,id=veth0,speed=1000說(shuō)明該虛擬機(jī)目前最大傳輸速率為1000mbps,如果外部接口獲取到的目標(biāo)傳輸速率為500mbps,則通過(guò)調(diào)用虛擬機(jī)的設(shè)置鏈接速度set_link_speed命令,將內(nèi)部接口的speed字段上的值改為500,該字段上的值將被保存在虛擬機(jī)的虛擬網(wǎng)卡中,作為虛擬網(wǎng)卡的最大傳輸速率。
在本發(fā)明另一個(gè)優(yōu)選實(shí)施例中,還可以使運(yùn)行在虛擬機(jī)中的應(yīng)用程序連接內(nèi)部接口獲取虛擬網(wǎng)卡的初始傳輸速率,或,目標(biāo)傳輸速率。
在實(shí)際應(yīng)用中,本發(fā)明實(shí)施例可以通過(guò)修改虛擬機(jī)軟件實(shí)現(xiàn)代碼,在虛擬機(jī)網(wǎng)卡中配置用于允許部接口從物理機(jī)系統(tǒng)和虛擬機(jī)系統(tǒng)之間的中間軟件層hypervisor中獲取虛擬網(wǎng)卡目標(biāo)傳輸速率的虛擬網(wǎng)卡驅(qū)動(dòng),當(dāng)虛擬機(jī)啟動(dòng)時(shí),虛擬網(wǎng)卡驅(qū)動(dòng)能夠獲取內(nèi)部接口的初始傳輸速率,并允許運(yùn)行在虛擬機(jī)內(nèi)的應(yīng)用程序通過(guò)讀取內(nèi)部接口獲得虛擬網(wǎng)卡的初始傳輸速率。
當(dāng)外部接口獲取目標(biāo)傳輸速率后,虛擬網(wǎng)卡驅(qū)動(dòng)可以獲取到目標(biāo)傳輸速率的速率值,并將目標(biāo)傳輸速率的速率值同步到內(nèi)部接口中,并允許運(yùn)行在虛擬機(jī)內(nèi)的應(yīng)用程序通過(guò)讀取內(nèi)部接口獲得虛擬網(wǎng)卡的目標(biāo)傳輸速率。
例如,在虛擬機(jī)運(yùn)行中,一個(gè)虛擬網(wǎng)卡的命令行配置為:--netdevvirtio-net,mac=00:22:4a:df:cc:d2,id=veth0,speed=1000說(shuō)明該虛擬機(jī)目前最大傳輸速率為1000mbps,這時(shí),運(yùn)行在虛擬機(jī)內(nèi)的應(yīng)用程序的初始傳輸速率為1000mbps,如果外部接口獲取到的目標(biāo)傳輸速率為500mbps,虛擬機(jī)將會(huì)給虛擬網(wǎng)卡驅(qū)動(dòng)發(fā)送一個(gè)配置更改的中斷,虛擬網(wǎng)卡驅(qū)動(dòng)獲得中斷通知后,將從虛擬網(wǎng)卡的,端口讀取到speed的值,并存儲(chǔ)在虛擬網(wǎng)卡的vi->speed字段中,當(dāng)應(yīng)用程序訪問(wèn)內(nèi)部接口/sys/class/net/ethx/speed時(shí),讀取到的就是更新后的vi->speed的值。
在實(shí)際應(yīng)用中運(yùn)用本發(fā)明實(shí)施例,可以在虛擬機(jī)啟動(dòng)后,通過(guò)內(nèi)部接口配置虛擬網(wǎng)卡的初始傳輸速率,在完成初始傳輸速率的配置后,經(jīng)由外部接口獲取虛擬網(wǎng)卡的目標(biāo)傳輸速率,并獲取目標(biāo)傳輸速率后,連接內(nèi)部接口重新配置虛擬網(wǎng)卡的目標(biāo)傳輸速率,從而能在虛擬機(jī)運(yùn)行過(guò)程中動(dòng)態(tài)調(diào)整虛擬網(wǎng)卡的可使用帶寬大小,進(jìn)而實(shí)現(xiàn)了用戶在使用虛擬機(jī)的過(guò)程中能夠更為充分的利用網(wǎng)絡(luò)帶寬資源。
實(shí)施例二
參照?qǐng)D2,示出了本發(fā)明的一種獲取虛擬機(jī)網(wǎng)卡速率的方法實(shí)施例的步驟流程圖,本實(shí)施例基于虛擬機(jī)中的應(yīng)用程序側(cè)進(jìn)行描述,具體可以包括如下步驟:
步驟201,如果運(yùn)行在虛擬機(jī)內(nèi)部的應(yīng)用程序需要讀取所述虛擬機(jī)的虛擬網(wǎng)卡的目標(biāo)傳輸速率,則調(diào)用所述外部接口獲取所述虛擬網(wǎng)卡的目標(biāo)傳輸速率;
在實(shí)際應(yīng)用中,本發(fā)明實(shí)施例可以在運(yùn)行在虛擬機(jī)內(nèi)部的應(yīng)用程序需要讀取虛擬機(jī)的虛擬網(wǎng)卡的目標(biāo)傳輸速率時(shí),通過(guò)外部接口獲取目標(biāo)傳輸速率。
在本發(fā)明的一個(gè)優(yōu)選實(shí)施例中,可以通過(guò)如下方法判斷運(yùn)行在虛擬機(jī)內(nèi)部的應(yīng)用程序是否需要讀取虛擬網(wǎng)卡的目標(biāo)傳輸速率,從而判定是否調(diào)用虛擬機(jī)的外部接口獲取虛擬網(wǎng)卡的目標(biāo)傳輸速率:
判斷運(yùn)行在虛擬機(jī)內(nèi)部的應(yīng)用程序的網(wǎng)絡(luò)帶寬使用率是否達(dá)到預(yù)設(shè)速率閾值,若是,則調(diào)用虛擬機(jī)的接口獲取虛擬網(wǎng)卡的目標(biāo)傳輸速率;
例如,用戶可以設(shè)置合理的網(wǎng)絡(luò)帶寬使用率的報(bào)警閾值,當(dāng)應(yīng)用程序占用過(guò)多帶寬時(shí),調(diào)用外部接口獲取虛擬網(wǎng)卡的目標(biāo)傳輸速率對(duì)虛擬網(wǎng)卡設(shè)置限速,從而避免物理機(jī)帶寬資源被過(guò)度使用或者低效使用。
在本發(fā)明的另一個(gè)優(yōu)選實(shí)施例中,可以通過(guò)如下方法判斷運(yùn)行在虛擬機(jī)內(nèi)部的應(yīng)用程序是否需要讀取虛擬機(jī)的虛擬網(wǎng)卡的目標(biāo)傳輸速率,從而判定是否調(diào)用虛擬機(jī)的接口獲取虛擬網(wǎng)卡的目標(biāo)傳輸速率:
判斷用戶是否重新配置帶寬大小;若是,則調(diào)用虛擬機(jī)的外部接口。
例如,用戶變更帶寬速率時(shí),調(diào)用虛擬機(jī)的外部接口對(duì)虛擬網(wǎng)卡的傳輸速率重新進(jìn)行配置,從而使得虛擬網(wǎng)卡得以根據(jù)物理機(jī)的帶寬速率重新配置限速,進(jìn)而控制運(yùn)行在虛擬機(jī)內(nèi)的應(yīng)用程序的傳輸速率。
當(dāng)然,本領(lǐng)域技術(shù)人員可以通過(guò)上述任意一種或多種方法調(diào)用虛擬機(jī)的接口,本發(fā)明對(duì)此不做限制。
步驟202,經(jīng)由所述內(nèi)部接口讀取所述虛擬機(jī)的虛擬網(wǎng)卡的目標(biāo)傳輸速率。
在實(shí)際應(yīng)用中運(yùn)用本發(fā)明實(shí)施例,可以在運(yùn)行在虛擬機(jī)內(nèi)部的應(yīng)用程序需要讀取虛擬機(jī)的虛擬網(wǎng)卡的目標(biāo)傳輸速率時(shí),調(diào)用外部接口,再經(jīng)由內(nèi)部接口讀取虛擬機(jī)的虛擬網(wǎng)卡的目標(biāo)傳輸速率,實(shí)現(xiàn)了通過(guò)獲取目標(biāo)傳輸速率控制運(yùn)行在虛擬機(jī)的應(yīng)用軟件的傳輸速率。
實(shí)施例三
參照?qǐng)D3,示出了本發(fā)明的一種確定虛擬機(jī)網(wǎng)卡速率的方法實(shí)施例的步驟流程圖,本實(shí)施例基于虛擬機(jī)側(cè)進(jìn)行描述,具體可以包括如下步驟:
步驟301,在虛擬機(jī)啟動(dòng)時(shí),生成所述虛擬網(wǎng)卡的初始傳輸速率;
在本發(fā)明的一個(gè)優(yōu)選實(shí)施例中,還可以通過(guò)如下方式生成虛擬網(wǎng)卡的初始傳輸速率:
方式一,在虛擬網(wǎng)卡中增添命令行參數(shù),生成用于設(shè)置虛擬網(wǎng)卡初始傳輸速率的內(nèi)部接口,采用內(nèi)部接口,生成虛擬網(wǎng)卡的初始傳輸速率。
方式二,在虛擬網(wǎng)卡中增添配置項(xiàng),生成用于設(shè)置虛擬網(wǎng)卡初始傳輸速率的內(nèi)部接口,采用內(nèi)部接口,生成虛擬網(wǎng)卡的初始傳輸速率。
當(dāng)然,本領(lǐng)域技術(shù)人員可以根據(jù)實(shí)際需要采用上述任意一種或多種方式生成虛擬網(wǎng)卡的初始傳輸速率都是可行的,對(duì)此本發(fā)明不作限制。
例如,1.修改qemu,允許虛擬網(wǎng)卡的啟動(dòng)參數(shù)增加一個(gè)speed的字段,以前的啟動(dòng)參數(shù)為-netdevvirtio-net,mac=00:22:4a:df:cc:d2,id=veth0,現(xiàn)改為:-netdevvirtio-net,mac=00:22:4a:df:cc:d2,id=veth0,speed=1000,即增加speed=1000,用來(lái)制定虛擬機(jī)的虛擬網(wǎng)卡的初始傳輸速率為1000mbps。2.修改qemu,在啟動(dòng)之后,從命令行參數(shù)的speed=xxx中解析得到網(wǎng)卡速率,并保存在本地變量中。3.修改虛擬機(jī)的virtio_net網(wǎng)卡驅(qū)動(dòng),在初始化的時(shí)候,從虛擬機(jī)讀區(qū)到該網(wǎng)卡的初始傳輸速率,并保存在一個(gè)本地變量中。
步驟302,在所述虛擬機(jī)運(yùn)行時(shí),調(diào)用所述外部接口獲取目標(biāo)傳輸速率;
在具體實(shí)現(xiàn)中,本發(fā)明實(shí)施例的虛擬機(jī)配置有用于獲取外部網(wǎng)絡(luò)速率的外部接口,該外部接口可以將獲取到的外部網(wǎng)絡(luò)速率作為目標(biāo)傳輸速率配置給虛擬網(wǎng)卡。
例如,修改qemu的monitor實(shí)現(xiàn)代碼,在虛擬機(jī)管理程序hypervisor中增添set_link_speed的api,用于在虛擬機(jī)程序運(yùn)行時(shí),外部控制程序或管理員通過(guò)編程接口實(shí)時(shí)更新虛擬網(wǎng)卡的傳輸速率。
步驟303,采用目標(biāo)傳輸速率配置所述虛擬網(wǎng)卡;
在本發(fā)明實(shí)施例中,當(dāng)虛擬機(jī)運(yùn)行時(shí),外部接口在獲取到目標(biāo)傳輸速率后,虛擬機(jī)的虛擬網(wǎng)卡驅(qū)動(dòng)可以獲得目標(biāo)傳輸速率值,并將目標(biāo)傳輸速率的速率值覆蓋于初始傳輸速率的速率值,再將更新后的速率值保存于虛擬網(wǎng)卡中。
例如,當(dāng)該set_link_speed這個(gè)api被調(diào)用后,api傳入的速率參數(shù)將被保存在本地的變量,并且向虛擬機(jī)操作系統(tǒng)發(fā)出信號(hào),通知網(wǎng)卡的速率有變化。同時(shí),需要修改虛擬機(jī)內(nèi)的網(wǎng)卡驅(qū)動(dòng),讓該驅(qū)動(dòng)監(jiān)聽(tīng)網(wǎng)卡速率變化的事件。當(dāng)速率變化事件發(fā)生時(shí),網(wǎng)卡驅(qū)動(dòng)將從虛擬機(jī)讀取獲得最新的速率,并保存到本地。虛擬機(jī)內(nèi)的應(yīng)用讀/sys/class/net/ethx/speed,將讀到最新的速率。
步驟304,如果檢測(cè)到所述應(yīng)用程序經(jīng)由所述外部接口讀取所述虛擬網(wǎng)卡的目標(biāo)傳輸速率,則在所述外部接口完成對(duì)所述虛擬網(wǎng)卡的配置后,調(diào)用所述應(yīng)用程序經(jīng)由所述內(nèi)部接口讀取所述目標(biāo)傳輸速率。
在本發(fā)明實(shí)施例中,運(yùn)行在虛擬機(jī)內(nèi)應(yīng)用程序可以通過(guò)內(nèi)部接口讀取虛擬網(wǎng)卡中的目標(biāo)傳輸速率值。
例如,可以通過(guò)對(duì)虛擬機(jī)內(nèi)的qemu虛擬化軟件增加set_link_speed的控制命令,允許qemu虛擬化軟件在虛擬機(jī)運(yùn)行過(guò)程中,動(dòng)態(tài)修改virtio-net-pci虛擬網(wǎng)卡的speed設(shè)置;再修改虛擬機(jī)內(nèi)操作系統(tǒng)的virtio-net網(wǎng)卡驅(qū)動(dòng),使虛擬網(wǎng)卡能夠獲得修改speed設(shè)置的通知,并能同步修改sysfs的/sys/class/net/ethx/speed字段。修改后,可以用ethtool等工具獲得的是修改后的速率。
為使本領(lǐng)域技術(shù)人員更好的理解本發(fā)明,下面是本發(fā)明實(shí)施例提供一個(gè)具體的參考示例:
s1,修改qemu,允許虛擬網(wǎng)卡的啟動(dòng)參數(shù)增加一個(gè)speed的字段,以前的啟動(dòng)參數(shù)為-netdevvirtio-net,mac=00:22:4a:df:cc:d2,id=veth0,現(xiàn)改為:-netdevvirtio-net,mac=00:22:4a:df:cc:d2,id=veth0,speed=1000,即增加speed=1000,用來(lái)制定虛擬機(jī)的虛擬網(wǎng)卡的初始傳輸速率為1000mbps。
s2,修改qemu,在啟動(dòng)之后,從命令行參數(shù)的speed=xxx中解析得到網(wǎng)卡速率,并保存在本地變量中。
s3,修改虛擬機(jī)的virtio_net網(wǎng)卡驅(qū)動(dòng),在初始化的時(shí)候,從虛擬機(jī)讀區(qū)到該網(wǎng)卡的初始傳輸速率,并保存在一個(gè)本地變量中。
當(dāng)然,上述示例只作為一個(gè)參考示例,本領(lǐng)域技術(shù)人員通過(guò)其他方式采用虛擬網(wǎng)卡驅(qū)動(dòng)提取目標(biāo)傳輸速率,并將其寫入外部接口中也是可行的,本發(fā)明對(duì)此不作限制。
在實(shí)際應(yīng)用中運(yùn)用本發(fā)明實(shí)施例,可以在虛擬機(jī)啟動(dòng)時(shí),通過(guò)內(nèi)部接口配置虛擬網(wǎng)卡的初始傳輸速率,在完成初始傳輸速率的配置后,經(jīng)由外部接口獲取虛擬網(wǎng)卡的目標(biāo)傳輸速率,再由虛擬網(wǎng)卡驅(qū)動(dòng)讀取目標(biāo)傳輸速率的速率值,并將目標(biāo)傳輸速率的速率值覆蓋于初始傳輸速率的速率值,如果檢測(cè)到應(yīng)用程序經(jīng)由外部接口讀取虛擬網(wǎng)卡的目標(biāo)傳輸速率,則在外部接口完成對(duì)虛擬網(wǎng)卡的配置后,調(diào)用應(yīng)用程序經(jīng)由內(nèi)部接口讀取目標(biāo)傳輸速率,從而能夠動(dòng)態(tài)調(diào)整虛擬網(wǎng)卡對(duì)應(yīng)用程序的傳輸速率,更好地利用好網(wǎng)絡(luò)帶寬資源,達(dá)到充分利用網(wǎng)絡(luò)帶寬資源的目的。
實(shí)施例四
參照?qǐng)D4,示出了本發(fā)明的一種設(shè)置虛擬機(jī)網(wǎng)卡速率的方法實(shí)施例的步驟流程圖,本實(shí)施例基于物理機(jī)側(cè)進(jìn)行描述,具體可以包括如下步驟:
步驟401,獲取當(dāng)前網(wǎng)絡(luò)環(huán)境的實(shí)時(shí)速率;
步驟402,采用所述外部接口,將所述實(shí)時(shí)速率設(shè)置為所述虛擬網(wǎng)卡的目標(biāo)傳輸速率。
本發(fā)明實(shí)施例中的虛擬機(jī)內(nèi)操作系統(tǒng)的虛擬網(wǎng)卡驅(qū)動(dòng)可供物理機(jī)從物理機(jī)系統(tǒng)和虛擬機(jī)系統(tǒng)之間的中間軟件層hypervisor中獲取虛擬網(wǎng)卡速率,以及,可供虛擬機(jī)設(shè)置虛擬網(wǎng)卡速率的外部接口。
在本發(fā)明實(shí)施例中,本發(fā)明可以實(shí)現(xiàn)操作人員通過(guò)物理機(jī)經(jīng)由外部接口將所述實(shí)時(shí)速率傳送至虛擬機(jī)中。
在實(shí)際應(yīng)用中,可以在虛擬機(jī)中sysfs系統(tǒng)文件的/sys/class/net/ethx/speed字段的初始值就是創(chuàng)建虛擬機(jī)時(shí)候,通過(guò)命令行傳入speed字段的值,在虛擬機(jī)運(yùn)行中,作為所述虛擬網(wǎng)卡的目標(biāo)傳輸速率。
例如,用戶在虛擬機(jī)運(yùn)行中,將虛擬機(jī)的目標(biāo)傳輸速率降低為500mbps,則通過(guò)調(diào)用虛擬機(jī)的set_link_speed命令,將虛擬機(jī)的虛擬網(wǎng)卡的speed值改為500,這個(gè)改動(dòng)會(huì)觸發(fā)虛擬機(jī)內(nèi)的虛擬網(wǎng)卡驅(qū)動(dòng)更新vi->speed的值,從虛擬網(wǎng)卡中讀到最新的speed值500。當(dāng)虛擬機(jī)內(nèi)的應(yīng)用程序讀取/sys/class/net/ethx/speed時(shí),就能獲得更新后的速率500mbps。
為使本領(lǐng)域技術(shù)人員更好地理解本申請(qǐng),以下通過(guò)一個(gè)具體操作的示例進(jìn)一步說(shuō)明本申請(qǐng)實(shí)施例。
s1,修改qemu虛擬化軟件,virtio-net虛擬網(wǎng)卡增加speed字段,允許通過(guò)命令行傳入虛擬網(wǎng)卡的速率。
例如,一個(gè)虛擬網(wǎng)卡的命令行配置為:
--netdevvirtio-net,mac=00:22:4a:df:cc:d2,id=veth0,speed=1000
說(shuō)明給虛擬機(jī)配置一個(gè)虛擬網(wǎng)卡,型號(hào)為virtio-net,mac地址為00:22:4a:df:cc:d2,最大傳輸速率為1000mbps。這里speed就是用戶增加的傳入虛擬網(wǎng)卡初始傳輸速率的命令行字段。這個(gè)值在虛擬機(jī)啟動(dòng)運(yùn)行后將被保存在虛擬機(jī)的虛擬網(wǎng)卡中。
s2,修改虛擬機(jī)內(nèi)操作系統(tǒng)的virtio-net網(wǎng)卡驅(qū)動(dòng),允許從qemu虛擬機(jī)的獲取speed字段的設(shè)置,并更新sysfs的/sys/class/net/ethx/speed字段,允許ethtool等工具能獲取到該速率。
例如,修改虛擬機(jī)內(nèi)的virtio-net虛擬網(wǎng)卡的驅(qū)動(dòng),該驅(qū)動(dòng)中需要實(shí)現(xiàn)ethtool_ops.get_settings接口,該接口在虛擬機(jī)內(nèi)應(yīng)用程序讀取/sys/class/net/ethx/speed時(shí)被調(diào)用,實(shí)現(xiàn)該接口的具體步驟包括:
調(diào)用ethtool_cmd_speed_set方法設(shè)置傳入的ethtool_cmd結(jié)構(gòu)體的speed字段的值,該值最終由應(yīng)用程序訪問(wèn)sysfs的/sys/class/net/ethx/speed字段獲取。其中,vi->speed就是從虛擬機(jī)的虛擬網(wǎng)卡獲取的speed值,其中,vi->speed就是從虛擬機(jī)的虛擬網(wǎng)卡獲取的speed值。
s3,修改qemu虛擬化軟件,增加set_link_speed的控制命令,允許在qemu虛擬機(jī)運(yùn)行過(guò)程中,動(dòng)態(tài)修改virtio-net-pci虛擬網(wǎng)卡的speed設(shè)置,修改虛擬機(jī)內(nèi)操作系統(tǒng)的virtio-net網(wǎng)卡驅(qū)動(dòng),能夠獲得修改speed設(shè)置的通知,并能同步修改sysfs的/sys/class/net/ethx/speed字段。修改后,ethtool等工具獲得的是修改后的速率。
例如,set_link_speed是用戶為虛擬機(jī)增加的接口,該接口提供給外部系統(tǒng),用來(lái)在虛擬機(jī)運(yùn)行中修改虛擬機(jī)的虛擬網(wǎng)卡的speed設(shè)置。
當(dāng)外部系統(tǒng)調(diào)用虛擬機(jī)的set_link_speed接口時(shí),將會(huì)修改虛擬機(jī)的虛擬網(wǎng)卡的speed字段的值。修改后,虛擬機(jī)將會(huì)給虛擬機(jī)內(nèi)的虛擬網(wǎng)卡驅(qū)動(dòng)發(fā)送一個(gè)配置更改的中斷。虛擬機(jī)內(nèi)的虛擬網(wǎng)卡驅(qū)動(dòng)獲得中斷通知后,將從虛擬網(wǎng)卡的io端口讀取到speed的值,并存儲(chǔ)在虛擬網(wǎng)卡的vi->speed字段中。之后,當(dāng)應(yīng)用程序訪問(wèn)/sys/class/net/ethx/speed時(shí),讀取到的就是更新后的vi->speed的值。
為了讓virtio-net虛擬網(wǎng)卡驅(qū)動(dòng)在獲得配置更改的中斷后,能夠同步更新vi->speed字段的值,需要修改該驅(qū)動(dòng)的virtnet_config_changed方法,該方法在虛擬網(wǎng)卡獲取配置更改的中斷后被調(diào)用。需要在virtnet_config_changed方法中,增加從virtio-net虛擬網(wǎng)卡的io端口讀取虛擬網(wǎng)卡中存儲(chǔ)的speed值。
例如,在創(chuàng)建虛擬機(jī)時(shí),虛擬網(wǎng)卡的speed傳入?yún)?shù)為1000,這樣,虛擬開(kāi)始運(yùn)行后,虛擬網(wǎng)卡存儲(chǔ)的speed值為1000。虛擬機(jī)內(nèi)應(yīng)用程序從/sys/class/net/ethx/speed讀取到的值也為1000。當(dāng)外部系統(tǒng)調(diào)用set_link_speed方法,將虛擬網(wǎng)卡存儲(chǔ)的speed值改為500后,虛擬機(jī)內(nèi)虛擬網(wǎng)卡的驅(qū)動(dòng)將會(huì)同步更新其維護(hù)的vi->speed字段,從虛擬網(wǎng)卡中讀取到最新的值并保存。之后,當(dāng)虛擬機(jī)內(nèi)應(yīng)用程序再次訪問(wèn)/sys/class/net/ethx/speed時(shí),將讀取到更新后的值500。
需要說(shuō)明的是,對(duì)于方法實(shí)施例,為了簡(jiǎn)單描述,故將其都表述為一系列的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明實(shí)施例并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本發(fā)明實(shí)施例,某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說(shuō)明書中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作并不一定是本發(fā)明實(shí)施例所必須的。
實(shí)施例五
參照?qǐng)D5,示出了本發(fā)明的一種配置虛擬機(jī)網(wǎng)卡速率的裝置實(shí)施例的結(jié)構(gòu)框圖,具體可以包括如下模塊:
初始傳輸速率配置模塊501,用于在所述虛擬機(jī)啟動(dòng)后,通過(guò)所述內(nèi)部接口配置所述虛擬網(wǎng)卡的初始傳輸速率,并將所述初始傳輸速率保存在所述虛擬網(wǎng)卡中;
目標(biāo)傳輸速率配置模塊502,用于在所述虛擬機(jī)運(yùn)行過(guò)程中,若需要修改所述虛擬網(wǎng)卡傳輸速率,則調(diào)用所述外部接口獲取目標(biāo)傳輸速率后,連接所述內(nèi)部接口重新配置所述虛擬網(wǎng)卡的目標(biāo)傳輸速率。
本發(fā)明實(shí)施例的一個(gè)優(yōu)選實(shí)施例中,所述虛擬機(jī)可以包括內(nèi)部接口生成模塊,所述內(nèi)部接口生成模塊可以包括如下子模塊:
系統(tǒng)文件獲取子模塊,用于獲取所述虛擬網(wǎng)卡的系統(tǒng)文件;
指定字段增添子模塊,用于在所述系統(tǒng)文件中增添指定字段;
內(nèi)部接口確定子模塊,用于將所述增添了指定字段后的系統(tǒng)文件作為內(nèi)部接口。
本發(fā)明實(shí)施例的一個(gè)優(yōu)選實(shí)施例中,所述初始傳輸速率配置模塊501可以包括如下子模塊:
初始傳輸速率讀取子模塊,用于從所述內(nèi)部接口的指定字段中讀取所述初始傳輸速率;
初始傳輸速率保存子模塊,用于將所述初始傳輸速率保存在所述虛擬網(wǎng)卡中。
本發(fā)明實(shí)施例的一個(gè)優(yōu)選實(shí)施例中,所述目標(biāo)傳輸速率配置模塊502可以包括如下子模塊:
速率替換子模塊,用于采用所述目標(biāo)傳輸速率替換所述內(nèi)部接口的指定字段中的初始傳輸速率;
目標(biāo)傳輸速率保存子模塊,用于將所述目標(biāo)傳輸速率保存至所述虛擬網(wǎng)卡。
本發(fā)明實(shí)施例的一個(gè)優(yōu)選實(shí)施例中,還包括:
所述虛擬機(jī)基于所述虛擬網(wǎng)卡的目標(biāo)傳輸速率進(jìn)行通信。
本發(fā)明實(shí)施例的一個(gè)優(yōu)選實(shí)施例中,所述目標(biāo)傳輸速率包括外部網(wǎng)絡(luò)的實(shí)時(shí)速率,或,預(yù)設(shè)的限速速率。
本發(fā)明實(shí)施例的一個(gè)優(yōu)選實(shí)施例中,所述虛擬機(jī)還可以包括如下模塊:
應(yīng)用程序初始傳輸速率獲取模塊,用于運(yùn)行在虛擬機(jī)中的應(yīng)用程序連接所述內(nèi)部接口獲取所述虛擬網(wǎng)卡的初始傳輸速率;
應(yīng)用程序目標(biāo)傳輸速率獲取模塊,用于運(yùn)行在虛擬機(jī)中的應(yīng)用程序連接所述內(nèi)部接口獲取所述虛擬網(wǎng)卡的目標(biāo)傳輸速率。
在實(shí)際應(yīng)用中運(yùn)用本發(fā)明實(shí)施例,可以在虛擬機(jī)啟動(dòng)后,通過(guò)內(nèi)部接口配置虛擬網(wǎng)卡的初始傳輸速率,在完成初始傳輸速率的配置后,經(jīng)由外部接口獲取虛擬網(wǎng)卡的目標(biāo)傳輸速率,并獲取目標(biāo)傳輸速率后,連接內(nèi)部接口重新配置虛擬網(wǎng)卡的目標(biāo)傳輸速率,從而能夠動(dòng)態(tài)調(diào)整虛擬網(wǎng)卡能夠使用的帶寬,更好地利用好網(wǎng)絡(luò)帶寬資源,達(dá)到充分利用網(wǎng)絡(luò)帶寬資源的目的。
對(duì)于裝置實(shí)施例而言,由于其與方法實(shí)施例基本相似,所以描述的比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法實(shí)施例的部分說(shuō)明即可。
實(shí)施例六
詳細(xì)介紹本發(fā)明實(shí)施例提供的一種計(jì)算機(jī)設(shè)備和一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。
本發(fā)明實(shí)施例提供了一種計(jì)算機(jī)設(shè)備,包括存儲(chǔ)器、處理器及存儲(chǔ)在存儲(chǔ)器上并可在處理器上運(yùn)行的計(jì)算機(jī)程序,其特征在于,所述處理器執(zhí)行所述程序時(shí)實(shí)現(xiàn)以下步驟:
在所述虛擬機(jī)啟動(dòng)后,通過(guò)所述內(nèi)部接口配置所述虛擬網(wǎng)卡的初始傳輸速率,并將所述初始傳輸速率保存在所述虛擬網(wǎng)卡中;
在所述虛擬機(jī)運(yùn)行過(guò)程中,若需要修改所述虛擬網(wǎng)卡傳輸速率,則調(diào)用所述外部接口獲取目標(biāo)傳輸速率后,連接所述內(nèi)部接口重新配置所述虛擬網(wǎng)卡的目標(biāo)傳輸速率。
可選地,所述內(nèi)部接口通過(guò)如下方式生成:
獲取所述虛擬網(wǎng)卡的系統(tǒng)文件;
在所述系統(tǒng)文件中增添指定字段;
將所述增添了指定字段后的系統(tǒng)文件作為內(nèi)部接口。
可選地,所述將所述初始傳輸速率保存在所述虛擬網(wǎng)卡中的步驟包括:
從所述內(nèi)部接口的指定字段中讀取所述初始傳輸速率;
將所述初始傳輸速率保存在所述虛擬網(wǎng)卡中。
可選地,所述連接所述內(nèi)部接口重新配置所述虛擬網(wǎng)卡的目標(biāo)傳輸速率的步驟包括:
采用所述目標(biāo)傳輸速率替換所述內(nèi)部接口的指定字段中的初始傳輸速率;
將所述目標(biāo)傳輸速率保存至所述虛擬網(wǎng)卡。
可選地,其特征在于,還包括:
所述虛擬機(jī)基于所述虛擬網(wǎng)卡的目標(biāo)傳輸速率進(jìn)行通信。
可選地,所述目標(biāo)傳輸速率包括外部網(wǎng)絡(luò)的實(shí)時(shí)速率,或,預(yù)設(shè)的限速速率。
可選地,還包括:
運(yùn)行在虛擬機(jī)中的應(yīng)用程序連接所述內(nèi)部接口獲取所述虛擬網(wǎng)卡的初始傳輸速率;
或者,運(yùn)行在虛擬機(jī)中的應(yīng)用程序連接所述內(nèi)部接口獲取所述虛擬網(wǎng)卡的目標(biāo)傳輸速率。
本發(fā)明實(shí)施例還提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,其特征在于,該程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)以下步驟:
在所述虛擬機(jī)啟動(dòng)后,通過(guò)所述內(nèi)部接口配置所述虛擬網(wǎng)卡的初始傳輸速率,并將所述初始傳輸速率保存在所述虛擬網(wǎng)卡中;
在所述虛擬機(jī)運(yùn)行過(guò)程中,若需要修改所述虛擬網(wǎng)卡傳輸速率,則調(diào)用所述外部接口獲取目標(biāo)傳輸速率后,連接所述內(nèi)部接口重新配置所述虛擬網(wǎng)卡的目標(biāo)傳輸速率。
可選地,所述內(nèi)部接口通過(guò)如下方式生成:
獲取所述虛擬網(wǎng)卡的系統(tǒng)文件;
在所述系統(tǒng)文件中增添指定字段;
將所述增添了指定字段后的系統(tǒng)文件作為內(nèi)部接口。
可選地,所述將所述初始傳輸速率保存在所述虛擬網(wǎng)卡中的步驟包括:
從所述內(nèi)部接口的指定字段中讀取所述初始傳輸速率;
將所述初始傳輸速率保存在所述虛擬網(wǎng)卡中。
可選地,所述連接所述內(nèi)部接口重新配置所述虛擬網(wǎng)卡的目標(biāo)傳輸速率的步驟包括:
采用所述目標(biāo)傳輸速率替換所述內(nèi)部接口的指定字段中的初始傳輸速率;
將所述目標(biāo)傳輸速率保存至所述虛擬網(wǎng)卡。
可選地,其特征在于,還包括:
所述虛擬機(jī)基于所述虛擬網(wǎng)卡的目標(biāo)傳輸速率進(jìn)行通信。
可選地,所述目標(biāo)傳輸速率包括外部網(wǎng)絡(luò)的實(shí)時(shí)速率,或,預(yù)設(shè)的限速速率。
可選地,還包括:
運(yùn)行在虛擬機(jī)中的應(yīng)用程序連接所述內(nèi)部接口獲取所述虛擬網(wǎng)卡的初始傳輸速率;
或者,運(yùn)行在虛擬機(jī)中的應(yīng)用程序連接所述內(nèi)部接口獲取所述虛擬網(wǎng)卡的目標(biāo)傳輸速率。
本說(shuō)明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見(jiàn)即可。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明實(shí)施例的實(shí)施例可提供為方法、裝置、或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明實(shí)施例可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明實(shí)施例可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、cd-rom、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
本發(fā)明實(shí)施例是參照根據(jù)本發(fā)明實(shí)施例的方法、終端設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來(lái)描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理終端設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過(guò)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理終端設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理終端設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。
這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理終端設(shè)備上,使得在計(jì)算機(jī)或其他可編程終端設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程終端設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
盡管已描述了本發(fā)明實(shí)施例的優(yōu)選實(shí)施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對(duì)這些實(shí)施例做出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實(shí)施例以及落入本發(fā)明實(shí)施例范圍的所有變更和修改。
最后,還需要說(shuō)明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語(yǔ)僅僅用來(lái)將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開(kāi)來(lái),而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、物品或者終端設(shè)備不僅包括那些要素,而且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、物品或者終端設(shè)備所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過(guò)程、方法、物品或者終端設(shè)備中還存在另外的相同要素。
以上對(duì)本發(fā)明所提供的一種配置虛擬機(jī)網(wǎng)卡速率的方法、一種獲取虛擬機(jī)網(wǎng)卡速率的方法、一種確定虛擬機(jī)網(wǎng)卡速率的方法,一種設(shè)置虛擬機(jī)網(wǎng)卡速率的方法和一種配置虛擬機(jī)網(wǎng)卡速率的裝置,進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說(shuō)明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實(shí)施方式及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說(shuō)明書內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。