這篇文章主要講解了“Glusterfs目錄ls性能優(yōu)化方法是什么”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Glusterfs目錄ls性能優(yōu)化方法是什么”吧!
成都創(chuàng)新互聯(lián)公司是專業(yè)的揚(yáng)州網(wǎng)站建設(shè)公司,揚(yáng)州接單;提供網(wǎng)站建設(shè)、網(wǎng)站設(shè)計,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行揚(yáng)州網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊,希望更多企業(yè)前來合作!
討論了glusterfs對文件系統(tǒng)爬蟲rsync/ls目錄性能的現(xiàn)有優(yōu)化措施和可能的進(jìn)一步優(yōu)化方案。優(yōu)化思路是減少本地文件系統(tǒng)的元數(shù)據(jù)操作,減少fuse client的負(fù)載,減少req的網(wǎng)絡(luò)輪詢次數(shù),減少一次網(wǎng)絡(luò)通信時間,緩存預(yù)抓取,并發(fā),異步,bulk 傳輸
centos 6.4最新內(nèi)核,支持fuse readdirplus。微調(diào)mount timeout參數(shù)。
FUSE: Adaptive NFS-like readdirplus support http://lwn.net/Articles/532705/?format=printable
http://sourceforge.net/p/fuse/mailman/message/29562240/
這個已經(jīng)合并到3.5release以后了。主要進(jìn)行了單線程ls順序目錄讀的優(yōu)化。通過在opendir時(在執(zhí)行回調(diào)時)去提前抓取目錄項作為緩存,同時也會在glusterfs readdirplus支持(內(nèi)核和glusterfs fuse都支持)的情況下,抓取目錄項的inode屬性和擴(kuò)展屬性,readdir(p)時可以直接返回或者此時抓取目錄項緩存?;趂use readdirplus性能會更加優(yōu)化?;趂d生命周期進(jìn)行的緩存。功能還很不強(qiáng)大,需要強(qiáng)化。
根據(jù)內(nèi)核FUSE_AUTO_INVAL_DATA支持,啟用--fopen-keep-cache mount選項。 新內(nèi)核版本支持。glusterfs fuse默認(rèn)行為是寫操作是同步的,讀文件操作從page cache中讀。當(dāng)打開一個文件時,失效原來file的page cache。啟用此選項后,就可以根據(jù)需要,如果原來file page cache 內(nèi)容沒變,就不進(jìn)行失效操作。
glusterfs3.4把quick-read(3.3就這一個translaotr)分解為openbehind和quick-read。原來設(shè)計不管操作文件的目的是什么,都要獲取真正的fd。重構(gòu)后,可以根據(jù)文件操作目的,如果是修改文件內(nèi)容,就在背景打開文件并進(jìn)行操作。如果僅僅是fstat等類似操作,就利用匿名fd來進(jìn)行,不會等待真正的fd。這樣根據(jù)操作目的,優(yōu)化了性能。在lookup時根據(jù)需要,設(shè)置xdata key,在posix translator層就抓取文件內(nèi)容。read操作執(zhí)行到quick-read層時就返回文件內(nèi)容。
主要是inode attr和xattr在readdir (p)時抓取;lookup只抓取當(dāng)時操作的目錄或文件的inode屬性,而不是所有目錄項。這個translator可以對ls時候?qū)tat和擴(kuò)展屬性抓取導(dǎo)致的延遲進(jìn)行優(yōu)化。但目前我們一般關(guān)閉selinux和acl擴(kuò)展屬性支持,所以擴(kuò)展屬性的ls優(yōu)化暫時不起作用。
io-threads 服務(wù)器和客戶端設(shè)置
libaio
scatter-gather IO
fuse內(nèi)核當(dāng)前支持4k readdir buffer大小??梢孕薷膬?nèi)核代碼支持較大chunk的buffer。readdir-ahead就是用一個glusterfs rpc 128k buffer進(jìn)行了bulk獲取,但也僅僅是在用戶空間進(jìn)行了預(yù)抓取。Brian Foster進(jìn)行了這方面的優(yōu)化實驗。
強(qiáng)化readdir-ahead,做成一個強(qiáng)大的client緩存架構(gòu),先做目錄項緩存,后面再考慮其他的。
多線程,非順序目錄讀的情況
緩存基于inode,進(jìn)行持久緩存
Xavier Hernandez提出了取代inodelk/entrylk的一種無鎖架構(gòu),有助于在client實現(xiàn)一個強(qiáng)大的緩存。目前社區(qū)已經(jīng)進(jìn)行了一次討論緩存架構(gòu)的頭腦風(fēng)暴。正在跟進(jìn)。
dht讀目錄本來就是順序(一個一個brick進(jìn)行讀?。?,應(yīng)該分析是否可以放寬這樣的限制
小文件合并為大文件的transtlaotr。這個可以參考hystack和tfs的實現(xiàn)。
參考hdfs的中央緩存架構(gòu),不在client做真正的緩存,而在brick端緩存,client只做路由?;蛘遚lient和brick都做緩存。
分層存儲。這個glusters 已經(jīng)在開始做了。
感謝各位的閱讀,以上就是“Glusterfs目錄ls性能優(yōu)化方法是什么”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對Glusterfs目錄ls性能優(yōu)化方法是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!