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

一種IO調度方法、裝置和設備與流程

文檔序號:12176692閱讀:204來源:國知局
一種IO調度方法、裝置和設備與流程

本發(fā)明的實施方式涉及文件系統(tǒng)技術領域,更具體地,本發(fā)明的實施方式涉及一種IO調度方法、裝置和設備。



背景技術:

本部分旨在為權利要求書中陳述的本發(fā)明的實施方式提供背景或上下文。此處的描述不因為包括在本部分中就承認是現(xiàn)有技術。

分布式文件系統(tǒng)(Distributed File System)顧名思義就是“分布式”加“文件系統(tǒng)”,對于用戶來說分布式文件系統(tǒng)依然是一個標準的文件系統(tǒng),為用戶提供各種標準API,而對于文件系統(tǒng)來說分布式文件系統(tǒng)不僅負責管理本地磁盤,它的文件內容和目錄結構都不是僅存儲于本地磁盤上,而是可以存儲在通過網(wǎng)絡與本地相連的遠端節(jié)點上。

下面以Hadoop為例進行介紹。Hadoop是一個分布式系統(tǒng)基礎架構。它實現(xiàn)了分布式文件系統(tǒng),即Hadoop分布式文件系統(tǒng)(HDFS,Hadoop Distributed File System)。HDFS具有高容錯的特性,可以運行在通用低廉的機器上。HDFS會在后臺定期進行數(shù)據(jù)校驗,例如:循環(huán)冗余校驗(CRC,Cyclic Redundancy Check)。如果發(fā)現(xiàn)校驗出錯,則發(fā)起數(shù)據(jù)恢復,將數(shù)據(jù)恢復到指定的副本數(shù)??梢?,在HDFS中,存儲節(jié)點上會有多種類型業(yè)務的輸入輸出(IO,Input and Output),主要包括:

正常業(yè)務:讀文件、寫文件、刪除文件等;

數(shù)據(jù)校驗業(yè)務:讀取磁盤上的文件數(shù)據(jù)進行CRC校驗,并根據(jù)校驗結果確定文件數(shù)據(jù)是否損壞;

數(shù)據(jù)恢復業(yè)務:可以采用多副本的方式,即當一個磁盤發(fā)生損壞,可以通過從發(fā)生損壞文件的副本文件拷貝原始文件來進行數(shù)據(jù)恢復。

在上述各種類型業(yè)務的IO中,正常業(yè)務IO的通常要比數(shù)據(jù)校驗業(yè)務和數(shù)據(jù)恢復業(yè)務的IO更重要。那么,為了保證正常業(yè)務的正常執(zhí)行,HDFS采用限制數(shù)據(jù)校驗業(yè)務和數(shù)據(jù)恢復業(yè)務IO操作速度的方式來降低它們對正常業(yè)務的影響。也就是說,假設系統(tǒng)每一秒鐘能夠執(zhí)行1000個IO操作,HDFS將各種類型業(yè)務的IO操作限制為:每一秒鐘執(zhí)行200個數(shù)據(jù)校驗業(yè)務或者數(shù)據(jù)恢復業(yè)務的IO操作,以及800個正常業(yè)務的IO操作,但是由于正常業(yè)務并不知道數(shù)據(jù)校驗業(yè)務或者數(shù)據(jù)恢復業(yè)務的存在,仍然按照每一秒鐘執(zhí)行1000個IO操作的速度占用系統(tǒng)資源,而并不知道每一秒鐘的1000個IO操作中會分配200個IO操作給數(shù)據(jù)校驗業(yè)務或者數(shù)據(jù)恢復業(yè)務??梢?,HDFS雖然限制了數(shù)據(jù)校驗業(yè)務和數(shù)據(jù)恢復業(yè)務的IO操作速度,但是并不能消除它們對正常業(yè)務的影響,它們仍然會對正常業(yè)務的IO操作產(chǎn)生阻塞。



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

出于現(xiàn)有文件系統(tǒng)中正常業(yè)務IO和其他業(yè)務IO重要程度不同的原因,現(xiàn)有技術采用限制其他業(yè)務IO操作速度的方式來降低它們對正常業(yè)務的影響。

因此在現(xiàn)有技術中,現(xiàn)有文件系統(tǒng)雖然限制了其他業(yè)務的IO操作速度,但是它們仍然會對正常業(yè)務的IO操作產(chǎn)生阻塞,這是非常令人煩惱的過程。

為此,非常需要一種改進的IO調度方法,以使正常業(yè)務IO能夠正常執(zhí)行,不會受到其他類型業(yè)務IO的阻塞。

在本上下文中,本發(fā)明的實施方式期望提供一種IO調度方法、裝置和設備。

在本發(fā)明實施方式的第一方面中,提供了一種IO調度方法之一,包括:

接收高優(yōu)先級IO執(zhí)行請求;

響應于當前滿足第一低優(yōu)先級IO喚醒條件,觸發(fā)為低優(yōu)先級IO發(fā)放一個執(zhí)行通行證;并發(fā)送低優(yōu)先級IO喚醒信號;以及

調度所述高優(yōu)先級IO執(zhí)行;

其中,所述第一低優(yōu)先級IO喚醒條件包括:當前已調度的高優(yōu)先級IO數(shù)量滿足預設數(shù)量條件,以及當前存在正在等待執(zhí)行的低優(yōu)先級IO。

在一種可能的實施方式中,本發(fā)明實施例提供的上述方法中,在調度所述高優(yōu)先級IO執(zhí)行之后,還包括:響應于當前滿足第二低優(yōu)先級IO喚醒條件,觸發(fā)發(fā)送低優(yōu)先級IO喚醒信號;其中,所述第二低優(yōu)先級IO喚醒條件包括:當前不存在等待執(zhí)行的高優(yōu)先級IO,以及當前存在正在等待執(zhí)行的低優(yōu)先級IO。

在本發(fā)明實施方式的第二方面中,提供了一種IO調度方法之二,包括:

對低優(yōu)先級IO喚醒信號進行監(jiān)聽;

響應于接收到低優(yōu)先級IO喚醒信號,觸發(fā)對低優(yōu)先級IO調度條件的判斷;

