一種處理文件請求的方法與系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及元數(shù)據(jù)緩存領(lǐng)域,特別是涉及一種處理文件請求的方法與系統(tǒng)。
【背景技術(shù)】
[0002]隨著云存儲應(yīng)用的快速發(fā)展,尤其互聯(lián)網(wǎng)業(yè)務(wù)的快速發(fā)展,海量小文件的應(yīng)用對分布式文件系統(tǒng)元數(shù)據(jù)性能提出更高的要求。一般情況,元數(shù)據(jù)集群管理海量的文件元數(shù)據(jù)信息,需要使用大內(nèi)存容量空間,這樣多cpu、多核使用內(nèi)存空間就會存在競爭及嚴(yán)重的緩存性能冋題。
[0003]—方面,Cpu鎖、核鎖造成并發(fā)下降,系統(tǒng)處理性能不高;另一方面,元數(shù)據(jù)數(shù)據(jù)處理在大內(nèi)存空間進(jìn)行元數(shù)據(jù)檢索、修改等操作,就會造成核的硬件多級緩存性能很難發(fā)揮,TLB性能、cache性能很差,最終計算機(jī)硬件很難有效發(fā)揮性能。
【發(fā)明內(nèi)容】
[0004]有鑒于此,本發(fā)明的主要目的在于提供一種處理文件請求的方法與系統(tǒng),可以提高多線程緩存性能和內(nèi)存訪問性能。
[0005]為實現(xiàn)上述目的,本發(fā)明提供了一種處理文件請求的方法,包括:
[0006]將總內(nèi)存空間按第一預(yù)設(shè)規(guī)則分成多個內(nèi)存池;
[0007]將每個內(nèi)存池分別與一個對應(yīng)的元數(shù)據(jù)處理線程進(jìn)行綁定,將每個元數(shù)據(jù)線程分別與一個對應(yīng)的服務(wù)核進(jìn)行綁定;
[0008]將全部元數(shù)據(jù)按第二預(yù)設(shè)規(guī)則與各所述元數(shù)據(jù)處理線程建立對應(yīng)關(guān)系,并根據(jù)每個元數(shù)據(jù)標(biāo)識和對應(yīng)的線程編號生成目錄表;
[0009]接受元數(shù)據(jù)請求,確定所述元數(shù)據(jù)請求中的各目標(biāo)元數(shù)據(jù)的元數(shù)據(jù)標(biāo)識;
[0010]根據(jù)各所述目標(biāo)元數(shù)據(jù)的元數(shù)據(jù)標(biāo)識通過所述目錄表查找各所述目標(biāo)元數(shù)據(jù)對應(yīng)的各目標(biāo)元數(shù)據(jù)處理線程,將各所述目標(biāo)元數(shù)據(jù)分別存儲至對應(yīng)的目標(biāo)元數(shù)據(jù)處理線程具有綁定關(guān)系的內(nèi)存池中。
[0011 ] 優(yōu)選地,所述方法還包括:
[0012]當(dāng)內(nèi)存池負(fù)載不均衡時,調(diào)整所述目錄表中各元數(shù)據(jù)處理線程的平衡均值,根據(jù)所述平衡均值重新建立全部元數(shù)據(jù)與各所述元數(shù)據(jù)處理線程的對應(yīng)關(guān)系,進(jìn)行元數(shù)據(jù)重新負(fù)載。
[0013]優(yōu)選地,進(jìn)行元數(shù)據(jù)重新負(fù)載包括:
[0014]接受新元數(shù)據(jù)請求,確定所述新元數(shù)據(jù)請求中的各目標(biāo)元數(shù)據(jù)的元數(shù)據(jù)標(biāo)識;
[0015]根據(jù)各所述目標(biāo)元數(shù)據(jù)的元數(shù)據(jù)標(biāo)識通過所述目錄表查找各所述目標(biāo)元數(shù)據(jù)對應(yīng)的各目標(biāo)元數(shù)據(jù)處理線程,將各所述目標(biāo)元數(shù)據(jù)分別存儲至對應(yīng)的目標(biāo)元數(shù)據(jù)處理線程具有綁定關(guān)系的內(nèi)存池中。
[0016]優(yōu)選地,所述第一預(yù)設(shè)規(guī)則為將總的內(nèi)存空間按照預(yù)設(shè)內(nèi)存池數(shù)目均分。
[0017]優(yōu)選地,所述第二預(yù)設(shè)規(guī)則為將全部元數(shù)據(jù)平均分配至各所述元數(shù)據(jù)處理線程。
[0018]本發(fā)明還提供了一種處理文件請求的系統(tǒng),包括:
[0019]分塊模塊,用于將總內(nèi)存空間按第一預(yù)設(shè)規(guī)則分成多個內(nèi)存池;
[0020]綁定模塊,用于將每個內(nèi)存池分別與一個對應(yīng)的元數(shù)據(jù)處理線程進(jìn)行綁定,將每個元數(shù)據(jù)線程分別與一個對應(yīng)的服務(wù)核進(jìn)行綁定;
[0021]目錄表生成模塊,用于將全部元數(shù)據(jù)按第二預(yù)設(shè)規(guī)則與各所述元數(shù)據(jù)處理線程建立對應(yīng)關(guān)系,并根據(jù)每個元數(shù)據(jù)標(biāo)識和對應(yīng)的線程編號生成目錄表;
[0022]元數(shù)據(jù)標(biāo)識確定模塊,用于接受元數(shù)據(jù)請求,確定所述元數(shù)據(jù)請求中的各目標(biāo)元數(shù)據(jù)的元數(shù)據(jù)標(biāo)識;
[0023]請求處理模塊,用于根據(jù)各所述目標(biāo)元數(shù)據(jù)的元數(shù)據(jù)標(biāo)識通過所述目錄表查找各所述目標(biāo)元數(shù)據(jù)對應(yīng)的各目標(biāo)元數(shù)據(jù)處理線程,將各所述目標(biāo)元數(shù)據(jù)分別存儲至對應(yīng)的目標(biāo)元數(shù)據(jù)處理線程具有綁定關(guān)系的內(nèi)存池中。
[0024]優(yōu)選地,所述系統(tǒng)還包括:
[0025]負(fù)載均衡模塊,用于當(dāng)內(nèi)存池負(fù)載不均衡時,調(diào)整所述目錄表中各元數(shù)據(jù)處理線程的平衡均值,根據(jù)所述平衡均值重新建立全部元數(shù)據(jù)與各所述元數(shù)據(jù)處理線程的對應(yīng)關(guān)系,進(jìn)行元數(shù)據(jù)重新負(fù)載。
[0026]優(yōu)選地,所述第一預(yù)設(shè)規(guī)則為將總的內(nèi)存空間按照預(yù)設(shè)內(nèi)存池數(shù)目均分。
[0027]優(yōu)選地,所述第二預(yù)設(shè)規(guī)則為將全部元數(shù)據(jù)平均分配至各所述元數(shù)據(jù)處理線程。
[0028]應(yīng)用本發(fā)明提供的一種處理文件請求的方法與系統(tǒng),將總內(nèi)存空間按第一預(yù)設(shè)規(guī)則分成多個內(nèi)存池,將每個內(nèi)存池分別與一個對應(yīng)的元數(shù)據(jù)處理線程進(jìn)行綁定,將每個元數(shù)據(jù)線程分別與一個對應(yīng)的服務(wù)核進(jìn)行綁定,將全部元數(shù)據(jù)按第二預(yù)設(shè)規(guī)則與各所述元數(shù)據(jù)處理線程建立對應(yīng)關(guān)系,并根據(jù)每個元數(shù)據(jù)標(biāo)識和對應(yīng)的線程編號生成目錄表,接受元數(shù)據(jù)請求,確定所述元數(shù)據(jù)請求中的各目標(biāo)元數(shù)據(jù)的元數(shù)據(jù)標(biāo)識,根據(jù)各所述目標(biāo)元數(shù)據(jù)的元數(shù)據(jù)標(biāo)識通過所述目錄表查找各所述目標(biāo)元數(shù)據(jù)對應(yīng)的各目標(biāo)元數(shù)據(jù)處理線程,將各所述目標(biāo)元數(shù)據(jù)分別存儲至對應(yīng)的目標(biāo)元數(shù)據(jù)處理線程具有綁定關(guān)系的內(nèi)存池中,線程綁定核,單核使用獨(dú)立小內(nèi)存空間,提高高速緩存的命中,提高多線程的緩存性能,元數(shù)據(jù)按照目錄多線程多核調(diào)度處理請求,多線程間免鎖,多cpu間減少內(nèi)存訪問,提高內(nèi)存訪問性會K。
【附圖說明】
[0029]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
[0030]圖1為本發(fā)明一種處理文件請求的方法一實施例的流程圖;
[0031]圖2為本發(fā)明一種處理文件請求的方法又一實施例的流程圖;
[0032]圖3為本發(fā)明一種處理文件請求的方法實施例的原理示意圖;
[0033]圖4為本發(fā)明一種處理文件請求的系統(tǒng)一實施例的結(jié)構(gòu)示意圖;
[0034]圖5為本發(fā)明一種處理文件請求的系統(tǒng)又一實施例的結(jié)構(gòu)示意圖。
【具體實施方式】
[0035]下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。
[0036]本發(fā)明提供了一種處理文件請求的方法,圖1示出了本發(fā)明處理文件請求的方法的一個實施例的流程圖,包括:
[0037]步驟SlOl:將總內(nèi)存空間按第一預(yù)設(shè)規(guī)則分成多個內(nèi)存池;
[0038]第一預(yù)設(shè)規(guī)則如將總的內(nèi)存空間按照預(yù)設(shè)內(nèi)存池數(shù)目均分,得到多個內(nèi)存較小的內(nèi)存池。
[0039]步驟S102:將每個內(nèi)存池分別與一個對應(yīng)的元數(shù)據(jù)處理線程進(jìn)行綁定,將每個元數(shù)據(jù)線程分別與一個對應(yīng)的服務(wù)核進(jìn)行綁定;
[0040]每個元數(shù)據(jù)處理線程綁定對應(yīng)的服務(wù)核,并綁定對應(yīng)的內(nèi)存池,各cpu之間不互訪訪問,各核間不互相訪問,僅對應(yīng)線程訪問獨(dú)立的小的內(nèi)存空間,數(shù)據(jù)處理過程免鎖,CPU間的數(shù)據(jù)訪問免拷貝,提高處理的并發(fā)執(zhí)行。
[0041]步驟S103:將全部元數(shù)據(jù)按第二預(yù)設(shè)規(guī)則與各所述元數(shù)據(jù)處理線程建立對應(yīng)關(guān)系,并根據(jù)每個元數(shù)據(jù)標(biāo)識和對應(yīng)的線程編號生成目錄表;
[0042]第二預(yù)設(shè)規(guī)則如將全部元數(shù)據(jù)平均分配至各所述元數(shù)據(jù)處理線程,使全部元數(shù)據(jù)與各所述元數(shù)據(jù)處理線程建立對應(yīng)關(guān)系,根據(jù)每個元數(shù)據(jù)標(biāo)識和對應(yīng)的線程編號生成目錄表,可采用動態(tài)hash環(huán)算法。
[0043]每個元數(shù)據(jù)處理線程讀/寫內(nèi)存空間被縮小,讀寫的緩存被有效的提升,一個η核的系統(tǒng),cache緩存及TLB傳輸后備緩沖器緩存大小為m,元數(shù)據(jù)空間為M,緩存命中率p:使用前,P = m/M,使用后,P = m/(M/n),降低單核快速緩存資源競爭,提高元數(shù)據(jù)處理的性能。
[0044]步驟S104:接受元數(shù)據(jù)請求,確定所述元數(shù)據(jù)請求中的各目標(biāo)元數(shù)據(jù)的元數(shù)據(jù)標(biāo)識;
[0045]文件系統(tǒng)的元數(shù)據(jù)ino標(biāo)識是全局統(tǒng)計連續(xù)分配的資源。
[0046]步驟S105:根據(jù)各所述目標(biāo)元數(shù)據(jù)的元數(shù)據(jù)標(biāo)識通過所述目錄表查找各所述目標(biāo)元數(shù)據(jù)對應(yīng)的各目標(biāo)元數(shù)據(jù)處理線程,將各所述目標(biāo)元數(shù)據(jù)分別存儲至對應(yīng)的目標(biāo)元數(shù)據(jù)處理線程具有綁定關(guān)系的內(nèi)存池中。
[0047]元數(shù)據(jù)請求中根據(jù)元數(shù)據(jù)ino查目錄,獲取對應(yīng)的線程號,將元數(shù)據(jù)分配到指定的線程,元數(shù)據(jù)實現(xiàn)到對應(yīng)內(nèi)存池的存儲。
[0048]應(yīng)用本實施例提供的一種處理文件請求的方法,如圖2所示,線程綁定核與對應(yīng)內(nèi)存池,單核使用獨(dú)立小內(nèi)存空間,提高高速緩存的命中,提高多線程的緩存性能,元數(shù)據(jù)按照目錄多線程多核調(diào)度處理請求,多線程間免鎖,多cpu間減少內(nèi)存訪問,提高內(nèi)存訪問性能。