1.一種基于virtio_blk的虛擬化IO性能優(yōu)化方法,其特征在于,包括:
接收到bio請求時,通過BASE_BIO模塊將bio請求存入目標(biāo)隊列;
當(dāng)所述目標(biāo)隊列保存的bio請求數(shù)目大于預(yù)定閾值時,檢測所述目標(biāo)隊列保存的bio請求是否存在相鄰請求;
若存在,則將相鄰請求封裝為virtblk_requet,并執(zhí)行kick操作;若不存在,則將每個bio請求封裝為對應(yīng)的virtblk_request,并執(zhí)行kick操作。
2.根據(jù)權(quán)利要求1所述的虛擬化IO性能優(yōu)化方法,其特征在于,檢測到所述目標(biāo)隊列保存的bio請求存在相鄰請求之后,還包括:
按照預(yù)定規(guī)則,將相鄰請求動態(tài)移動到所述目標(biāo)隊列的前端。
3.根據(jù)權(quán)利要求2所述的虛擬化IO性能優(yōu)化方法,其特征在于,所述按照預(yù)定規(guī)則,將相鄰請求動態(tài)移動到所述目標(biāo)隊列的前端,包括:
根據(jù)檢測到的每個相鄰請求的請求數(shù)目,設(shè)定每個相鄰請求的優(yōu)先級,并根據(jù)每個相鄰請求的優(yōu)先級,動態(tài)調(diào)整每個相鄰請求在所述目標(biāo)隊列的保存位置。
4.根據(jù)權(quán)利要求1所述的虛擬化IO性能優(yōu)化方法,其特征在于,檢測到所述目標(biāo)隊列保存的bio請求不存在相鄰請求之后,還包括:
設(shè)置與每個bio請求對應(yīng)的計時器;
若檢測到計時器超時,則將與超時的計數(shù)器對應(yīng)的bio請求的處理優(yōu)先級設(shè)置為最高。
5.根據(jù)權(quán)利要求1-4中任意一項所述的虛擬化IO性能優(yōu)化方法,其特征在于,檢測所述目標(biāo)隊列保存的bio請求是否存在相鄰請求,包括:
檢測所述目標(biāo)隊列保存的bio請求是否存在位于同一扇區(qū)、同一磁道、同一柱面或者同一磁盤中的一者的bio請求;
若存在,則將位于同一扇區(qū)、同一磁道、同一柱面或者同一磁盤中的bio請求作為一組相鄰請求。
6.一種基于virtio_blk的虛擬化IO性能優(yōu)化系統(tǒng),其特征在于,包括:
Bio請求存入模塊,用于接收到bio請求時,通過BASE_BIO模塊將bio請求存入目標(biāo)隊列;
相鄰請求檢測模塊,用于當(dāng)所述目標(biāo)隊列保存的bio請求數(shù)目大于預(yù)定閾值時,檢測所述目標(biāo)隊列保存的bio請求是否存在相鄰請求;若存在,則觸發(fā)第一封裝模塊;若不存在,則觸發(fā)第二封裝模塊;
所述第一封裝模塊,用于將相鄰請求封裝為virtblk_requet;
所述第二封裝模塊,用于將每個bio請求封裝為對應(yīng)的virtblk_request;
執(zhí)行模塊,用于對封裝后的virtblk_requet執(zhí)行kick操作。
7.根據(jù)權(quán)利要求6所述的虛擬化IO性能優(yōu)化系統(tǒng),其特征在于,還包括:
動態(tài)調(diào)整模塊,用于按照預(yù)定規(guī)則,將相鄰請求動態(tài)移動到所述目標(biāo)隊列的前端。
8.根據(jù)權(quán)利要求7所述的虛擬化IO性能優(yōu)化系統(tǒng),其特征在于,
所述動態(tài)調(diào)整模塊根據(jù)檢測到的每個相鄰請求的請求數(shù)目,設(shè)定每個相鄰請求的優(yōu)先級,并根據(jù)每個相鄰請求的優(yōu)先級,動態(tài)調(diào)整每個相鄰請求在所述目標(biāo)隊列的保存位置。
9.根據(jù)權(quán)利要求6所述的虛擬化IO性能優(yōu)化系統(tǒng),其特征在于,還包括:
計時器設(shè)置模塊,用于設(shè)置與每個bio請求對應(yīng)的計時器;
處理優(yōu)先級調(diào)整模塊,用于檢測到計時器超時,則將與超時的計數(shù)器對應(yīng)的bio請求的處理優(yōu)先級設(shè)置為最高。
10.根據(jù)權(quán)利要求6-9中任意一項所述的虛擬化IO性能優(yōu)化系統(tǒng),其特征在于,
所述相鄰請求檢測模塊通過檢測所述目標(biāo)隊列保存的bio請求是否存在位于同一扇區(qū)、同一磁道、同一柱面或者同一磁盤中的一者的bio請求;若存在,則將位于同一扇區(qū)、同一磁道、同一柱面或者同一磁盤中的bio請求作為一組相鄰請求。