響應于所述低優(yōu)先級IO調度條件成立,調度低優(yōu)先級IO執(zhí)行;

其中,所述低優(yōu)先級IO調度條件包括:當前不存在正在等待執(zhí)行的高優(yōu)先級IO,或當前執(zhí)行通行證的數(shù)量非零;以及

當前正在執(zhí)行的低優(yōu)先級IO數(shù)量未達到預設并行數(shù)量。

在一種可能的實施方式中,本發(fā)明實施例提供的上述方法中,還包括:響應于接收到低優(yōu)先級IO執(zhí)行請求,觸發(fā)對所述低優(yōu)先級IO調度條件的判斷。

在一種可能的實施方式中,本發(fā)明實施例提供的上述方法中,在調度所述低優(yōu)先級IO執(zhí)行之后,還包括:響應于當前存在正在等待執(zhí)行的低優(yōu)先級IO,觸發(fā)發(fā)送低優(yōu)先級IO喚醒信號。

在一種可能的實施方式中,本發(fā)明實施例提供的上述方法中,還包括:響應于所述低優(yōu)先級IO調度條件成立,若當前執(zhí)行通行證的數(shù)量大于零,將當前執(zhí)行通行證數(shù)量減一。

在一種可能的實施方式中,本發(fā)明實施例提供的上述方法中,還包括:響應于所述低優(yōu)先級IO調度條件不成立,繼續(xù)對低優(yōu)先級IO喚醒信號進行監(jiān)聽。

在本發(fā)明實施方式的第三方面中,提供了一種IO調度裝置之一,包括:

接收模塊,用于接收高優(yōu)先級IO執(zhí)行請求;

喚醒模塊,用于響應于當前滿足第一低優(yōu)先級IO喚醒條件,觸發(fā)為低優(yōu)先級IO發(fā)放一個執(zhí)行通行證;并發(fā)送低優(yōu)先級IO喚醒信號;

調度模塊,用于調度所述高優(yōu)先級IO執(zhí)行;其中,所述第一低優(yōu)先級IO喚醒條件包括:當前已調度的高優(yōu)先級IO數(shù)量滿足預設數(shù)量條件,以及當前存在正在等待執(zhí)行的低優(yōu)先級IO。

在一種可能的實施方式中,本發(fā)明實施例提供的上述裝置中,所述喚醒模塊,還用于在所述調度模塊調度所述高優(yōu)先級IO執(zhí)行之后,響應于當前滿足第二低優(yōu)先級IO喚醒條件,觸發(fā)發(fā)送低優(yōu)先級IO喚醒信號;其中,所述第二低優(yōu)先級IO喚醒條件包括:當前不存在等待執(zhí)行的高優(yōu)先級IO,以及當前存在正在等待執(zhí)行的低優(yōu)先級IO。

在本發(fā)明實施方式的第四方面中,提供了一種IO調度裝置之二,包括:

監(jiān)聽模塊,用于對低優(yōu)先級IO喚醒信號進行監(jiān)聽;

判斷模塊,用于響應于接收到低優(yōu)先級IO喚醒信號,觸發(fā)對低優(yōu)先級IO調度條件的判斷;

調度模塊,用于響應于所述低優(yōu)先級IO調度條件成立,調度低優(yōu)先級IO執(zhí)行;其中,所述低優(yōu)先級IO調度條件包括:當前不存在正在等待執(zhí)行的高優(yōu)先級IO,或當前執(zhí)行通行證的數(shù)量非零;以及當前正在執(zhí)行的低優(yōu)先級IO數(shù)量未達到預設并行數(shù)量。

在一種可能的實施方式中,本發(fā)明實施例提供的上述裝置中,所述判斷模塊,還用于響應于接收到低優(yōu)先級IO執(zhí)行請求,觸發(fā)對所述低優(yōu)先級IO調度條件的判斷。

在一種可能的實施方式中,本發(fā)明實施例提供的上述裝置中,還包括:喚醒模塊;所述喚醒模塊,用于在所述調度模塊調度所述低優(yōu)先級IO執(zhí)行之后,響應于當前存在正在等待執(zhí)行的低優(yōu)先級IO,觸發(fā)發(fā)送低優(yōu)先級IO喚醒信號。

在一種可能的實施方式中,本發(fā)明實施例提供的上述裝置中,還包括:統(tǒng)計模塊;所述統(tǒng)計模塊,用于響應于所述低優(yōu)先級IO調度條件成立,若當前執(zhí)行通行證的數(shù)量大于零,將當前執(zhí)行通行證數(shù)量減一。

在一種可能的實施方式中,本發(fā)明實施例提供的上述裝置中,所述監(jiān)聽模塊,還用于響應于所述低優(yōu)先級IO調度條件不成立,繼續(xù)對低優(yōu)先級IO喚醒信號進行監(jiān)聽。

在本發(fā)明實施方式的第五方面中,提供了一種IO調度設備,包括:

上述任一種可能的實施方式提供的高優(yōu)先級IO調度裝置和上述任一種可能的實施方式提供的低優(yōu)先級IO調度裝置。

