gluster效能調優選項(中繼器)詳解

來源:互聯網
上載者:User

標籤:gluster   效能調優   參數詳解   

1、write-behind(預設on)

gluster volume set tank write-behind on


Write Behind Translator (後寫)
    通常情況下,寫操作會比讀要慢。通過使用"aggregated background write"技術,write-behind translator 相當顯著地改善了寫的效能。更確切地說,大量小的寫操作被集中起來,形成少量的、大一些的寫操作,並且進行後台寫處理(non-blocking)。後寫方式在client端上彙總了寫操作,減小了必須傳遞的網路包數量。在server端,它協助伺服器最佳化寫的磁碟尋道時間。

aggregate-size

    該選項決定了在匯聚寫操作之前塊的大小。參照你的連線速度、RAM的大小,以及工作負載情況,你可以調整這個值。預設的,該值為128KB,能夠比較好的滿足大多數應用情況。無限制的增加和減小這個值可能會帶來效能上的降低。你可以逐漸調整和分析,慢慢找出一個最佳化的結果。

flush-behind

    該選項可以直接通過命令 gluster volume set tank flush-behind 的形式進行設定,但實際上,該參數是write-behind的一個選項,如果write-behind為off,只設定flush-behind應該是沒有意義的。

    該選項也同樣是為了提升處理大量小檔案的效能。在這個選項裡close()/flush()能夠被堆到後台,允許用戶端去處理下一個請求。預設值是on

注意: 通常情況下,protocol translator對於一個請求或者轉寄的資料包有一個4MB的上限。因此,如果你在client端用了上面的write-behind(大多數會如此),並且aggregate-size大於4MB,他也不會發出大的資料包。


2、read-ahead(預設on)

gluster volume set tank read-ahead on


Read Ahead Translator (預讀)

    基於預設值,read-ahead會順序地預取一些塊。當你的應用忙於處理一些資料的時候,GlusterFS能夠預讀下一批等待處理的資料。這樣能夠使的讀取操作更加流暢和迅速。而且,工作起來像一個讀的集合器一樣(read-aggregator),也就是說,將大量的、零散的讀取操作集合成少量的、大一些的讀操作,這樣,減小了網路和磁碟的負載。page-size 描述了塊的大小。page-count 描述了預讀塊的總數量。

注意: 這個translator比較適合於應用在IB-verbs transport環境裡。在百兆和千兆乙太網路介面、沒有read-ahead的環境下,能夠達到這種串連的最高速度。

3、io-cache(預設on)

gluster volume set tank io-cache on

IO-Cache Translator

    如果在client端被載入,能夠協助減小server的負載(如果client正在讀一些檔案,而且這個檔案在兩次讀操作期間沒有被修改)。舉個例子,在編譯核心時所需要訪問的標頭檔。

type performance/io-cache    IO緩衝中繼(performance/io-cache)屬於效能調整中繼的一種,作用是緩衝住已經被讀過的資料,以提高IO效能。    IO緩衝中繼可以緩衝住已經被讀過的資料。這個對於多個應用對同一個資料多次訪問,並且如果讀的操作遠遠大於寫的操作的話是很有用的(比如,IO緩衝很適合用於提供web服務的環境,大量的用戶端只會進行簡單的讀取檔案的操作,只有很少一部分會去寫檔案)。    當IO緩衝中繼檢測到有寫操作的時候,它就會把相應的檔案從緩衝中刪除。    IO緩衝中繼會週期性根據檔案的修改時間來驗證緩衝中相應檔案的一致性。驗證逾時時間是可以配置的。
4、quick-read(預設on)
gluster volume set tank quick-read on
http://www.gluster.org/community/documentation/index.php/Translators/performance/quick-read
從描述上看,該選項只對fuse有用,同時,如果檔案的大小大於預設的64k,則該選項也不起作用。
Translator performance/quick-read

該中繼器用來提高小檔案讀效能。

通過網路對檔案系統進行操作開銷很大,因此,quick-read使用glusterfs內部get介面來一次執行多個posix系統調用open/read/close,一次get調用包含:一個open調用 + 多個read調用 + 一個close調用。

