一種降低同步開銷的數(shù)據(jù)寫入方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,特別是涉及一種降低同步開銷的數(shù)據(jù)寫入方法及裝置。
【背景技術(shù)】
[0002]異常掉電和系統(tǒng)崩潰是存儲(chǔ)系統(tǒng)面臨的一大威脅。在往磁盤寫數(shù)據(jù)的過程中,如果出現(xiàn)異常掉電或系統(tǒng)崩潰,將造成數(shù)據(jù)丟失,使存儲(chǔ)系統(tǒng)出現(xiàn)一種“部分已經(jīng)更新成了新數(shù)據(jù),而另一部分仍然是舊數(shù)據(jù)”的現(xiàn)象,這種現(xiàn)象稱為數(shù)據(jù)不一致,由此產(chǎn)生的問題稱為崩潰一致性(crash consistency)問題,所謂崩潰一致性問題,是指由于異常掉電或系統(tǒng)崩潰使文件系統(tǒng)從一種數(shù)據(jù)一致的狀態(tài)轉(zhuǎn)換到了另一種數(shù)據(jù)不一致的狀態(tài)。要保證數(shù)據(jù)的一致性,數(shù)據(jù)更新的原子性是其中最重要的基礎(chǔ)。因此,應(yīng)用系統(tǒng)均采取事務(wù)機(jī)制來保證數(shù)據(jù)更新的原子性,主要方法是在原位置更新舊數(shù)據(jù)之前,先將新數(shù)據(jù)記錄在一個(gè)日志區(qū)中,等一個(gè)事務(wù)中所有的新數(shù)據(jù)都備份成功了,再更新原位置的舊數(shù)據(jù)。如果新數(shù)據(jù)突然掉電或系統(tǒng)崩潰沒有全部備份成功,則原位置的舊數(shù)據(jù)沒有任何變化。如果在更新原位置的舊數(shù)據(jù)過程中出現(xiàn)掉電或系統(tǒng)崩潰,則在系統(tǒng)重啟后用備份的新數(shù)據(jù)來恢復(fù)更新不成功的舊數(shù)據(jù)。通過這種方法來保證一個(gè)事務(wù)的所有相關(guān)數(shù)據(jù)要么全部是新的,要么全部是舊的,即保證數(shù)據(jù)的狀態(tài)是一致的。
[0003]我們發(fā)現(xiàn),在將新數(shù)據(jù)備份到日志區(qū)(稱為logging階段)和將新數(shù)據(jù)寫入到原位置(稱為checkpoint階段)的過程中,同步操作的開銷很大。使用同步操作的原因有二,一是對存在相關(guān)的寫操作進(jìn)行順序約束,比如,六與8存在相關(guān),且要求A在前、B在后,則在A之后必須要加一個(gè)同步操作,要求B必須在A完全寫入到持久化存儲(chǔ)區(qū)域中才能進(jìn)行寫操作。二是確保數(shù)據(jù)完全持久化。在CPU通過store指令或write系統(tǒng)調(diào)用寫數(shù)據(jù)時(shí),由于性能的原因,這些數(shù)據(jù)往往并沒有真正寫入到磁盤中,而是停留在高速緩存或易失性內(nèi)存中,只有在使用同步操作后才真正寫入到磁盤中。在事務(wù)系統(tǒng)中,在logging階段和checkpoint階段需要用到大量的同步操作,一是在logging階段,當(dāng)某個(gè)事務(wù)提交時(shí),要求使用同步操作來確保數(shù)據(jù)全部持久化到日志區(qū)中。二是在checkpoint階段,要求使用同步操作來確保位于宿主位置的數(shù)據(jù)處于最新版本。頻繁的同步操作提高了系統(tǒng)應(yīng)對異常掉電或系統(tǒng)崩潰帶來的數(shù)據(jù)可靠性風(fēng)險(xiǎn),但頻繁的同步操作對系統(tǒng)的性能影響很大。
【發(fā)明內(nèi)容】
[0004]本發(fā)明針對的計(jì)算機(jī)存儲(chǔ)模型是基于字節(jié)可尋址、且非易失的新型存儲(chǔ)介質(zhì)(我們稱之為persi stentmemory)的單級存儲(chǔ)模型,這種模型將傳統(tǒng)的二級存儲(chǔ)模型中的動(dòng)態(tài)隨機(jī)存儲(chǔ)器DRAM和機(jī)械式硬盤HDD(或固態(tài)硬盤SSD)合二為一。本發(fā)明的目的是提供一種降低同步開銷的數(shù)據(jù)寫入方法與裝置,通過減少同步操作的次數(shù)降低了同步開銷,緩解了系統(tǒng)應(yīng)對異常掉電或系統(tǒng)崩潰等可靠性問題帶來的性能開銷。
[0005]為實(shí)現(xiàn)上述目的,本發(fā)明提供了如下方案:一種降低同步開銷的數(shù)據(jù)寫入方法,獲取外部寫入的數(shù)據(jù);確定所述數(shù)據(jù)對應(yīng)的緩存頁;按照所述數(shù)據(jù)所在緩存頁的緩存模式持久化所述數(shù)據(jù)。
[0006]可選地,所述確定所述數(shù)據(jù)對應(yīng)的緩存頁之前,還包括:將所述數(shù)據(jù)拷貝到日志區(qū)中進(jìn)行備份。
[0007]可選地,所述獲取外部寫入的數(shù)據(jù)之前,還包括:
[0008]將所述緩存頁的默認(rèn)緩存模式設(shè)置為寫回模式,所述寫回模式中CPU只將數(shù)據(jù)寫到Cache中;
[0009]在采樣周期內(nèi)對所述緩存頁的數(shù)據(jù)寫入次數(shù)進(jìn)行統(tǒng)計(jì),直到采樣周期結(jié)束,得到各所述緩存頁的寫入次數(shù);
[0010]在采樣周期結(jié)束后,計(jì)算各所述緩存頁的平均寫入次數(shù),將所述平均寫入次數(shù)記為 Avg;
[0011]將寫入次數(shù)小于l/2*Avg的緩存頁的緩存模式設(shè)置為不緩存模式,所述不緩存模式中CPU只將數(shù)據(jù)寫入到片外存儲(chǔ)器中;將寫入次數(shù)大于l/2*Avg且小于Avg的緩存頁的緩存模式設(shè)置為寫穿透模式,所述寫穿透模式中CPU不僅將數(shù)據(jù)寫到所述Cache中,還將數(shù)據(jù)寫入到片外存儲(chǔ)器中;將寫入次數(shù)大于Avg的緩存頁的緩存模式保持為寫回模式不變。
[0012]可選地,所述將所述數(shù)據(jù)拷貝到日志區(qū)中進(jìn)行備份,具體包括:
[0013]將所述數(shù)據(jù)拷貝到便箋式存儲(chǔ)器SPM進(jìn)行備份,所述便箋式存儲(chǔ)器SPM的存儲(chǔ)介質(zhì)為自旋轉(zhuǎn)移力矩隨機(jī)存儲(chǔ)器STT-RAM,所述便箋式存儲(chǔ)器SPM位于處理器芯片內(nèi)部。
[0014]為實(shí)現(xiàn)上述目的,本發(fā)明還提供了另外一種方案,一種降低同步開銷的數(shù)據(jù)寫入裝置,所述裝置包括:外部數(shù)據(jù)獲取單元,用于獲取外部寫入的數(shù)據(jù);數(shù)據(jù)緩存頁確定單元,用于確定所述數(shù)據(jù)對應(yīng)的緩存頁;數(shù)據(jù)緩存單元,用于按照所述數(shù)據(jù)所在緩存頁的緩存模式持久化所述數(shù)據(jù)。
[0015]可選地,所述裝置還包括:數(shù)據(jù)備份單元,用于將所述數(shù)據(jù)拷貝到日志區(qū)中進(jìn)行備份。
[0016]可選地,所述裝置還包括:默認(rèn)模式設(shè)置單元,用于將寫入數(shù)據(jù)默認(rèn)的緩存模式設(shè)置為寫回模式;
[0017]寫入次數(shù)統(tǒng)計(jì)單元,用于在采樣周期內(nèi)對緩存頁的寫入次數(shù)進(jìn)行統(tǒng)計(jì),直到采樣周期結(jié)束,得到各緩存頁的寫入次數(shù);
[0018]平均次數(shù)計(jì)算單元,在采樣周期結(jié)束后,用于計(jì)算所述各緩存頁的平均寫入次數(shù),將所述平均寫入次數(shù)記為Avg;
[0019]緩存模式設(shè)置單元,用于對各所述緩存頁的緩存模式進(jìn)行設(shè)置,將寫入次數(shù)小于l/2*Avg的緩存頁的緩存模式設(shè)置為不緩存模式,所述不緩存模式為CPU只將數(shù)據(jù)寫入到片外存儲(chǔ)器中;將寫入次數(shù)大于l/2*Avg且小于Avg的頁的緩存模式設(shè)置為寫穿透模式,所述寫穿透模式為CPU不僅將數(shù)據(jù)寫到所述Cache中,還將數(shù)據(jù)寫入到片外存儲(chǔ)器中;將寫入次數(shù)大于Avg的緩存頁的緩存模式保持為寫回模式不變。
[0020]可選地,所述數(shù)據(jù)備份單元,具體包括:數(shù)據(jù)備份子單元,用于將所述數(shù)據(jù)拷貝到便箋式存儲(chǔ)器SPM進(jìn)行備份,所述便箋式存儲(chǔ)器SPM的存儲(chǔ)介質(zhì)為自旋轉(zhuǎn)移力矩隨機(jī)存儲(chǔ)器STT-RAM,所述便箋式存儲(chǔ)器SPM位于處理器芯片內(nèi)部。
[0021]本發(fā)明提出基于SPM的片上日志裝置,使用STT-RAM這種新型非易失性存儲(chǔ)介質(zhì),將日志記錄到片上存儲(chǔ)區(qū)域,消除了將日志寫到片外帶來的同步開銷。而且,本發(fā)明提出基于緩存模式的自適應(yīng)同步,針對不同的數(shù)據(jù)采取不同的緩存模式,由于有些模式不需要同步,從而最終減少了同步次數(shù),降低了同步開銷。
【附圖說明】
[0022]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0023]圖1為本發(fā)明降低同步開銷的數(shù)據(jù)寫入方法的流程圖;
[0024]圖2為本發(fā)明緩存頁的緩存模式設(shè)置方法流程圖;
[0025]圖3為本發(fā)明降低同步開銷的數(shù)據(jù)寫入裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0026]本發(fā)明的目的是提供一種寫入方法與裝置,以降低同步開銷,提高系統(tǒng)應(yīng)對異常掉電或系統(tǒng)崩潰帶來的數(shù)據(jù)可靠性。
[0027]為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和【具體實(shí)施方式】對本發(fā)明作進(jìn)一步詳細(xì)的說明。
[0028]圖1為本發(fā)明降低同步開銷的數(shù)據(jù)寫入方法的流程圖,如圖1所示,本發(fā)明是一種降低同步開銷的數(shù)據(jù)寫入方法,具體包括如下步驟:
[0029]100,獲取外部寫入的數(shù)據(jù);
[0030]101,將所述數(shù)據(jù)拷貝到日志區(qū)中進(jìn)行備份,具體包括:將所述數(shù)據(jù)拷貝到便箋式存儲(chǔ)器SPM進(jìn)行備份,所述便箋式存儲(chǔ)器SPM的存儲(chǔ)介質(zhì)為自旋轉(zhuǎn)移力矩隨機(jī)存儲(chǔ)器STT-RAM,所述便箋式存儲(chǔ)器SPM位于處理器芯片內(nèi)部;
[0031]102,確定所述數(shù)據(jù)對應(yīng)的緩存頁;
[0032]103,按照所述數(shù)據(jù)所在緩存頁的緩存模式持久化所述數(shù)據(jù)。
[0033]在上述步驟之前,需要對各緩存頁的緩存模式