根據(jù)本發(fā)明實施方式的一種IO調度方法、裝置和設備,可以為文件系統(tǒng)中不同類型業(yè)務的IO劃分優(yōu)先級,當接收到高優(yōu)先級IO執(zhí)行請求時,直接調度該高優(yōu)先級IO執(zhí)行,每執(zhí)行完預設執(zhí)行數(shù)量的高優(yōu)先級IO,若當前存在正在等待執(zhí)行的低優(yōu)先級IO,就為低優(yōu)先級IO發(fā)放執(zhí)行通行證,并發(fā)送低優(yōu)先級IO喚醒信號來觸發(fā)低優(yōu)先級IO調度條件的判斷,若低優(yōu)先級IO調度條件成立,則調度低優(yōu)先級IO執(zhí)行??梢姡诒WC高優(yōu)先級IO及時調度的同時,低優(yōu)先級IO也不會被餓死。與現(xiàn)有技術中,HDFS通過限制數(shù)據(jù)校驗業(yè)務和數(shù)據(jù)恢復業(yè)務IO操作速度的方式來降低它們對正常業(yè)務的影響相比,本申請?zhí)峁┑膶嵤┓绞街?,可以將正常業(yè)務IO作為高優(yōu)先級IO,將數(shù)據(jù)校驗業(yè)務和數(shù)據(jù)恢復業(yè)務IO作為低優(yōu)先級IO,當接收到正常業(yè)務IO請求時直接執(zhí)行,并且當已調度正常業(yè)務IO滿足預設數(shù)量條件,且存在等待執(zhí)行的數(shù)據(jù)校驗業(yè)務和數(shù)據(jù)恢復業(yè)務IO時,就為數(shù)據(jù)校驗業(yè)務和數(shù)據(jù)恢復業(yè)務IO發(fā)放執(zhí)行通行證,保證數(shù)據(jù)校驗業(yè)務和數(shù)據(jù)恢復業(yè)務IO不會餓死,并且在保證沒有正常業(yè)務IO等待執(zhí)行時,數(shù)據(jù)校驗業(yè)務和數(shù)據(jù)恢復業(yè)務能夠單獨占用系統(tǒng)資源進行IO操作,提高了IO的執(zhí)行速度,為用戶帶來了更好的體驗。

附圖說明

通過參考附圖閱讀下文的詳細描述,本發(fā)明示例性實施方式的上述以及其他目的、特征和優(yōu)點將變得易于理解。在附圖中,以示例性而非限制性的方式示出了本發(fā)明的若干實施方式,其中:

圖1a~圖1b示意性地示出了根據(jù)本發(fā)明實施方式的應用場景示意圖;

圖2示意性地示出了根據(jù)本發(fā)明一實施例的一種IO調度方法針對高優(yōu)先級IO的流程示意圖;

圖3示意性地示出了根據(jù)本發(fā)明一實施例的一種IO調度方法針對低優(yōu)先級IO的流程示意圖;

圖4示意性地示出了根據(jù)本發(fā)明另一實施例的一種IO調度方法針對高優(yōu)先級IO的流程示意圖;

圖5示意性地示出了根據(jù)本發(fā)明另一實施例的一種IO調度方法針對低優(yōu)先級IO的流程示意圖;

圖6示意性地示出了根據(jù)本發(fā)明一實施例的一種IO調度裝置之一的結構示意圖;

圖7示意性地示出了根據(jù)本發(fā)明一實施例的一種IO調度裝置之二的結構示意圖;

圖8示意性地示出了根據(jù)本發(fā)明一實施例的一種IO調度設備的結構示意圖;

圖9示意性地示出了根據(jù)本發(fā)明另一實施例的一種IO調度設備的結構示意圖;

圖10示意性地示出了根據(jù)本發(fā)明實施例的一種IO調度設備的程序產(chǎn)品示意圖。

在附圖中,相同或對應的標號表示相同或對應的部分。

具體實施方式

下面將參考若干示例性實施方式來描述本發(fā)明的原理和精神。應當理解,給出這些實施方式僅僅是為了使本領域技術人員能夠更好地理解進而實現(xiàn)本發(fā)明,而并非以任何方式限制本發(fā)明的范圍。相反,提供這些實施方式是為了使本公開更加透徹和完整,并且能夠將本公開的范圍完整地傳達給本領域的技術人員。

本領域技術技術人員知道,本發(fā)明的實施方式可以實現(xiàn)為一種系統(tǒng)、裝置、設備、方法或計算機程序產(chǎn)品。因此,本公開可以具體實現(xiàn)為以下形式,即:完全的硬件、完全的軟件(包括固件、駐留軟件、微代碼等),或者硬件和軟件結合的形式。

根據(jù)本發(fā)明的實施方式,提出了一種IO調度方法、裝置和設備。

此外,附圖中的任何元素數(shù)量均用于示例而非限制,以及任何命名都僅用于區(qū)分,而不具有任何限制含義。

下面參考本發(fā)明的若干代表性實施方式,詳細闡釋本發(fā)明的原理和精神。

發(fā)明概述

本發(fā)明人發(fā)現(xiàn),現(xiàn)有技術中,現(xiàn)有技術通過限制非主要業(yè)務IO操作速度的方式,降低非主要業(yè)務IO對主要業(yè)務IO的影響,這樣雖然一定程度上限制了非主要業(yè)務的IO操作速度,但是仍然會對主要業(yè)務的IO操作產(chǎn)生阻塞?,F(xiàn)有技術中缺乏一種改進的IO調度方法,以使主要業(yè)務IO能夠正常執(zhí)行,不會受到非主要業(yè)務IO的阻塞。

為此,本發(fā)明提供了一種IO調度方法、裝置和設備,IO調度方法可以包括:針對高優(yōu)先級業(yè)務:接收高優(yōu)先級IO執(zhí)行請求;響應于當前滿足第一低優(yōu)先級IO喚醒條件,觸發(fā)為低優(yōu)先級IO發(fā)放一個執(zhí)行通行證;并發(fā)送低優(yōu)先級IO喚醒信號;以及調度所述高優(yōu)先級IO執(zhí)行;針對低優(yōu)先級業(yè)務:對低優(yōu)先級IO喚醒信號進行監(jiān)聽;響應于接收到低優(yōu)先級IO喚醒信號,觸發(fā)對低優(yōu)先級IO調度條件的判斷;響應于低優(yōu)先級IO調度條件成立,調度低優(yōu)先級IO執(zhí)行;其中,第一低優(yōu)先級IO喚醒條件包括:當前已調度的高優(yōu)先級IO數(shù)量為預設執(zhí)行數(shù)量的整數(shù)倍,以及當前存在正在等待執(zhí)行的低優(yōu)先級IO;低優(yōu)先級IO調度條件包括:當前不存在正在等待執(zhí)行的高優(yōu)先級IO,或當前執(zhí)行通行證的數(shù)量非零;以及當前正在執(zhí)行的低優(yōu)先級IO數(shù)量未達到預設并行數(shù)量。

在介紹了本發(fā)明的基本原理之后,下面具體介紹本發(fā)明的各種非限制性實施方式。

應用場景總覽

