本發(fā)明涉及通信領(lǐng)域,特別是涉及一種對ceph文件系統(tǒng)進行帶寬控制的方法及系統(tǒng)。
背景技術(shù):
分布式文件系統(tǒng)ceph是一個可拓展、高性能的分布式文件系統(tǒng),當(dāng)對ceph文件系統(tǒng)的訪問量過大時,會給該文件系統(tǒng)造成很大壓力,甚至可能會導(dǎo)致文件系統(tǒng)奔潰。為了保證ceph文件系統(tǒng)穩(wěn)定運行,需要對其帶寬進行控制(具體的,帶寬為一個固定的時間內(nèi)傳送的最大字節(jié)數(shù))。
現(xiàn)有技術(shù)中在進行帶寬控制時一般是通過程序關(guān)鍵字usleep來實現(xiàn)的。但是,當(dāng)程序運行到usleep關(guān)鍵字的時候,會使整個程序停止運行一段時間,在這段時間內(nèi),通過usleep控制下行帶寬時,上行操作將無法進行,通過usleep控制上行帶寬時,下行操作將無法進行,這樣就不能做到將帶寬上行和下行的控制分離,降低了帶寬的靈活性,在使用usleep關(guān)鍵字控制帶寬時,無法直接獲取某段時間內(nèi)傳送的字節(jié)數(shù),而是通過其接收數(shù)據(jù)包的個數(shù)來估算的,從而得到相應(yīng)的帶寬值,當(dāng)估算的帶寬值超過理論帶寬值時,停止傳送數(shù)據(jù)包,直到一段時間后程序重新運行,這種通過估算字節(jié)數(shù)、延長時間來控制帶寬的方式可能會使得所控制的帶寬并不準(zhǔn)確,進而無法控制對ceph文件系統(tǒng)的訪問量,甚至可能會影響ceph文件系統(tǒng)的穩(wěn)定性。
因此,如何提供一種解決上述技術(shù)問題的方案是本領(lǐng)域技術(shù)人員目前需要解決的問題。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的是提供一種對ceph文件系統(tǒng)進行帶寬控制的方法,不僅可以實現(xiàn)對帶寬的上行和下行進行分離控制,而且可以直接獲取網(wǎng)絡(luò)中的字節(jié)數(shù),得到相應(yīng)的帶寬值,提高了帶寬的靈活性和準(zhǔn)確性,進而可以對ceph文件系統(tǒng)的訪問量進行有效的控制,提高了ceph文件系統(tǒng)的穩(wěn)定性。本發(fā)明的另一目的是提供一種ceph文件系統(tǒng)進行帶寬控制的系統(tǒng)。
為解決上述技術(shù)問題,本發(fā)明提供了一種對ceph文件系統(tǒng)進行帶寬控制的方法,應(yīng)用于軟件samba網(wǎng)絡(luò)層的循環(huán)查詢機制tevent中,包括:
創(chuàng)建定時器,其中,所述定時器包括用于每隔預(yù)設(shè)時間觸發(fā)清零字節(jié)數(shù)的定時函數(shù);
統(tǒng)計獲取的字節(jié)數(shù),并根據(jù)所述字節(jié)數(shù)得到相應(yīng)的帶寬值;
判斷所述帶寬值是否大于理論帶寬值;
若是,則關(guān)閉網(wǎng)絡(luò)socket事件,將獲取的所述字節(jié)數(shù)清零,觸發(fā)網(wǎng)絡(luò)socket事件。
優(yōu)選的,所述網(wǎng)絡(luò)socket事件為網(wǎng)絡(luò)socket讀事件。
優(yōu)選的,所述網(wǎng)絡(luò)socket事件為網(wǎng)絡(luò)socket寫事件。
優(yōu)選的,所述判斷所述帶寬值是否大于理論帶寬值之后,若是,則關(guān)閉網(wǎng)絡(luò)socket事件之前,該方法還包括:
若否,則繼續(xù)所述網(wǎng)絡(luò)socket事件,并繼續(xù)統(tǒng)計獲取的字節(jié)數(shù),并根據(jù)所述字節(jié)數(shù)得到相應(yīng)的帶寬值,每隔預(yù)設(shè)時間直接將獲取的字節(jié)數(shù)清零。
優(yōu)選的,所述預(yù)設(shè)時間為1s。
為解決上述技術(shù)問題,本發(fā)明還提供了一種對ceph文件系統(tǒng)進行帶寬控制的系統(tǒng),應(yīng)用于軟件samba網(wǎng)絡(luò)層的循環(huán)查詢機制tevent中,包括:
創(chuàng)建模塊,用于創(chuàng)建定時器,其中,所述定時器包括用于每隔預(yù)設(shè)時間觸發(fā)清零字節(jié)數(shù)的定時函數(shù);
統(tǒng)計模塊,用于統(tǒng)計獲取的字節(jié)數(shù),并根據(jù)所述字節(jié)數(shù)得到相應(yīng)的帶寬值;
判斷模塊,用于判斷所述帶寬值是否大于理論帶寬值;
清零模塊,用于若是,則關(guān)閉網(wǎng)絡(luò)socket事件,將獲取的所述字節(jié)數(shù)清零,觸發(fā)網(wǎng)絡(luò)socket事件。
優(yōu)選的,所述網(wǎng)絡(luò)socket事件為網(wǎng)絡(luò)socket讀事件。
優(yōu)選的,所述網(wǎng)絡(luò)socket事件為網(wǎng)絡(luò)socket寫事件。
優(yōu)選的,所述判斷所述帶寬值是否大于理論帶寬值之后,若是,則關(guān)閉網(wǎng)絡(luò)socket事件之前,所述清零模塊還用于若否,則繼續(xù)所述網(wǎng)絡(luò)socket事件,觸發(fā)統(tǒng)計模塊,并每隔預(yù)設(shè)時間直接將獲取的字節(jié)數(shù)清零。
優(yōu)選的,所述預(yù)設(shè)時間為1s。
本發(fā)明提供了一種對ceph文件系統(tǒng)進行帶寬控制的方法,應(yīng)用于軟件samba網(wǎng)絡(luò)層的循環(huán)查詢機制tevent中,包括創(chuàng)建定時器,其中,定時器包括用于每隔預(yù)設(shè)時間觸發(fā)清零字節(jié)數(shù)的定時函數(shù);統(tǒng)計獲取的字節(jié)數(shù),并根據(jù)字節(jié)數(shù)得到相應(yīng)的帶寬值;判斷帶寬值是否大于理論帶寬值;若是,則關(guān)閉網(wǎng)絡(luò)socket事件,將獲取的字節(jié)數(shù)清零,觸發(fā)網(wǎng)絡(luò)socket事件。
可見,應(yīng)用本發(fā)明的方法,在tevent機制中對帶寬進行控制的時候,不會阻塞整個程序的正常運行,可以實現(xiàn)對帶寬的上行和下行進行分離控制,且使用本發(fā)明的方法來控制帶寬,可以直接獲取網(wǎng)絡(luò)中的字節(jié)數(shù),得到相應(yīng)的帶寬值,不需要估算,當(dāng)帶寬值大于理論帶寬值時,關(guān)閉網(wǎng)絡(luò)socket事件,通過定時器定時清零獲取的字節(jié)數(shù)來控制帶寬,這樣做可以使帶寬控制更加精確,提高了帶寬的靈活性和準(zhǔn)確性,降低了帶寬控制的復(fù)雜性,進而可以對ceph文件系統(tǒng)的訪問量進行有效控制,提高了ceph文件系統(tǒng)的穩(wěn)定性。
本發(fā)明還提供了一種對ceph文件系統(tǒng)進行帶寬控制的系統(tǒng),具有如上述控制方法相同的有益效果。
附圖說明
為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對現(xiàn)有技術(shù)和實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明所提供的一種對ceph文件系統(tǒng)進行帶寬控制方法的流程圖;
圖2為本發(fā)明所提供的一種對ceph文件系統(tǒng)進行帶寬控制系統(tǒng)的結(jié)構(gòu)示意圖。
具體實施方式
本發(fā)明的核心是提供一種對ceph文件系統(tǒng)進行帶寬控制的方法,不僅可以實現(xiàn)對帶寬的上行和下行進行分離控制,而且可以直接獲取網(wǎng)絡(luò)中的字節(jié)數(shù),得到相應(yīng)的帶寬值,提高了帶寬的靈活性和準(zhǔn)確性,進而可以對ceph文件系統(tǒng)的訪問量進行有效的控制,提高了ceph文件系統(tǒng)的穩(wěn)定性。本發(fā)明的另一核心是提供一種ceph文件系統(tǒng)進行帶寬控制的系統(tǒng)。
為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
請參照圖1,圖1為本發(fā)明所提供的一種對ceph文件系統(tǒng)進行帶寬控制方法的流程圖,包括:
步驟s1:創(chuàng)建定時器,其中,定時器包括用于每隔預(yù)設(shè)時間觸發(fā)清零字節(jié)數(shù)的定時函數(shù);
具體的,samba進程創(chuàng)建循環(huán)定時器,每隔預(yù)設(shè)時間定時器啟動一次控制這個時間段內(nèi)的帶寬,使帶寬控制更加準(zhǔn)確更加靈活。
步驟s2:統(tǒng)計獲取的字節(jié)數(shù),并根據(jù)字節(jié)數(shù)得到相應(yīng)的帶寬值;
具體的,帶寬就是在一個固定的時間內(nèi),能傳送的最大字節(jié)數(shù),所以想要對帶寬進行控制,則需要控制其傳送的字節(jié)數(shù),應(yīng)用本發(fā)明提供的方法,可以直接獲取字節(jié)數(shù),不需要估算,使帶寬控制更加精確。
步驟s3:判斷帶寬值是否大于理論帶寬值;
具體的,在實際應(yīng)用中,對ceph文件系統(tǒng)進行訪問的數(shù)據(jù)量如果過大,會造成文件系統(tǒng)崩潰,所以若想ceph文件系統(tǒng)保持穩(wěn)定,則需要把ceph文件系統(tǒng)的業(yè)務(wù)量在某一時間段內(nèi)控制到一定范圍,即把訪問帶寬控制在理論范圍值之內(nèi),所以本發(fā)明根據(jù)統(tǒng)計的字節(jié)數(shù)得到相應(yīng)的帶寬值之后,首先與理論帶寬值進行比較,這樣做可以提高帶寬的靈活性和準(zhǔn)確性,為對ceph文件系統(tǒng)的訪問量進行有效控制提供了基礎(chǔ)。
步驟s4:若是,則關(guān)閉網(wǎng)絡(luò)socket事件,將獲取的字節(jié)數(shù)清零,觸發(fā)網(wǎng)絡(luò)socket事件。
具體的,samba進程通常通過socket向網(wǎng)絡(luò)發(fā)出請求或者應(yīng)答網(wǎng)絡(luò)請求。當(dāng)網(wǎng)絡(luò)socket事件獲取的帶寬值大于理論帶寬值時,則需要對帶寬進行控制,將網(wǎng)絡(luò)socket事件關(guān)閉,不再獲取網(wǎng)絡(luò)中的字節(jié)數(shù),到達預(yù)設(shè)時間時,將獲取的字節(jié)數(shù)清空,再觸發(fā)網(wǎng)絡(luò)socket事件,重新統(tǒng)計從網(wǎng)絡(luò)中獲取的字節(jié)數(shù),應(yīng)用這種方式,使帶寬控制更加精確,且不會阻塞整個程序的正常運行,在對上行帶寬進行控制時,不會影響下行操作,在對上行帶寬進行控制的時候,也不會影響上行操作,可以實現(xiàn)對帶寬的上行和下行進行分離控制,提高了帶寬的靈活性和準(zhǔn)確性,降低了帶寬控制的復(fù)雜性。
其中,網(wǎng)絡(luò)socket事件受事件監(jiān)控機制event_loop監(jiān)控,當(dāng)它監(jiān)控到網(wǎng)絡(luò)socket事件觸發(fā)或關(guān)閉時,通知給用戶。
本發(fā)明提供了一種對ceph文件系統(tǒng)進行帶寬控制的方法,應(yīng)用于軟件samba網(wǎng)絡(luò)層的循環(huán)查詢機制tevent中,包括創(chuàng)建定時器,其中,定時器包括用于每隔預(yù)設(shè)時間觸發(fā)清零字節(jié)數(shù)的定時函數(shù);統(tǒng)計獲取的字節(jié)數(shù),并根據(jù)字節(jié)數(shù)得到相應(yīng)的帶寬值;判斷帶寬值是否大于理論帶寬值;若是,則關(guān)閉網(wǎng)絡(luò)socket事件,將獲取的字節(jié)數(shù)清零,觸發(fā)網(wǎng)絡(luò)socket事件。
可見,應(yīng)用本發(fā)明的方法,在tevent機制中對帶寬進行控制的時候,不會阻塞整個程序的正常運行,可以實現(xiàn)對帶寬的上行和下行進行分離控制,且使用本發(fā)明的方法來控制帶寬,可以直接獲取網(wǎng)絡(luò)中的字節(jié)數(shù),得到相應(yīng)的帶寬值,不需要估算,當(dāng)帶寬值大于理論帶寬值時,關(guān)閉網(wǎng)絡(luò)socket事件,通過定時器定時清零獲取的字節(jié)數(shù)來控制帶寬,這樣做可以使帶寬控制更加精確,提高了帶寬的靈活性和準(zhǔn)確性,降低了帶寬控制的復(fù)雜性,進而可以對ceph文件系統(tǒng)的訪問量進行有效控制,提高了ceph文件系統(tǒng)的穩(wěn)定性。
在上述實施例的基礎(chǔ)上:
作為一種優(yōu)選的實施例,網(wǎng)絡(luò)socket事件為網(wǎng)絡(luò)socket讀事件。
具體的,網(wǎng)絡(luò)socket讀事件,在實際應(yīng)用中,就是從網(wǎng)絡(luò)中讀取數(shù)據(jù)進行業(yè)務(wù)處理的過程。
當(dāng)然網(wǎng)絡(luò)socket事件除了可以為網(wǎng)絡(luò)socket讀事件,還可以為其他事件,本發(fā)明在此不做限定。
作為一種優(yōu)選的實施例,網(wǎng)絡(luò)socket事件為網(wǎng)絡(luò)socket寫事件。
具體的,網(wǎng)絡(luò)socket的寫事件,在實際應(yīng)用中,就是進行業(yè)務(wù)處理向網(wǎng)絡(luò)中發(fā)送數(shù)據(jù)的過程。
當(dāng)然網(wǎng)絡(luò)socket事件除了可以為網(wǎng)絡(luò)socket寫事件,還可以為其他事件,本發(fā)明在此不做限定。
作為一種優(yōu)選的實施例,判斷帶寬值是否大于理論帶寬值之后,若是,則關(guān)閉網(wǎng)絡(luò)socket事件之前,該方法還包括:
若否,則繼續(xù)網(wǎng)絡(luò)socket事件,并繼續(xù)統(tǒng)計獲取的字節(jié)數(shù),并根據(jù)字節(jié)數(shù)得到相應(yīng)的帶寬值,每隔預(yù)設(shè)時間直接將獲取的字節(jié)數(shù)清零。
具體的,當(dāng)從網(wǎng)絡(luò)中統(tǒng)計得到的帶寬值小于等于理論帶寬值時,應(yīng)用本發(fā)明的方法,每隔預(yù)設(shè)時間也會將獲取的字節(jié)數(shù)清零,再重新獲取網(wǎng)絡(luò)中的字節(jié)數(shù),這樣可以使帶寬控制算法更精確,更嚴(yán)謹(jǐn)。
作為一種優(yōu)選的實施例,預(yù)設(shè)時間為1s。
具體的,帶寬就是在一個固定的時間內(nèi)能通過的最大字節(jié)數(shù),當(dāng)預(yù)設(shè)時間為1s時,從網(wǎng)絡(luò)中獲取的字節(jié)數(shù)就是帶寬值,進一步降低了帶寬控制的復(fù)雜性。
請參照圖2,圖2為本發(fā)明所提供的一種對ceph文件系統(tǒng)進行帶寬控制系統(tǒng)的結(jié)構(gòu)示意圖,包括:
創(chuàng)建模塊1,用于創(chuàng)建定時器,其中,定時器包括用于每隔預(yù)設(shè)時間觸發(fā)清零字節(jié)數(shù)的定時函數(shù);
統(tǒng)計模塊2,用于統(tǒng)計獲取的字節(jié)數(shù),并根據(jù)字節(jié)數(shù)得到相應(yīng)的帶寬值;
判斷模塊3,用于判斷帶寬值是否大于理論帶寬值;
清零模塊4,用于若是,則關(guān)閉網(wǎng)絡(luò)socket事件,將獲取的字節(jié)數(shù)清零,觸發(fā)網(wǎng)絡(luò)socket事件。
作為一種優(yōu)選的實施例,網(wǎng)絡(luò)socket事件為網(wǎng)絡(luò)socket讀事件。
作為一種優(yōu)選的實施例,網(wǎng)絡(luò)socket事件為網(wǎng)絡(luò)socket寫事件。
作為一種優(yōu)選的實施例,判斷帶寬值是否大于理論帶寬值之后,若是,則關(guān)閉網(wǎng)絡(luò)socket事件之前,清零模塊4還用于若否,則繼續(xù)網(wǎng)絡(luò)socket事件,觸發(fā)統(tǒng)計模塊2,并每隔預(yù)設(shè)時間直接將獲取的字節(jié)數(shù)清零。
作為一種優(yōu)選的實施例,預(yù)設(shè)時間為1s。
對于本發(fā)明所提供的一種對ceph文件系統(tǒng)進行帶寬控制系統(tǒng)的介紹請參照上述實施例,本發(fā)明在此不再贅述。
本發(fā)明還提供了一種對ceph文件系統(tǒng)進行帶寬控制的系統(tǒng),具有如上述控制方法相同的有益效果。
本說明書中各個實施例采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似部分互相參見即可。對于實施例公開的裝置而言,由于其與實施例公開的方法相對應(yīng),所以描述的比較簡單,相關(guān)之處參見方法部分說明即可。
對所公開的實施例的上述說明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對這些實施例的多種修改對本領(lǐng)域的專業(yè)技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其他實施例中實現(xiàn)。因此,本發(fā)明將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。