This translator improves performance of read on small files. Over a posix interface, files are read using the apis open, read and close. For a filesystem implemented over a network, the round trip overhead of these calls can be significant. Hence quick-read uses the glusterfs internal get interface to implement posix abstraction of using open/read/close for reading of files there by reducing the number of calls over network from n to 1 where n = no of read calls + 1 (open) + 1 (close).

Example:

volume quick-read  type performance/quick-read  option cache-timeout nsecs (1 second)  option max-file-size nbytes (64Kb)  subvolumes clientend-volume

  • cache-timeout

緩衝失效驗證時間,預設值1秒。

Timeout for validation of cached file. On timeout stats of the file is compared with that of cached copy. If the file is found to be changed after it is cached, the cache is flushed. The default timeout value is 1 second.

  • max-file-size

 

可以使用get介面讀取的檔案最大值,預設值是64KB。當檔案大於該值,則使用標準的open/read/close調用。

 

Maximum size of the file that can be fetched using get interface. Files bigger than this are read using the normal open/read/close. Note that this option controls only how quick-read behaves. Irrespective of the value this option, the applications running on glusterfs continue to use the normal open/read/close interface. Default value of this option is 64 kilo bytes.

glusterfs3.4把quick-read(3.3就這一個translaotr)分解為open-behind和quick-read。原來設計不管操作檔案的目的是什麼,都要擷取真正的fd。重構後,可以根據檔案操作目的,如果是修改檔案內容,就在後台開啟檔案並進行操作。如果僅僅是fstat等類似操作,就利用匿名fd來進行,不會等待真正的fd。這樣根據操作目的,最佳化了效能。在lookup時,根據需要設定xdata key,在posix translator層就抓取檔案內容。read操作執行到quick-read層時就返迴文件內容。

5、open-behind(預設on)
gluster volume set tank open-behind on
Perform open in the backend only when a necessary FOP arrives (e.g writev on the FD, unlink of the file). When option is disabled, perform backend open right after unwinding open().

 

6、stat-prefetch(預設on)

即:performance/md-cache

gluster volume set tank stat-prefetch on

meta-data caching translator in the volume。

網上有說法:

    為規避用戶端中繼資料不一致,把用戶端的metadata cache禁用,即配置performance.md-cache-timeout 0。

有可能正確,待深入分析,暫用預設值。


force-readdirp參數:

    Convert all readdir requests to readdirplus to collect stat info on each entry.


7、io-threads(預設on,16線程)

gluster volume set tank io-thread-count 16


    IO線程中繼(performance/io-threads)屬於效能調整中繼的一種,作用是增加IO的並發線程,以提高IO效能。

    IO線程中繼試圖增加伺服器後台進程對檔案中繼資料讀寫I/O的處理能力。由於GlusterFS服務是單線程的,使用IO線程轉換器可以較大的提高效能。這個轉換器最好是被用於伺服器端,而且是在伺服器協議轉換器後面被載入。

    IO線程操作會將讀和寫操作分成不同的線程。同一時刻存在的匯流排程是恒定的並且是可以配置的。


之前GlusterFS Translators v1.3手冊對io-threads描述,和當前實現相比可能有出入:

    AIO增加了非同步(後台)讀寫的功能。通過載入這個translator,你可以利用server的空閑時間去處理新的任務。當server在 DMA方式處理讀或者寫操作的時候,CPU、記憶體或者網路並沒有被使用。這個translator可以將資源更好的利用起來去處理和增加當前的I/O效能。

注意:

    1. io-threads translator 只有在unify之上或者在Server protocol之下才會有效果。如果在unify和namespace brick之間,因為沒有檔案io的處理,所以不會有效果。

    2. ‘thread-count‘小於或等於你的CPU數量。

 

參考自網路,來源比較多。

本文出自 “敏而好學” 部落格,請務必保留此出處http://dangzhiqiang.blog.51cto.com/7961271/1837817

gluster效能調優選項(中繼器)詳解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.