首先參考圖1a~圖1b,在圖1a中,存儲設備101上運行有文件系統(tǒng),存儲設備101能夠根據(jù)執(zhí)行IO操作的業(yè)務的優(yōu)先級為業(yè)務進行IO調度;存儲設備102~存儲設備104通過網(wǎng)絡連接,構成分布式文件系統(tǒng)(這里僅是舉例,并不對構成文件系統(tǒng)的存儲設備數(shù)量進行限制),存儲設備102~存儲設備104能夠分別對自身運行的業(yè)務根據(jù)其優(yōu)先級進行調度。其中,網(wǎng)絡可以為局域網(wǎng)、廣域網(wǎng)、移動互聯(lián)網(wǎng)等;存儲設備101~存儲設備104可以為便攜設備(例如:手機、平板、筆記本電腦等),也可以為個人電腦(PC,Personal Computer)。

示例性方法

下面結合圖1的應用場景,參考圖2~圖5來描述根據(jù)本發(fā)明示例性實施方式的用于IO調度的方法。需要注意的是,上述應用場景僅是為了便于理解本發(fā)明的精神和原理而示出,本發(fā)明的實施方式在此方面不受任何限制。相反,本發(fā)明的實施方式可以應用于適用的任何場景。

圖2為本發(fā)明提供的一種IO調度方法的一實施例的流程示意圖,在本發(fā)明提供的一種IO調度方法的一實施例中,針對高優(yōu)先級業(yè)務的IO調度。執(zhí)行主體可以為應用場景中的存儲設備101~存儲設備104。下面參照該圖對本發(fā)明實施例提供的一種IO調度方法的流程進行描述。

如圖2所示,本發(fā)明實施例提供的一種IO調度方法,針對高優(yōu)先級業(yè)務,包括如下步驟:

S201、接收高優(yōu)先級IO執(zhí)行請求。

S202、響應于當前滿足第一低優(yōu)先級IO喚醒條件,觸發(fā)為低優(yōu)先級IO發(fā)放一個執(zhí)行通行證;并發(fā)送低優(yōu)先級IO喚醒信號。

其中,第一低優(yōu)先級IO喚醒條件包括:當前已調度的高優(yōu)先級IO數(shù)量滿足預設數(shù)量條件,以及當前存在正在等待執(zhí)行的低優(yōu)先級IO。

S203、調度S201中高優(yōu)先級IO執(zhí)行。

進一步地,本實施例的執(zhí)行主體可以為存儲設備101~存儲設備104中運行的高優(yōu)先級業(yè)務本身,或者專門的用于調度的模塊。

步驟S202和步驟S203的執(zhí)行沒有嚴格的先后順序。

本實施例中,當接收到高優(yōu)先級IO執(zhí)行請求時,直接調度該高優(yōu)先級IO執(zhí)行,并對第一低優(yōu)先級IO喚醒條件作判斷,若滿足則觸發(fā)對低優(yōu)先級IO的喚醒操作。既保證了高優(yōu)先級IO的及時調度,又不會使低優(yōu)先級IO被餓死。

與上述圖2所示方法相應的,本發(fā)明一實施例中針對等待低優(yōu)先級IO喚醒信號的低優(yōu)先級業(yè)務,還提供了一種IO調度方法。執(zhí)行主體可以為應用場景中的存儲設備101~存儲設備104。下面參照該圖對本發(fā)明實施例提供的一種IO調度方法的流程進行描述。

如圖3所示,本發(fā)明實施例提供的一種IO調度方法,針對低優(yōu)先級業(yè)務,執(zhí)行主體可以為應用場景中的存儲設備101~存儲設備104,包括如下步驟:

S301、對低優(yōu)先級IO喚醒信號進行監(jiān)聽。

S302、響應于接收到低優(yōu)先級IO喚醒信號,觸發(fā)對低優(yōu)先級IO調度條件的判斷。

S303、響應于低優(yōu)先級IO調度條件成立,調度低優(yōu)先級IO執(zhí)行。

其中,低優(yōu)先級IO調度條件包括:當前不存在正在等待執(zhí)行的高優(yōu)先級IO,或當前執(zhí)行通行證的數(shù)量非零;以及當前正在執(zhí)行的低優(yōu)先級IO數(shù)量未達到預設并行數(shù)量。

本發(fā)明實施例中,可以開啟單獨的IO調度線程對高優(yōu)先級業(yè)務和低優(yōu)先級業(yè)務的IO進行調度,也可以由高優(yōu)先級業(yè)務和低優(yōu)先級業(yè)務對各自的IO進行調度。針對由高優(yōu)先級業(yè)務和低優(yōu)先級業(yè)務對各自的IO進行調度的情況,高優(yōu)先級業(yè)務可以當自身產(chǎn)生IO執(zhí)行請求時即執(zhí)行該IO,并且對是否喚醒低優(yōu)先級IO進行判斷;低優(yōu)先級業(yè)務可以對低優(yōu)先級喚醒信號進行監(jiān)聽,當接收到低優(yōu)先級喚醒信號時,對低優(yōu)先級IO調度條件進行判斷,并根據(jù)判斷結果執(zhí)行低優(yōu)先級IO,這種實施方式不需要創(chuàng)建單獨的IO調度線程,資源占用低。

圖4為本發(fā)明提供的一種IO調度方法的另一實施例的流程示意圖,在本發(fā)明提供的一種IO調度方法的另一實施例中,針對高優(yōu)先級業(yè)務的IO調度。執(zhí)行主體可以為應用場景中的存儲設備101~存儲設備104。下面參照該圖對本發(fā)明實施例提供的一種IO調度方法的流程進行描述。

如圖4所示,本發(fā)明實施例提供的一種IO調度方法,針對高優(yōu)先級業(yè)務,包括如下步驟:

S401、接收高優(yōu)先級IO執(zhí)行請求。

S402、響應于當前滿足第一低優(yōu)先級IO喚醒條件,觸發(fā)為低優(yōu)先級IO發(fā)放一個執(zhí)行通行證;并發(fā)送低優(yōu)先級IO喚醒信號。

其中,第一低優(yōu)先級IO喚醒條件包括:當前已調度的高優(yōu)先級IO數(shù)量滿足預設數(shù)量條件,以及當前存在正在等待執(zhí)行的低優(yōu)先級IO。

