蔡宇昂
(湖北警官學院,湖北 武漢 430000)
在分布式文件系統中,為了實現高性能和高并行,一個I/O操作通常被分割為若干個請求序列[1,2],這些請求被并行地發送到服務器端,導致存儲系統中涌現大量資源競爭,如存儲帶寬、磁盤訪問時間片等。在分布式文件系統中,設計一種I/O擁塞控制機制來協調和控制集群的I/O請求,保證系統高效運行就顯得尤為重要。
LiYan等人在Remy基礎上,提出ASCAR[3]、CAPES[4],通過參數來控制分布式文件系統客戶端請求發送窗口,并基于機器學習進行參數調優,從客戶端進行自動I/O擁塞控制。但有兩個不足:第一,調控只在客戶端進行,未考慮到服務器端的情況;第二,調控的粒度是整個客戶端,無法有效協調應用之間的資源競爭,調控效果有限,在某些特殊情況下無法充分利用系統的資源緩解擁塞狀況。 Yingjin Qian設計一種針對大規模集群的分布式動態 I/O擁塞控制機制[5,6]。該動態I/O擁塞控制方案可以在服務器輕載時,讓客戶端的應用更多更快的并行發送 I/O 請求,以提高系統的資源利用率和性能;當服務器處于過載狀態,客戶端通過 I/O 節流機制,減少I/O請求發送的數量,降低發送速率,以避免服務器出現擁塞或者崩潰。但是該方案僅考慮到單個服務器節點上的負載情況,就對相應連接的客戶端的請求進行限制,在緩解當前服務器端節點擁塞的情況下,可能同時影響了其它節點;該方案的調節粒度是整個客戶端,在某些情況下無法充分地利用服務器資源,解決擁塞問題。 本文的主要工作如下:①提出從服務器端和客戶端同時著手,實現端到端的擁塞控制;②在客戶端基于應用粒度分配I/O發送窗口,保證應用間公平性,控制請求的發送數量和速度,既充分利用了服務資源,又盡可能地避免了服務器端的擁塞。
AIOCC針對分布式文件系統服務器端擁塞控制方案主要分為三部分:第一,客戶端發送窗口值分配算法,即如何根據服務器端負載的和資源情況,動態地以客戶端粒度計算發送窗口值,保證客戶端間的公平性;第二,根據第一步計算的總體發送窗口值和應用效率評估模型,評估各應用的效率;第三,基于相應的策略模型,通過NRS TBF策略執行分配方案,保證應用粒度的公平性,并將分配值捎帶在I/O RPC回復請求中反饋到客戶端,用以指導客戶端發送窗口值的分配(表1)。

表1 分布式文件系統擁塞狀況下應用調度模型變量定義
定義APPk的效率評估模型:
(1)

一個I/O RPC請求從到達服務器端到完成I/O操作,除了I/O時間和排隊等待的時間,還包含I/O RPC請求建立連接、上下文切換開銷和資源競爭處理時間,且設備的實際傳輸速率總是低于極限速率的,因此:
(2)

=(W(k,i)/Br+W(k,i)/Bd)/(Rk/Rt+W(k,i)/Br+W(k,i)/Bd)
(3)

分別建立以下兩個模型來評估系統的效率和隔離性。
在分布式文件系統客戶端,設置了max_rpcs_in_flight參數,來控制從客戶端向服務器端發送請求的最大數目,客戶端的I/O操作都是以固定大小為單位進行的,默認為1MB,該值可以通過procfs(進程文件系統)調整。因而I/O的數據量和RPC請求的數據量正相關,這為在設計實現AIOCC方案提供了便利,不需要再考慮數據傳輸的數據量計算問題。借鑒ASCAR方案,并進一步細化參數設置,進行客戶端發送窗口的控制。表2是相關參數定義。

表2 客戶端擁塞控制參數定義
在統計ewma時,除了在客戶端粒度計算ewma判定整體的擁塞狀況外,還在應用粒度分類計算每個應用的ewmai,并設定判定擁塞狀態的閥值ewmamax,當ewmai (4) 該策略基于ewmamax-ewmai比例分配客戶端的發送窗口,顯然ewmamax-ewmai越大,說明該應用對應的連接狀況越好,應用將被分配更多的發送窗口,獲得更多發送請求的機會,以提高系統的資源利用率。ewmamax-ewmai越小,說明該應用對應的連接狀況越差,應用將被分配相對較少發送窗口,在差值小于等于0后甚至不分配發送窗口,以緩解擁塞狀況,當該應用對應的連接擁塞狀況好轉后,將重新獲得發送請求的機會。 使用基準測試程序FIO作為負載產生工具,并使用Telegraf、InfluxDB和Grafana對分布式文件系統構建可視化的監控系統:Telegraf是一個單節點的性能指標采集工具,負責采集各節點的性能指標數據,InfluxDB是一個分布式時序數據庫,Telegraf采集的數據通過HTTP請求上報到InfluxDB中進行存儲,Grafana從InfluxDB拉取數據進行統計分析和可視化展示。 從三個方面分析AIOCC自動I/O擁塞控制效果:1)在擁塞情況下,AIOCC針對不同負載對分布式文件系統調節,系統整體吞吐的提升情況,對比不使用AIOCC調節(NO-AIOCC)、分別經過24小時(24-AIOCC)和48小時(24h-AIOCC)訓練后參數的調控效果進行論證;2)分析AIOCC在48小時內,對每種負載調節時,吞吐的變化的詳細情況;3)改變FIO參數,減少客戶端I/O進程的數量,分析在分布式文件系統集群處于輕載狀態下,AIOCC對系統是否有負面影響,對NO-AIOCC、24h-AIOCC和48h-AIOCC調控效果對比。通過測試,可以得到兩點結論:①在設定的集群規模和上述FIO參數合成的負載下,經過24小時的訓練,AIOCC基本可以獲得比較理想的調控參數值;②AIOCC對于讀操作為主的負載調控效果不明顯,而對于寫操作為主的負載調控效果較比較好,在讀寫比例為1∶9時可以提升吞吐40.87%。 AIOCC對分布式文件系統集群中的部分負載導致的I/O擁塞問題行之有效,對于寫I/O操作為主的負載提高系統吞吐最高達到 40.87%,降低吞吐的性能偏差26%,有效降低I/O任務完成時延達30%,同時不會持續對輕載狀態的分布式文件系統集群產生負面影響,性能開銷也在可控范圍內。
3 測試
4 結語