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