本步驟中,當接收到高優(yōu)先級IO執(zhí)行請求時,可以對第一低優(yōu)先級IO喚醒條件進行判斷,即判斷當前已調度的高優(yōu)先級IO數(shù)量是否滿足預設數(shù)量條件,以及當前是否存在正在等待執(zhí)行的低優(yōu)先級IO。較佳地,滿足預設數(shù)量條件可以是:為預設執(zhí)行數(shù)量的整數(shù)倍,也就是說,為了防止低優(yōu)先級IO餓死,每執(zhí)行完預設執(zhí)行數(shù)量的高優(yōu)先級IO,若當前存在正在等待執(zhí)行的低優(yōu)先級IO,則喚醒低優(yōu)先級IO。

本實施例中,高優(yōu)先級IO可以存在多種狀態(tài):已調度狀態(tài)、正在執(zhí)行狀態(tài)、以及等待執(zhí)行狀態(tài)。低優(yōu)先級IO同理,這里不再贅述。

本步驟中,若當前不滿足第一低優(yōu)先級IO喚醒條件,則不為低優(yōu)先級IO發(fā)放執(zhí)行通行證,以及不發(fā)送低優(yōu)先級IO喚醒信號,直接執(zhí)行步驟S403。

S403、調度S401中高優(yōu)先級IO執(zhí)行。

步驟S402和步驟S403的執(zhí)行沒有嚴格的先后順序。

S404、響應于當前滿足第二低優(yōu)先級IO喚醒條件,觸發(fā)發(fā)送低優(yōu)先級IO喚醒信號。

其中,第二低優(yōu)先級IO喚醒條件包括:當前不存在等待執(zhí)行的高優(yōu)先級IO,以及當前存在正在等待執(zhí)行的低優(yōu)先級IO。

本步驟中,在執(zhí)行高優(yōu)先級IO之后,還可以對第二低優(yōu)先級IO喚醒條件進行判斷,若滿足,則再次發(fā)送低優(yōu)先級IO喚醒信號。這樣在高優(yōu)先級IO執(zhí)行之前和之后都會對對應條件進行判斷,以觸發(fā)低優(yōu)先級IO的喚醒,在高優(yōu)先級IO及時執(zhí)行的前提下,增加了低優(yōu)先級IO被調度的機會,進一步避免了低優(yōu)先級IO被餓死,使高優(yōu)先級IO和低優(yōu)先級IO調度更加合理。

本步驟中,若當前不滿足第二低優(yōu)先級IO喚醒條件,則不發(fā)送低優(yōu)先級IO喚醒信號。

與上述圖4所示方法相應的,本發(fā)明另一實施例中針對低優(yōu)先級業(yè)務,還提供了一種IO調度方法。執(zhí)行主體可以為應用場景中的存儲設備101~存儲設備104。下面參照該圖對本發(fā)明實施例提供的一種IO調度方法的流程進行描述。

如圖5所示,本發(fā)明實施例提供的一種IO調度方法,針對低優(yōu)先級業(yè)務,執(zhí)行主體可以為應用場景中的存儲設備101~存儲設備104,包括如下步驟:

S501、對低優(yōu)先級IO喚醒信號進行監(jiān)聽。

S502、判斷是否接收到低優(yōu)先級IO喚醒信號,若是,則進入步驟S503;否則,進入步驟S501;

S503、判斷是否滿足低優(yōu)先級IO調度條件,若滿足,則進入步驟S504;否則,進入步驟S501。

本步驟中,響應于接收到低優(yōu)先級IO喚醒信號,觸發(fā)對低優(yōu)先級IO調度條件的判斷。

其中,低優(yōu)先級IO調度條件包括:當前不存在正在等待執(zhí)行的高優(yōu)先級IO,或當前執(zhí)行通行證的數(shù)量非零;以及

當前正在執(zhí)行的低優(yōu)先級IO數(shù)量未達到預設并行數(shù)量。

由上述實施例以及本實施例可見,可以在多處發(fā)送低優(yōu)先級IO喚醒信號,但是接收到低優(yōu)先級IO喚醒信號之后,并不馬上觸發(fā)執(zhí)行低優(yōu)先級IO,而是先對低優(yōu)先級IO調度條件進行判斷。在低優(yōu)先級IO調度條件中,設置了執(zhí)行通行證,該執(zhí)行通行證為接收到高優(yōu)先級IO執(zhí)行請求時,并且當前滿足第一低優(yōu)先級IO喚醒條件,觸發(fā)為低優(yōu)先級IO發(fā)放一個執(zhí)行通行證,也就是說,盡管低優(yōu)先級IO具有多次被喚醒的機會,但是在前存在正在等待執(zhí)行的高優(yōu)先級IO的情況下,是否調度該低優(yōu)先級IO執(zhí)行,還是需要依據(jù)執(zhí)行通行證的數(shù)量,來保證執(zhí)行一定數(shù)量的高優(yōu)先級IO之后才能執(zhí)行一個低優(yōu)先級IO,保證了高優(yōu)先級IO的正常執(zhí)行。

本實施例中,會設置低優(yōu)先級IO并行執(zhí)行數(shù)量,將并行執(zhí)行的低優(yōu)先級IO限制在預設并行數(shù)量內,以防止磁盤設備上堆積大量的低優(yōu)先級IO,影響高優(yōu)先級IO的執(zhí)行。

S504、若當前執(zhí)行通行證數(shù)量大于零,將當前執(zhí)行通行證數(shù)量減一。

S505、調度低優(yōu)先級IO執(zhí)行。

步驟S504~步驟S505為響應于低優(yōu)先級IO調度條件成立執(zhí)行的步驟。二者的執(zhí)行沒有嚴格的先后順序。

S506、響應于當前存在正在等待執(zhí)行的低優(yōu)先級IO,觸發(fā)發(fā)送低優(yōu)先級IO喚醒信號。進入步驟501。

本步驟中,在調度低優(yōu)先級IO執(zhí)行之后,再次通過對當前是否存在正在等待執(zhí)行的低優(yōu)先級IO的判斷,發(fā)送低優(yōu)先級IO喚醒信號。

S507、接收低優(yōu)先級IO執(zhí)行請求,進入步驟S503。

本實施例中,存在兩個對低優(yōu)先級IO調度條件進行判斷的前提,一個為接收到低優(yōu)先級IO喚醒信號,另一個為響應于接收到低優(yōu)先級IO執(zhí)行請求,觸發(fā)對所述低優(yōu)先級IO調度條件的判斷。

本步驟的執(zhí)行與前述步驟沒有嚴格的執(zhí)行順序。

本發(fā)明實施例中,與現(xiàn)有技術不同的是,在執(zhí)行低優(yōu)先級IO時可以不被限制,而使用全部資源,加快了低優(yōu)先級IO的執(zhí)行速度。

下面根據(jù)本發(fā)明實施例提供的一種IO調度方法,給出程序執(zhí)行流程,下述程序執(zhí)行流程僅是本發(fā)明實施例的一種實施方式,并不用來限制本發(fā)明:

針對上述步驟S401~步驟S402,通過函數(shù)1:HighIOIn()實現(xiàn),該函數(shù)在高優(yōu)先級IO執(zhí)行之前執(zhí)行;

針對上述步驟S404,通過函數(shù)2:HighIOOut()實現(xiàn),該函數(shù)在高優(yōu)先級IO執(zhí)行之后執(zhí)行;

針對上述步驟S501~步驟S504,通過函數(shù)3:LowIOIn()實現(xiàn),該函數(shù)在低優(yōu)先級IO執(zhí)行之前執(zhí)行;

針對上述步驟S506,通過函數(shù)4:LowIOOut()實現(xiàn),該函數(shù)在低優(yōu)先級IO執(zhí)行之后執(zhí)行。

表一為程序流程中涉及到的參數(shù)定義:

下面對函數(shù)1~函數(shù)4的實現(xiàn)流程進行具體說明:

函數(shù)1:HighIOIn()流程如下:

1.加鎖

2.nrHighIOPending加1

3.sn加1

4.如果sn與highIONumber取余的結果為0,并且nrLowIOWaiting

不為0,則執(zhí)行如下步驟:

a)ticket加1

b)cond.Signal發(fā)送低優(yōu)先級喚醒信號

5.解鎖

說明:函數(shù)1實現(xiàn)了在接收到高優(yōu)先級IO執(zhí)行請求之后,且執(zhí)行該高優(yōu)先級IO之前,通過第一低優(yōu)先級IO喚醒條件的判斷,觸發(fā)為低優(yōu)先級IO發(fā)放執(zhí)行通行證,并發(fā)送低優(yōu)先級IO喚醒信號。這里,預設數(shù)量條件采用了:當前已調度的高優(yōu)先級IO數(shù)量為預設執(zhí)行數(shù)量的整數(shù)倍。

函數(shù)2:HighIOOut()流程如下:

1.加鎖

2.nrHighIOPending減1

3.如果nrHighIOPending為0,并且nrLowIOWaiting不為0,則執(zhí)行如下步驟:

a)cond.Signal發(fā)送低優(yōu)先級喚醒信號

4.解鎖

說明:函數(shù)2實現(xiàn)了在執(zhí)行高優(yōu)先級IO之后,通過第二低優(yōu)先級IO喚醒條件的判斷,觸發(fā)發(fā)送低優(yōu)先級IO喚醒信號。

函數(shù)3:LowIOIn()流程如下:

1.加鎖

2.nrLowIO加1

3.hasAdd=False

4.如果不滿足低優(yōu)先級IO調度條件,即nrHighIOPending為0或者ticket不為0,以及(nrLowIO-nrLowIOWaiting)<maxLowIONumber,則執(zhí)行步驟a)和b),如果滿足低優(yōu)先級IO調度條件,執(zhí)行步驟5~7:

a)如果hasAdd=False則執(zhí)行:

i.nrLowIOWaiting加1

ii.hasAdd=True

b)cond.Wait等待低優(yōu)先級喚醒信號

5.如果hasAdd=True,則執(zhí)行nrLowIOWaiting減1

6.如果ticket不為0,則執(zhí)行ticket減1

7.解鎖

說明:函數(shù)3實現(xiàn)了等待低優(yōu)先級喚醒信號,當接收到低優(yōu)先級喚醒信號時,對低優(yōu)先級IO調度條件進行判斷,根據(jù)判斷結果確定是否執(zhí)行低優(yōu)先級IO,如果不滿足低優(yōu)先級IO調度條件則繼續(xù)等待低優(yōu)先級喚醒信號。

函數(shù)4:LowIOOut()流程如下:

1.加鎖

2.nrLowIO減1

3.如果nrLowIOWaiting不為0,則執(zhí)行如下步驟:

a)cond.Signal發(fā)送低優(yōu)先級喚醒信號

4.解鎖

說明:函數(shù)4實現(xiàn)了在執(zhí)行低優(yōu)先級IO之后,如果存在等待執(zhí)行的低優(yōu)先級IO,則發(fā)送低優(yōu)先級IO喚醒信號。

示例性設備

在介紹了本發(fā)明示例性實施方式的方法之后,接下來,參考圖6描述本發(fā)明示例性實施方式的、用于IO調度的裝置之一。

圖6為本發(fā)明實施例提供一種IO調度裝置之一的結構示意圖,如圖6所示,可以包括如下模塊:

接收模塊601,用于接收高優(yōu)先級IO執(zhí)行請求;

喚醒模塊602,用于響應于當前滿足第一低優(yōu)先級IO喚醒條件,觸發(fā)為低優(yōu)先級IO發(fā)放一個執(zhí)行通行證;并發(fā)送低優(yōu)先級IO喚醒信號;

調度模塊603,用于調度所述高優(yōu)先級IO執(zhí)行;其中,所述第一低優(yōu)先級IO喚醒條件包括:當前已調度的高優(yōu)先級IO數(shù)量滿足預設數(shù)量條件,以及當前存在正在等待執(zhí)行的低優(yōu)先級IO。

在本實施例的一些實施方式中,可選的,所述喚醒模塊602,還用于在所述調度模塊603調度所述高優(yōu)先級IO執(zhí)行之后,響應于當前滿足第二低優(yōu)先級IO喚醒條件,觸發(fā)發(fā)送低優(yōu)先級IO喚醒信號;其中,所述第二低優(yōu)先級IO喚醒條件包括:當前不存在等待執(zhí)行的高優(yōu)先級IO,以及當前存在正在等待執(zhí)行的低優(yōu)先級IO。

接下來,參考圖7描述本發(fā)明示例性實施方式的、用于IO調度的裝置之二。

圖7為本發(fā)明實施例提供一種IO調度裝置之二的結構示意圖,如圖7所示,可以包括如下模塊:

監(jiān)聽模塊701,用于對低優(yōu)先級IO喚醒信號進行監(jiān)聽;

判斷模塊702,用于響應于接收到低優(yōu)先級IO喚醒信號,觸發(fā)對低優(yōu)先級IO調度條件的判斷;

調度模塊703,用于響應于所述低優(yōu)先級IO調度條件成立,調度低優(yōu)先級IO執(zhí)行;其中,所述低優(yōu)先級IO調度條件包括:當前不存在正在等待執(zhí)行的高優(yōu)先級IO,或當前執(zhí)行通行證的數(shù)量非零;以及當前正在執(zhí)行的低優(yōu)先級IO數(shù)量未達到預設并行數(shù)量。

在本實施例的一些實施方式中,可選的,所述判斷模塊702,還用于響應于接收到低優(yōu)先級IO執(zhí)行請求,觸發(fā)對所述低優(yōu)先級IO調度條件的判斷。

在本實施例的另一些實施方式中,可選的,所述裝置還包括:喚醒模塊704;

所述喚醒模塊704,用于在所述調度模塊703調度所述低優(yōu)先級IO執(zhí)行之后,響應于當前存在正在等待執(zhí)行的低優(yōu)先級IO,觸發(fā)發(fā)送低優(yōu)先級IO喚醒信號。

在本實施例的又一些實施方式中,可選的,所述裝置還包括:統(tǒng)計模塊705;

所述統(tǒng)計模塊705,用于響應于所述低優(yōu)先級IO調度條件成立,若當前執(zhí)行通行證的數(shù)量大于零,將當前執(zhí)行通行證數(shù)量減一。

在本實施例的再一些實施方式中,可選的,所述監(jiān)聽模塊701,還用于響應于所述低優(yōu)先級IO調度條件不成立,繼續(xù)對低優(yōu)先級IO喚醒信號進行監(jiān)聽。

接下來,參考圖8描述本發(fā)明示例性實施方式的、用于IO調度的設備80。如圖8所示,本發(fā)明實施例提供的IO調度設備80,包括上述任意實施方式所述的IO調度裝置之一801,以及上述任意實施方式所述的IO調度裝置之二802。

在介紹了本發(fā)明示例性實施方式的方法和設備之后,接下來,介紹根據(jù)本發(fā)明的又一示例性實施方式的用于IO調度的設備。

所屬技術領域的技術人員能夠理解,本發(fā)明的各個方面可以實現(xiàn)為系統(tǒng)、方法或程序產(chǎn)品。因此,本發(fā)明的各個方面可以具體實現(xiàn)為以下形式,即:完全的硬件實施方式、完全的軟件實施方式(包括固件、微代碼等),或硬件和軟件方面結合的實施方式,這里可以統(tǒng)稱為“電路”、“模塊”或“系統(tǒng)”。

在一些可能的實施方式中,根據(jù)本發(fā)明的用于IO調度的設備可以至少包括至少一個處理單元、以及至少一個存儲單元。其中,所述存儲單元存儲有程序代碼,當所述程序代碼被所述處理單元執(zhí)行時,使得所述處理單元執(zhí)行本說明書上述“示例性方法”部分中描述的根據(jù)本發(fā)明各種示例性實施方式的用于IO調度方法中的步驟。例如,所述處理單元可以執(zhí)行如圖2中所示的步驟S201、接收高優(yōu)先級IO執(zhí)行請求;步驟S202、響應于當前滿足第一低優(yōu)先級IO喚醒條件,觸發(fā)為低優(yōu)先級IO發(fā)放一個執(zhí)行通行證;并發(fā)送低優(yōu)先級IO喚醒信號;步驟S203、調度S201中高優(yōu)先級IO執(zhí)行。以及如圖3中所示的步驟S301、對低優(yōu)先級IO喚醒信號進行監(jiān)聽;步驟S302、響應于接收到低優(yōu)先級IO喚醒信號,觸發(fā)對低優(yōu)先級IO調度條件的判斷;步驟S303、響應于低優(yōu)先級IO調度條件成立,調度低優(yōu)先級IO執(zhí)行。

下面參照圖9來描述根據(jù)本發(fā)明的這種實施方式的用于IO調度的設備90。圖9顯示的用于IO調度的設備90僅僅是一個示例,不應對本發(fā)明實施例的功能和使用范圍帶來任何限制。

如圖9所示,用于IO調度的設備90以通用計算設備的形式表現(xiàn)。用于IO調度的設備90的組件可以包括但不限于:上述至少一個處理單元901、上述至少一個存儲單元902、連接不同系統(tǒng)組件(包括處理單元901和存儲單元902)的總線903。

總線903表示幾類總線結構中的一種或多種,包括存儲器總線或者存儲器控制器、外圍總線、圖形加速端口、處理器或者使用多種總線結構中的任意總線結構的局域總線。

存儲單元902可以包括易失性存儲器形式的可讀介質,例如隨機存取存儲器(RAM)9021和/或高速緩存存儲器9022,還可以進一步只讀存儲器(ROM)9023。

存儲單元902還可以包括具有一組(至少一個)程序模塊9024的程序/實用工具900,這樣的程序模塊9024包括但不限于:操作系統(tǒng)、一個或者多個應用程序、其它程序模塊以及程序數(shù)據(jù),這些示例中的每一個或某種組合中可能包括網(wǎng)絡環(huán)境的實現(xiàn)。

用于IO調度的設備90也可以與一個或多個外部設備904(例如鍵盤、指向設備、藍牙設備等)通信,還可與一個或者多個使得用戶能與該用于IO調度的設備90交互的設備通信,和/或與使得該用于IO調度的設備90能與一個或多個其它計算設備進行通信的任何設備(例如路由器、調制解調器等等)通信。這種通信可以通過輸入/輸出(I/O)接口905進行。并且,用于IO調度的設備90還可以通過網(wǎng)絡適配器906與一個或者多個網(wǎng)絡(例如局域網(wǎng)(LAN),廣域網(wǎng)(WAN)和/或公共網(wǎng)絡,例如因特網(wǎng))通信。如圖所示,網(wǎng)絡適配器906通過總線903與用于IO調度的設備90的其它模塊通信。用于IO調度的設備90也可以通過顯示單元907將調度結果向用戶顯示。應當明白,盡管圖中未示出,可以結合用于IO調度的設備90使用其它硬件和/或軟件模塊,包括但不限于:微代碼、設備驅動器、冗余處理單元、外部磁盤驅動陣列、RAID系統(tǒng)、磁帶驅動器以及數(shù)據(jù)備份存儲系統(tǒng)等。

示例性程序產(chǎn)品

在一些可能的實施方式中,本發(fā)明的各個方面還可以實現(xiàn)為一種程序產(chǎn)品的形式,其包括程序代碼,當所述程序產(chǎn)品在終端設備上運行時,所述程序代碼用于使所述終端設備執(zhí)行本說明書上述“示例性方法”部分中描述的根據(jù)本發(fā)明各種示例性實施方式的用于IO調度的方法中的步驟,例如,所述終端設備可以執(zhí)行如圖2中所示的步驟S201、接收高優(yōu)先級IO執(zhí)行請求;步驟S202、響應于當前滿足第一低優(yōu)先級IO喚醒條件,觸發(fā)為低優(yōu)先級IO發(fā)放一個執(zhí)行通行證;并發(fā)送低優(yōu)先級IO喚醒信號;步驟S203、調度S201中高優(yōu)先級IO執(zhí)行。以及如圖3中所示的步驟S301、對低優(yōu)先級IO喚醒信號進行監(jiān)聽;步驟S302、響應于接收到低優(yōu)先級IO喚醒信號,觸發(fā)對低優(yōu)先級IO調度條件的判斷;步驟S303、響應于低優(yōu)先級IO調度條件成立,調度低優(yōu)先級IO執(zhí)行。

所述程序產(chǎn)品可以采用一個或多個可讀介質的任意組合??勺x介質可以是可讀信號介質或者可讀存儲介質。可讀存儲介質例如可以是——但不限于——電、磁、光、電磁、紅外線、或半導體的系統(tǒng)、裝置或器件,或者任意以上的組合。可讀存儲介質的更具體的例子(非窮舉的列表)包括:具有一個或多個導線的電連接、便攜式盤、硬盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦式可編程只讀存儲器(EPROM或閃存)、光纖、便攜式緊湊盤只讀存儲器(CD-ROM)、光存儲器件、磁存儲器件、或者上述的任意合適的組合。

如圖10所示,描述了根據(jù)本發(fā)明的實施方式的用于IO調度的程序產(chǎn)品100,其可以采用便攜式緊湊盤只讀存儲器(CD-ROM)并包括程序代碼,并可以在終端設備,例如個人電腦上運行。然而,本發(fā)明的程序產(chǎn)品不限于此,在本文件中,可讀存儲介質可以是任何包含或存儲程序的有形介質,該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結合使用。

可讀信號介質可以包括在基帶中或者作為載波一部分傳播的數(shù)據(jù)信號,其中承載了可讀程序代碼。這種傳播的數(shù)據(jù)信號可以采用多種形式,包括——但不限于——電磁信號、光信號或上述的任意合適的組合。可讀信號介質還可以是可讀存儲介質以外的任何可讀介質,該可讀介質可以發(fā)送、傳播或者傳輸用于由指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結合使用的程序。

可讀介質上包含的程序代碼可以用任何適當?shù)慕橘|傳輸,包括——但不限于——無線、有線、光纜、RF等等,或者上述的任意合適的組合。

可以以一種或多種程序設計語言的任意組合來編寫用于執(zhí)行本發(fā)明操作的程序代碼,所述程序設計語言包括面向對象的程序設計語言—諸如Java、C++等,還包括常規(guī)的過程式程序設計語言—諸如“C”語言或類似的程序設計語言。程序代碼可以完全地在用戶計算設備上執(zhí)行、部分地在用戶設備上執(zhí)行、作為一個獨立的軟件包執(zhí)行、部分在用戶計算設備上部分在遠程計算設備上執(zhí)行、或者完全在遠程計算設備或服務器上執(zhí)行。在涉及遠程計算設備的情形中,遠程計算設備可以通過任意種類的網(wǎng)絡——包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)—連接到用戶計算設備,或者,可以連接到外部計算設備(例如利用因特網(wǎng)服務提供商來通過因特網(wǎng)連接)。

應當注意,盡管在上文詳細描述中提及了IO調度的設備的若干裝置或子裝置,但是這種劃分僅僅并非強制性的。實際上,根據(jù)本發(fā)明的實施方式,上文描述的兩個或更多裝置的特征和功能可以在一個裝置中具體化。反之,上文描述的一個裝置的特征和功能可以進一步劃分為由多個裝置來具體化。

此外,盡管在附圖中以特定順序描述了本發(fā)明方法的操作,但是,這并非要求或者暗示必須按照該特定順序來執(zhí)行這些操作,或是必須執(zhí)行全部所示的操作才能實現(xiàn)期望的結果。附加地或備選地,可以省略某些步驟,將多個步驟合并為一個步驟執(zhí)行,和/或將一個步驟分解為多個步驟執(zhí)行。

雖然已經(jīng)參考若干具體實施方式描述了本發(fā)明的精神和原理,但是應該理解,本發(fā)明并不限于所公開的具體實施方式,對各方面的劃分也不意味著這些方面中的特征不能組合以進行受益,這種劃分僅是為了表述的方便。本發(fā)明旨在涵蓋所附權利要求的精神和范圍內所包括的各種修改和等同布置。

當前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1