數(shù)據(jù)塊緩存方法和裝置制造方法
【專利摘要】本發(fā)明實施例提供一種數(shù)據(jù)塊緩存方法和裝置。本發(fā)明數(shù)據(jù)塊緩存方法,包括:確定是否調整當前熱點數(shù)據(jù)塊的大小,若確定調整當前熱點數(shù)據(jù)塊的大小,則調整當前熱點數(shù)據(jù)塊的大小,將調整后的當前熱點數(shù)據(jù)塊緩存到固態(tài)硬盤中。本發(fā)明實施例從而解決了現(xiàn)有技術中IO設備訪問的數(shù)據(jù)的大小偏離預先設定的數(shù)據(jù)塊的大小過多時,數(shù)據(jù)塊的大小、內存開銷和SSD利用率三因素會失衡,無法自適應多種IO業(yè)務場景混合的問題,實現(xiàn)了在多種IO業(yè)務場景下數(shù)據(jù)塊的大小、內存開銷和SSD利用率三因素之間的平衡。
【專利說明】數(shù)據(jù)塊緩存方法和裝置【技術領域】
[0001 ] 本發(fā)明實施例涉及信息通信技術,尤其涉及一種數(shù)據(jù)塊緩存方法和裝置。
【背景技術】
[0002]在多級緩存架構中,物理內存作為一級緩存,通常將固態(tài)硬盤(Solid StateDevice,簡稱SSD)作為二級緩存,以利用SSD盤的快速讀寫能力,滿足客戶機的快速讀寫需求,同時還可以彌補物理內存容量的不足。
[0003]SSD作為二級緩存的實施方案,現(xiàn)有技術中通常是通過監(jiān)控輸入輸出(Input/Output,簡稱10)設備以數(shù)據(jù)塊為單位識別出熱點數(shù)據(jù)塊,熱點數(shù)據(jù)塊是IO設備最近頻繁訪問的數(shù)據(jù)塊,并將熱點數(shù)據(jù)塊復制到SSD上緩存,并且數(shù)據(jù)塊的大小是固定的,其中,監(jiān)控設備需要記錄數(shù)據(jù)塊的訪問頻率,緩存數(shù)據(jù)需要記錄緩存數(shù)據(jù)塊與SSD的存儲單元的映射信息,都需要一定的內存開銷。
[0004]然而,該方案僅在IO設備訪問的數(shù)據(jù)的大小與設定的數(shù)據(jù)塊的大小匹配度較高時,才能使數(shù)據(jù)塊的大小、內存開銷和SSD利用率三因素之間達到均衡。當IO設備訪問的數(shù)據(jù)的大小偏離預先設定的數(shù)據(jù)塊的大小較大時,會導致上述三因素之間無法均衡,從而無法自適應多種IO業(yè)務場景混合的情況。
【發(fā)明內容】
[0005]本發(fā)明實施例提供一種數(shù)據(jù)塊緩存方法和裝置,以解決現(xiàn)有技術中IO設備訪問的數(shù)據(jù)的大小偏離預先設定的數(shù)據(jù)塊的大小過多時,數(shù)據(jù)塊的大小、內存開銷和SSD利用率三因素會失衡,無法自適應多 種IO業(yè)務場景混合的問題。
[0006]第一方面,本發(fā)明實施例提供一種數(shù)據(jù)塊緩存方法,包括:
[0007]確定是否調整當前熱點數(shù)據(jù)塊的大??;
[0008]若確定調整所述當前熱點數(shù)據(jù)塊的大小,則調整所述當前熱點數(shù)據(jù)塊的大小;
[0009]將調整后的當前熱點數(shù)據(jù)塊緩存到固態(tài)硬盤中。
[0010]在第一方面的第一種可能的實現(xiàn)方式中,所述確定是否調整當前熱點數(shù)據(jù)塊的大小,包括:
[0011]根據(jù)所述當前熱點數(shù)據(jù)塊的大小、所述當前熱點數(shù)據(jù)塊的下一個熱點數(shù)據(jù)塊的大小和所述當前熱點數(shù)據(jù)塊與所述下一個熱點數(shù)據(jù)塊之間的一個冷數(shù)據(jù)塊的大小,確定是否調整所述當前熱點數(shù)據(jù)塊的大小。
[0012]根據(jù)第一方面的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,所述根據(jù)所述當前熱點數(shù)據(jù)塊的大小、所述當前熱點數(shù)據(jù)塊的下一個熱點數(shù)據(jù)塊的大小和所述當前熱點數(shù)據(jù)塊與所述下一個熱點數(shù)據(jù)塊之間的一個冷數(shù)據(jù)塊的大小,確定是否調整所述當前熱點數(shù)據(jù)塊的大小,包括:
[0013]根據(jù)所述當前熱點數(shù)據(jù)塊的大小a和所述一個冷數(shù)據(jù)塊的大小c計算第一比值X,以及根據(jù)所述下一個熱點數(shù)據(jù)塊的大小b和所述一個冷數(shù)據(jù)塊的大小c計算第二比值y,其 PP
中,x=—,
a b
[0014]若第一比值x小于等于第一門限值或所述第二比值y小于等于第二門限值,則確定調整所述當前熱點數(shù)據(jù)塊的大小。
[0015]根據(jù)第一方面的第一種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,所述根據(jù)所述當前熱點數(shù)據(jù)塊的大小、所述當前熱點數(shù)據(jù)塊的下一個熱點數(shù)據(jù)塊的大小和所述當前熱點數(shù)據(jù)塊與所述下一個熱點數(shù)據(jù)塊之間的一個冷數(shù)據(jù)塊的大小,確定是否調整所述當前熱點數(shù)據(jù)塊的大小,包括:
[0016]根據(jù)所述當前熱點數(shù)據(jù)塊的大小a、所述下一個熱點數(shù)據(jù)塊的大小b和所述一個冷數(shù)據(jù)塊的大小c計算第三比值z,其中,z=5;
[0017]若第三比值z小于等于第三門限值,則確定調整所述當前熱點數(shù)據(jù)塊的大小。
[0018]根據(jù)第一方面的第一種可能的實現(xiàn)方式,在第四種可能的實現(xiàn)方式中,所述根據(jù)所述當前熱點數(shù)據(jù)塊的大小、所述當前熱點數(shù)據(jù)塊的下一個熱點數(shù)據(jù)塊的大小和所述當前熱點數(shù)據(jù)塊與所述下一個熱點數(shù)據(jù)塊之間的一個冷數(shù)據(jù)塊的大小,確定是否調整所述當前熱點數(shù)據(jù)塊的大小,包括:
[0019]根據(jù)所述當前熱點數(shù)據(jù)塊的大小a、所述下一個熱點數(shù)據(jù)塊的大小b和所述一個冷數(shù)據(jù)塊的大小c計算第四比值q,其中,;
[0020]若第四比值q小于等于第四門限值,則確定調整所述當前熱點數(shù)據(jù)塊的大小。
[0021]根據(jù)第一方面的第二種至第四種可能的實現(xiàn)方式的任意一種,在第五種可能的實現(xiàn)方式中,所述調整所述當前熱點數(shù)據(jù)塊的大小,包括:
[0022]合并所述當前熱點數(shù)據(jù)塊、所述下一個熱點數(shù)據(jù)塊和所述一個冷數(shù)據(jù)塊為一個新的熱點數(shù)據(jù)塊,并將所述一個新的熱點數(shù)據(jù)塊作為調整后的當前熱點數(shù)據(jù)塊。
[0023]根據(jù)第一方面,在第六種可能的實現(xiàn)方式中,所述確定是否調整當前熱點數(shù)據(jù)塊的大小,包括:
[0024]確定所述當前熱點數(shù)據(jù)塊的相鄰的數(shù)據(jù)塊是否為熱點數(shù)據(jù)塊;
[0025]若確定所述當前熱點數(shù)據(jù)塊的相鄰的數(shù)據(jù)塊為熱點數(shù)據(jù)塊,則確定調整當前熱點數(shù)據(jù)塊的大?。?br>
[0026]所述調整所述當前熱點數(shù)據(jù)塊的大小,包括:
[0027]合并所述當前熱點數(shù)據(jù)塊和所述當前熱點數(shù)據(jù)塊的相鄰的數(shù)據(jù)塊為一個新的熱點數(shù)據(jù)塊,并將所述一個新的熱點數(shù)據(jù)塊作為調整后的當前熱點數(shù)據(jù)塊。
[0028]根據(jù)第一方面,在第七種可能的實現(xiàn)方式中,所述確定是否調整當前熱點數(shù)據(jù)塊的大小,包括:
[0029]根據(jù)輸入輸出設備訪問的數(shù)據(jù)的大小的平均值和所述當前熱點數(shù)據(jù)塊的大小,確定是否調整當前熱點數(shù)據(jù)塊的大小;
[0030]若所述當前熱點數(shù)據(jù)塊的大小小于所述平均值,則確定調整所述當前熱點數(shù)據(jù)塊的大??;
[0031]所述調整所述當前熱點數(shù)據(jù)塊的大小,包括:[0032]向后補齊所述當前熱點數(shù)據(jù)塊為一個新的熱點數(shù)據(jù)塊,以使所述一個新的熱點數(shù)據(jù)塊的大小等于所述平均值,并將所述一個新的熱點數(shù)據(jù)塊作為調整后的當前熱點數(shù)據(jù)塊。[0033]根據(jù)第一方面,在第八種可能的實現(xiàn)方式中,所述確定是否調整當前熱點數(shù)據(jù)塊的大小,包括:
[0034]統(tǒng)計與所述當前熱點數(shù)據(jù)塊相鄰的兩個數(shù)據(jù)塊被輸入輸出設備訪問的次數(shù);
[0035]若與所述當前熱點數(shù)據(jù)塊相鄰的數(shù)據(jù)塊被輸入輸出設備訪問的次數(shù)大于等于1,則確定調整當前熱點數(shù)據(jù)塊的大?。?br>
[0036]所述調整所述當前熱點數(shù)據(jù)塊的大小,包括:
[0037]合并所述當前熱點數(shù)據(jù)塊和與所述當前熱點數(shù)據(jù)塊相鄰的數(shù)據(jù)塊為一個新的熱點數(shù)據(jù)塊,并將所述一個新的熱點數(shù)據(jù)塊作為調整后的當前熱點數(shù)據(jù)塊。
[0038]根據(jù)第一方面、第一方面的第二種至第八種可能的實現(xiàn)方式的任意一種,在第九種可能的實現(xiàn)方式中,在所述將調整后的當前熱點數(shù)據(jù)塊緩存到固態(tài)硬盤中之后,還包括:
[0039]將所述調整后的當前熱點數(shù)據(jù)塊的下一個熱點數(shù)據(jù)塊作為當前熱點數(shù)據(jù)塊,并執(zhí)行所述確定是否調整當前熱點數(shù)據(jù)塊的大小的步驟。
[0040]根據(jù)第一方面、第一方面的第二種至第八種可能的實現(xiàn)方式的任意一種,在第十種可能的實現(xiàn)方式中,在所述調整所述當前熱點數(shù)據(jù)塊的大小之后,還包括:
[0041]將所述調整后的當前熱點數(shù)據(jù)塊作為當前熱點數(shù)據(jù)塊,并執(zhí)行所述確定是否調整當前熱點數(shù)據(jù)塊的大小的步驟。
[0042]根據(jù)第一方面、第一方面的第二種至第十種可能的實現(xiàn)方式的任意一種,在第十一種可能的實現(xiàn)方式中,還包括:
[0043]若確定不調整當前熱點數(shù)據(jù)塊的大小,則將當前熱點數(shù)據(jù)塊緩存到固態(tài)硬盤中,并將當前熱點數(shù)據(jù)塊的下一個熱點數(shù)據(jù)塊作為當前熱點數(shù)據(jù)塊,并執(zhí)行所述確定是否調整當前熱點數(shù)據(jù)塊的大小的步驟。
[0044]第二方面,本發(fā)明實施例提供一種數(shù)據(jù)塊緩存裝置,包括:
[0045]調整確定模塊,用于確定是否調整當前熱點數(shù)據(jù)塊的大?。?br>
[0046]熱點數(shù)據(jù)塊調整模塊,用于若確定調整所述當前熱點數(shù)據(jù)塊的大小,則調整所述當前熱點數(shù)據(jù)塊的大??;
[0047]數(shù)據(jù)塊緩存模塊,用于將調整后的當前熱點數(shù)據(jù)塊緩存到固態(tài)硬盤中。
[0048]在第二方面的第一種可能的實現(xiàn)方式中,所述調整確定模塊,具體用于根據(jù)所述當前熱點數(shù)據(jù)塊的大小、所述當前熱點數(shù)據(jù)塊的下一個熱點數(shù)據(jù)塊的大小和所述當前熱點數(shù)據(jù)塊與所述下一個熱點數(shù)據(jù)塊之間的一個冷數(shù)據(jù)塊的大小,確定是否調整所述當前熱點數(shù)據(jù)塊的大小。
[0049]根據(jù)第二方面的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,所述調整確定模塊,具體用于根據(jù)所述當前熱點數(shù)據(jù)塊的大小a和所述一個冷數(shù)據(jù)塊的大小c計算第一比值X,以及根據(jù)所述下一個熱點數(shù)據(jù)塊的大小b和所述一個冷數(shù)據(jù)塊的大小c計算第
CQ
二比值y,其中,x=7,若第一比值X小于等于第一門限值或所述第二比值I小于等于第二門限值,則確定調整所述當前熱點數(shù)據(jù)塊的大小。
[0050]根據(jù)第二方面的第一種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,所述調整確定模塊,具體用于根據(jù)所述當前熱點數(shù)據(jù)塊的大小a、所述下一個熱點數(shù)據(jù)塊的大小b和
所述一個冷數(shù)據(jù)塊的大小c計算第三比值z,其中,z=^ ?若第三比值z小于等于第三門
9
限值,則確定調整所述當前熱點數(shù)據(jù)塊的大小。
[0051]根據(jù)第二方面的第一種可能的實現(xiàn)方式,在第四種可能的實現(xiàn)方式中,所述調整確定模塊,具體用于根據(jù)所述當前熱點數(shù)據(jù)塊的大小a、所述下一個熱點數(shù)據(jù)塊的大小b和
所述一個冷數(shù)據(jù)塊的大小c計算第四比值q,其中,.若第四比值q小于等于第四
'I
門限值,則確定調整所述當前熱點數(shù)據(jù)塊的大小。
[0052]根據(jù)第二方面的第二種至第四種可能的實現(xiàn)方式的任意一種,在第五種可能的實現(xiàn)方式中,所述熱點數(shù)據(jù)塊調整模塊,具體用于合并所述當前熱點數(shù)據(jù)塊、所述下一個熱點數(shù)據(jù)塊和所述一個冷數(shù)據(jù)塊為一個新的熱點數(shù)據(jù)塊,并將所述一個新的熱點數(shù)據(jù)塊作為調整后的當前熱點數(shù)據(jù)塊。
[0053]根據(jù)第二方面,在第六種可能的實現(xiàn)方式中,所述調整確定模塊,具體用于確定所述當前熱點數(shù)據(jù)塊的相鄰的數(shù)據(jù)塊是否為熱點數(shù)據(jù)塊;若確定所述當前熱點數(shù)據(jù)塊的相鄰的數(shù)據(jù)塊為熱點數(shù)據(jù)塊,則確定調整當前熱點數(shù)據(jù)塊的大??;
[0054]所述熱點數(shù)據(jù)塊調整模塊,具體用于合并所述當前熱點數(shù)據(jù)塊和所述當前熱點數(shù)據(jù)塊的相鄰的數(shù)據(jù)塊為一個新的熱點數(shù)據(jù)塊,并將所述一個新的熱點數(shù)據(jù)塊作為調整后的當前熱點數(shù)據(jù)塊。
[0055]根據(jù)第二方面,在第七種可能的實現(xiàn)方式中,所述調整確定模塊,具體用于根據(jù)輸入輸出設備訪問的數(shù)據(jù)的大小的平均值和所述當前熱點數(shù)據(jù)塊的大小,確定是否調整當前熱點數(shù)據(jù)塊的大??;若所述當前熱點數(shù)據(jù)塊的大小小于所述平均值,則確定調整所述當前熱點數(shù)據(jù)塊的大??;
[0056]所述熱點數(shù)據(jù)塊調整模塊,具體用于向后補齊所述當前熱點數(shù)據(jù)塊為一個新的熱點數(shù)據(jù)塊,以使所述一個新的熱點數(shù)據(jù)塊的大小等于所述平均值,并將所述一個新的熱點數(shù)據(jù)塊作為調整后的當前熱點數(shù)據(jù)塊。
[0057]根據(jù)第二方面,在第八種可能的實現(xiàn)方式中,所述調整確定模塊,具體用于統(tǒng)計與所述當前熱點數(shù)據(jù)塊相鄰的兩個數(shù)據(jù)塊被輸入輸出設備訪問的次數(shù);若與所述當前熱點數(shù)據(jù)塊相鄰的數(shù)據(jù)塊被輸入輸出設備訪問的次數(shù)大于等于1,則確定調整當前熱點數(shù)據(jù)塊的大小;
[0058]所述熱點數(shù)據(jù)塊調整模塊,具體用于合并所述當前熱點數(shù)據(jù)塊和與所述當前熱點數(shù)據(jù)塊相鄰的數(shù)據(jù)塊為一個新的熱點數(shù)據(jù)塊,并將所述一個新的熱點數(shù)據(jù)塊作為調整后的當前熱點數(shù)據(jù)塊 。
[0059]根據(jù)第二方面、第二方面的第二種至第八種可能的實現(xiàn)方式的任意一種,在第九種可能的實現(xiàn)方式中,所述調整確定模塊,還用于在所述將調整后的當前熱點數(shù)據(jù)塊緩存到固態(tài)硬盤中之后,將所述調整后的當前熱點數(shù)據(jù)塊的下一個熱點數(shù)據(jù)塊作為當前熱點數(shù)據(jù)塊,并執(zhí)行所述確定是否調整當前熱點數(shù)據(jù)塊的大小的步驟。[0060]根據(jù)第二方面、第二方面的第二種至第八種可能的實現(xiàn)方式的任意一種,在第十種可能的實現(xiàn)方式中,所述調整確定模塊,還用于在所述調整所述當前熱點數(shù)據(jù)塊的大小之后,將所述調整后的當前熱點數(shù)據(jù)塊作為當前熱點數(shù)據(jù)塊,并執(zhí)行所述確定是否調整當前熱點數(shù)據(jù)塊的大小的步驟。
[0061]根據(jù)第二方面、第二方面的第二種至第十種可能的實現(xiàn)方式的任意一種,在第十一種可能的實現(xiàn)方式中,所述調整確定模塊,還用于若確定不調整當前熱點數(shù)據(jù)塊的大小,則將當前熱點數(shù)據(jù)塊緩存到固態(tài)硬盤中,并將當前熱點數(shù)據(jù)塊的下一個熱點數(shù)據(jù)塊作為當前熱點數(shù)據(jù)塊,并執(zhí)行所述確定是否調整當前熱點數(shù)據(jù)塊的大小的步驟。
[0062]本發(fā)明實施例數(shù)據(jù)塊緩存方法和裝置,通過確定是否調整當前熱點數(shù)據(jù)塊的大小,若確定調整當前熱點數(shù)據(jù)塊的大小,則調整當前熱點數(shù)據(jù)塊的大小并將調整后的當前熱點數(shù)據(jù)塊緩存到固態(tài)硬盤中。從而解決了現(xiàn)有技術中IO設備訪問的數(shù)據(jù)的大小偏離預先設定的數(shù)據(jù)塊的大小過多時,數(shù)據(jù)塊的大小、內存開銷和SSD利用率三因素會失衡,無法自適應多種IO業(yè)務場景混合的問題,實現(xiàn)了在多種IO業(yè)務場景下數(shù)據(jù)塊的大小、內存開銷和SSD利用率三因素之間的平衡。
【專利附圖】
【附圖說明】
[0063]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0064]圖1為本發(fā)明實施例一所提供的數(shù)據(jù)塊緩存方法的流程圖;
[0065]圖2A為本發(fā)明實施例二所提供的數(shù)據(jù)塊緩存方法的流程圖;
[0066]圖2B為本發(fā)明實施例二所提供的數(shù)據(jù)塊緩存方法的示意圖;
[0067]圖3A為本發(fā)明實施例三所提供的數(shù)據(jù)塊緩存方法的流程圖;
[0068]圖3B為本發(fā)明實施例三所提供的數(shù)據(jù)塊緩存方法的示意圖;
[0069]圖4為本發(fā)明實施例四所提供的數(shù)據(jù)塊緩存方法的流程圖;
[0070]圖5為本發(fā)明實施例五所提供的數(shù)據(jù)塊緩存方法的流程圖;
[0071]圖6為本發(fā)明實施例六所提供的數(shù)據(jù)塊緩存方法的流程圖;
[0072]圖7為本發(fā)明實施例七所提供的數(shù)據(jù)塊緩存方法的流程圖;
[0073]圖8為本發(fā)明實施例八所提供的數(shù)據(jù)塊緩存方法的流程圖;
[0074]圖9為本發(fā)明實施例九所提供的數(shù)據(jù)塊緩存方法的流程圖;
[0075]圖10為本發(fā)明實施例十所提供的數(shù)據(jù)塊緩存裝置1000的結構示意圖。
【具體實施方式】
[0076]為使本發(fā)明實施例的目的、技術方案和優(yōu)點更加清楚,下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領域普通技術人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0077]圖1為本發(fā)明實施例一所提供的數(shù)據(jù)塊緩存方法的流程圖。本實施例的方法適用于將熱點數(shù)據(jù)塊緩存到SSD上的情況。該方法由數(shù)據(jù)塊緩存裝置執(zhí)行,該裝置通常以硬件和/或軟件的方式來實現(xiàn)。本實施例的方法包括如下步驟:
[0078]110、確定是否調整當前熱點數(shù)據(jù)塊的大小。
[0079]由于IO設備訪問的數(shù)據(jù)的大小因業(yè)務場景不同存在較大差異,因此會出現(xiàn)IO設備訪問的數(shù)據(jù)的大小偏離預先設定的數(shù)據(jù)塊的大小較大的情況,從而使采用現(xiàn)有技術的方案向SSD緩存數(shù)據(jù)塊會出現(xiàn)數(shù)據(jù)塊的大小、內存開銷和SSD利用率三因素之間無法均衡,從而無法自適應多種IO業(yè)務場景混合的問題。例如,數(shù)據(jù)塊的大小設定越大,需要記錄的映射信息越少,內存開銷也就越少,而一個數(shù)據(jù)塊內真正的熱點數(shù)據(jù)所占比例可能會越小,一塊SSD緩存的熱點數(shù)據(jù)所占比例就越小,SSD利用率就越低。數(shù)據(jù)塊的大小設定越小,雖然可以提升SSD利用率,但是由于需要記錄的映射信息越多,使得相應的內存開銷也會越大。因此如何使數(shù)據(jù)塊大小適應IO設備訪問的數(shù)據(jù)的大小,實現(xiàn)上述三因素之間達到均衡,也即無論在哪種業(yè)務場景下,都可以使上述三因素之間達到平衡至關重要。本實施例中正是通過110確定是否調整當前熱點數(shù)據(jù)塊的大小,從而判斷是否進入120。從而可以實現(xiàn)對當前熱點數(shù)據(jù)塊的大小進行調整,以適應IO設備訪問的數(shù)據(jù)的大小,實現(xiàn)上述三因素之間達到平衡。
[0080]120、若確定調整當前熱點數(shù)據(jù)塊的大小,則調整當前熱點數(shù)據(jù)塊的大小。
[0081]130、將調整后的當前熱點數(shù)據(jù)塊緩存到固態(tài)硬盤中。
[0082]具體的,確定是否調整當前熱點數(shù)據(jù)塊的大小,若確定調整當前熱點數(shù)據(jù)塊的大小,則調整當前熱點數(shù)據(jù)塊的大小并將調整后的當前熱點數(shù)據(jù)塊緩存到固態(tài)硬盤中。
[0083]本實施例提供的數(shù)據(jù)塊緩存方法,通過確定是否調整當前熱點數(shù)據(jù)塊的大小,若確定調整當前熱點數(shù)據(jù)塊的大小,則調整當前熱點數(shù)據(jù)塊的大小并將調整后的當前熱點數(shù)據(jù)塊緩存到固態(tài)硬盤中。從而解 決了現(xiàn)有技術中IO設備訪問的數(shù)據(jù)的大小偏離預先設定的數(shù)據(jù)塊的大小過多時,數(shù)據(jù)塊的大小、內存開銷和SSD利用率三因素會失衡,無法自適應多種IO業(yè)務場景混合的問題,實現(xiàn)了在多種IO業(yè)務場景下數(shù)據(jù)塊的大小、內存開銷和SSD利用率三因素之間的平衡。
[0084]本實施例以上述實施例一為基礎,進一步進行了優(yōu)化,圖2A為本發(fā)明實施例二所提供的數(shù)據(jù)塊緩存方法的流程圖。參照圖2A,本實施例的方法可以包括:
[0085]210、根據(jù)當前熱點數(shù)據(jù)塊的大小、當前熱點數(shù)據(jù)塊的下一個熱點數(shù)據(jù)塊的大小和當前熱點數(shù)據(jù)塊與下一個熱點數(shù)據(jù)塊之間的一個冷數(shù)據(jù)塊的大小,確定是否調整當前熱點數(shù)據(jù)塊的大小,若是則執(zhí)行220,否則執(zhí)行230。
[0086]舉例來說,根據(jù)當前熱點數(shù)據(jù)塊的大小、當前熱點數(shù)據(jù)塊的下一個熱點數(shù)據(jù)塊的大小和當前熱點數(shù)據(jù)塊與下一個熱點數(shù)據(jù)塊之間的一個冷數(shù)據(jù)塊的大小,可以通過如下三種方式實現(xiàn);
[0087]—種可行的實現(xiàn)方式為:根據(jù)當前熱點數(shù)據(jù)塊的大小a和一個冷數(shù)據(jù)塊的大小c計算第一比值X,以及根據(jù)下一個熱點數(shù)據(jù)塊的大小b和一個冷數(shù)據(jù)塊的大小c計算第二比
CC
值y,其中,x=: -v=7.若第一比值X小于等于第一門限值或第二比值y小于等于第二門
,^ 9
限值,則確定調整當前熱點數(shù)據(jù)塊的大小。
[0088]另一種可行的實現(xiàn)方式為:根據(jù)當前熱點數(shù)據(jù)塊的大小a、下一個熱點數(shù)據(jù)塊的大小b和一個冷數(shù)據(jù)塊的大小C計算第三比值Z,其中,z=5?若第三比值Z小于等于第三門限值,則確定調整當前熱點數(shù)據(jù)塊的大小。
[0089]又一種可行的實現(xiàn)方式為:根據(jù)當前熱點數(shù)據(jù)塊的大小a、下一個熱點數(shù)據(jù)塊的大小b和一個冷數(shù)據(jù)塊的大小c計算第四比值q,其中,,若第四比值q小于等于第四門限值,則確定調整當前熱點數(shù)據(jù)塊的大小。
[0090]在此需要說明的是,上述三種實現(xiàn)方式僅是一部分實現(xiàn)方式,并不代表所有可能的實現(xiàn)方式,基于本發(fā)明獲取的所有其他可能的實現(xiàn)方式,都應在本發(fā)明保護范圍之內。
[0091]220、合并當前熱點數(shù)據(jù)塊、下一個熱點數(shù)據(jù)塊和一個冷數(shù)據(jù)塊為一個新的熱點數(shù)據(jù)塊,并將一個新的熱點數(shù)據(jù)塊作為調整后的當前熱點數(shù)據(jù)塊,并執(zhí)行240。
[0092]230、將當前熱點數(shù)據(jù)塊緩存到固態(tài)硬盤中,并將當前熱點數(shù)據(jù)塊的下一個熱點數(shù)據(jù)塊作為當前熱點數(shù)據(jù)塊,并執(zhí)行210。
[0093]240、將調整后的當前熱點數(shù)據(jù)塊緩存到固態(tài)硬盤中。[0094]250、將調整后的當前熱點數(shù)據(jù)塊的下一個熱點數(shù)據(jù)塊作為當前熱點數(shù)據(jù)塊,并執(zhí)行 210。
[0095]本實施例提供的數(shù)據(jù)塊緩存方法,通過根據(jù)當前熱點數(shù)據(jù)塊的大小、當前熱點數(shù)據(jù)塊的下一個熱點數(shù)據(jù)塊的大小和當前熱點數(shù)據(jù)塊與下一個熱點數(shù)據(jù)塊之間的一個冷數(shù)據(jù)塊的大小,確定是否調整當前熱點數(shù)據(jù)塊的大小,若確定調整當前熱點數(shù)據(jù)塊的大小,則調整當前熱點數(shù)據(jù)塊的大小并將調整后的當前熱點數(shù)據(jù)塊緩存到固態(tài)硬盤中。從而解決了現(xiàn)有技術中IO設備訪問的數(shù)據(jù)的大小偏離預先設定的數(shù)據(jù)塊的大小過多時,數(shù)據(jù)塊的大小、內存開銷和SSD利用率三因素會失衡,無法自適應多種IO業(yè)務場景混合的問題,實現(xiàn)了在多種IO業(yè)務場景下數(shù)據(jù)塊的大小、內存開銷和SSD利用率三因素之間的平衡。
[0096]為對上述實施例二提供的數(shù)據(jù)塊緩存方法進行詳細介紹,在此配合圖2B進行說明,圖2B為本發(fā)明實施例二所提供的數(shù)據(jù)塊緩存方法的示意圖,參照圖2B,以當前共有5個熱點數(shù)據(jù)塊和5個冷數(shù)據(jù)塊為例進行介紹,5個熱點數(shù)據(jù)塊分別為熱點數(shù)據(jù)塊1、熱點數(shù)據(jù)塊2、熱點數(shù)據(jù)塊3、熱點數(shù)據(jù)塊4和熱點數(shù)據(jù)塊5,5個冷數(shù)據(jù)塊分別為冷數(shù)據(jù)塊1、冷數(shù)據(jù)塊2、冷數(shù)據(jù)塊3、冷數(shù)據(jù)塊4和冷數(shù)據(jù)塊5。以熱點數(shù)據(jù)塊I為當前熱點數(shù)據(jù)塊,由圖2B示出的,熱點數(shù)據(jù)塊2為熱點數(shù)據(jù)塊I的下一個熱點數(shù)據(jù)塊,冷數(shù)據(jù)塊I為熱點數(shù)據(jù)塊I和熱點數(shù)據(jù)塊2之間一個冷數(shù)據(jù)塊,若確定可以合并熱點數(shù)據(jù)塊1、熱點數(shù)據(jù)塊2和冷數(shù)據(jù)塊1,則將其合并為一個新的熱點數(shù)據(jù)塊,也即合并后的數(shù)據(jù)塊為調整后的熱點數(shù)據(jù)塊I。接著以調整后的熱點數(shù)據(jù)塊I的下一個熱點數(shù)據(jù)塊3為當前熱點數(shù)據(jù)塊,確定是否調整熱點數(shù)據(jù)塊3的大小,正如圖2B示出的,熱點數(shù)據(jù)塊3不滿足調整條件,因此為對熱點數(shù)據(jù)塊3進行調整,繼續(xù)以熱點數(shù)據(jù)塊4為當前熱點數(shù)據(jù)塊確定是否對熱點數(shù)據(jù)塊4進行調整,由于熱點數(shù)據(jù)塊4滿足調整條件,因此將熱點數(shù)據(jù)塊4冷數(shù)據(jù)塊5和熱點數(shù)據(jù)塊5合并為調整后的熱點數(shù)據(jù)塊2,最終緩存到固態(tài)硬盤的熱點數(shù)據(jù)塊為調整后的熱點數(shù)據(jù)塊1、熱點數(shù)據(jù)塊3和調整后的熱點數(shù)據(jù)塊2。
[0097]本實施例以上述實施例一為基礎,進一步進行了優(yōu)化,圖3A為本發(fā)明實施例三所提供的數(shù)據(jù)塊緩存方法的流程圖。本實施例與上述實施例二的區(qū)別在于調整當前熱點數(shù)據(jù)塊后,將調整后的當前熱點數(shù)據(jù)塊作為當前熱點數(shù)據(jù)塊,并繼續(xù)執(zhí)行是否調整當前熱點數(shù)據(jù)塊的步驟。參照圖3A,本實施例的方法可以包括:
[0098]310、根據(jù)當前熱點數(shù)據(jù)塊的大小、當前熱點數(shù)據(jù)塊的下一個熱點數(shù)據(jù)塊的大小和當前熱點數(shù)據(jù)塊與下一個熱點數(shù)據(jù)塊之間的一個冷數(shù)據(jù)塊的大小,確定是否調整當前熱點數(shù)據(jù)塊的大小,若是則執(zhí)行320,否則執(zhí)行330。
[0099]320、合并當前熱點數(shù)據(jù)塊、下一個熱點數(shù)據(jù)塊和一個冷數(shù)據(jù)塊為一個新的熱點數(shù)據(jù)塊,并將一個新的熱點數(shù)據(jù)塊作為調整后的當前熱點數(shù)據(jù)塊,并執(zhí)行340。
[0100]330、將當前熱點數(shù)據(jù)塊緩存到固態(tài)硬盤中,并將當前熱點數(shù)據(jù)塊的下一個熱點數(shù)據(jù)塊作為當前熱點數(shù)據(jù)塊,并執(zhí)行310。
[0101]340、將調整后的當前熱點數(shù)據(jù)塊作為當前熱點數(shù)據(jù)塊,并執(zhí)行310。
[0102]本實施例提供的數(shù)據(jù)塊緩存方法,通過根據(jù)當前熱點數(shù)據(jù)塊的大小、當前熱點數(shù)據(jù)塊的下一個熱點數(shù)據(jù)塊的大小和當前熱點數(shù)據(jù)塊與下一個熱點數(shù)據(jù)塊之間的一個冷數(shù)據(jù)塊的大小,確定是否調整當前熱點數(shù)據(jù)塊的大小,若確定調整當前熱點數(shù)據(jù)塊的大小,則將調整后的當前熱點數(shù)據(jù)塊作為當前熱點數(shù)據(jù)塊并繼續(xù)執(zhí)行判斷是否調整當前熱點數(shù)據(jù)塊的步驟。從而解決了現(xiàn)有技術中IO設備訪問的數(shù)據(jù)的大小偏離預先設定的數(shù)據(jù)塊的大小過多時,數(shù)據(jù)塊的大小、內存開銷和SSD利用率三因素會失衡,無法自適應多種IO業(yè)務場景混合的問題,實現(xiàn)了在多種IO業(yè)務場景下數(shù)據(jù)塊的大小、內存開銷和SSD利用率三因素之間的平衡。
[0103]為對上述實施例三提供的數(shù)據(jù)塊緩存方法進行詳細介紹,在此配合圖3B進行說明,圖3B為本發(fā)明實施例三所提供的數(shù)據(jù)塊緩存方法的示意圖,參照圖3B,以當前共有5個熱點數(shù)據(jù)塊和5個冷數(shù)據(jù)塊為例進行介紹,5個熱點數(shù)據(jù)塊分別為熱點數(shù)據(jù)塊1、熱點數(shù)據(jù)塊2、熱點數(shù)據(jù)塊3、熱點數(shù)據(jù)塊4和熱點數(shù)據(jù)塊5,5個冷數(shù)據(jù)塊分別為冷數(shù)據(jù)塊1、冷數(shù)據(jù)塊2、冷數(shù)據(jù)塊3、冷數(shù)據(jù)塊4和冷數(shù)據(jù)塊5。以熱點數(shù)據(jù)塊I為當前熱點數(shù)據(jù)塊,由圖3B示出的,熱點數(shù)據(jù)塊2為熱點數(shù)據(jù)塊I的下一個熱點數(shù)據(jù)塊,冷數(shù)據(jù)塊I為熱點數(shù)據(jù)塊I和熱點數(shù)據(jù)塊2之間一個冷數(shù)據(jù)塊,若確定可以合并熱點數(shù)據(jù)塊1、熱點數(shù)據(jù)塊2和冷數(shù)據(jù)塊1,則將其合并為一個新的熱點數(shù)據(jù)塊,也即合并后的數(shù)據(jù)塊為調整后的熱點數(shù)據(jù)塊I。接著以調整后的熱點數(shù)據(jù)塊I當前熱點數(shù)據(jù)塊,確定是否調整調整后的熱點數(shù)據(jù)塊I的大小,正如圖3B示出的,調整后的熱點數(shù)據(jù)塊I滿足調整條件,因此為對調整后的熱點數(shù)據(jù)塊I進行調整,將調整后的熱點數(shù)據(jù)塊1、冷數(shù)據(jù)塊2和熱點數(shù)據(jù)塊3合并為調整后的熱點數(shù)據(jù)塊2,繼續(xù)以熱點數(shù)據(jù)塊4為當前熱點數(shù)據(jù)塊確定是否對熱點數(shù)據(jù)塊4進行調整,由于熱點數(shù)據(jù)塊4滿足調整條件,因此將熱點數(shù)據(jù)塊4冷數(shù)據(jù)塊5和熱點數(shù)據(jù)塊5合并為調整后的熱點數(shù)據(jù)塊2,再以調整后的熱點數(shù)據(jù)塊2為當前熱點數(shù)據(jù)塊確定是否對調整后的熱點數(shù)據(jù)塊2調整,由圖3B示出的,未對調整后的熱點數(shù)據(jù)塊2進行調整后,以熱點數(shù)據(jù)塊4為當前熱點數(shù)據(jù)塊,確定是否對熱點數(shù)據(jù)塊4進行調整,通過合并熱點數(shù)據(jù)塊4、冷數(shù)據(jù)塊5和熱點數(shù)據(jù)塊5對熱點數(shù)據(jù)塊4進行調整,調整后的熱點數(shù)據(jù)塊為調整后的熱點數(shù)據(jù)塊3。最終緩存到固態(tài)硬盤的熱點數(shù)據(jù)塊為調整后的熱點數(shù)據(jù)塊2和調整后的熱點數(shù)據(jù)塊3。
[0104]本實施例以上述實施例一為基礎,進一步進行了優(yōu)化,圖4為本發(fā)明實施例四所提供的數(shù)據(jù)塊緩存方法的流程圖。參照圖4,本實施例的方法可以包括:
[0105]410、確定當前熱點數(shù)據(jù)塊的相鄰的數(shù)據(jù)塊是否為熱點數(shù)據(jù)塊,若是則執(zhí)行420,否則執(zhí)行430。
[0106]420、合并當前熱點數(shù)據(jù)塊和當前熱點數(shù)據(jù)塊的相鄰的數(shù)據(jù)塊為一個新的熱點數(shù)據(jù)塊,并將一個新的熱點數(shù)據(jù)塊作為調整后的當前熱點數(shù)據(jù)塊,并執(zhí)行440。
[0107]430、將當前熱點數(shù)據(jù)塊緩存到固態(tài)硬盤中,并將當前熱點數(shù)據(jù)塊的下一個熱點數(shù)據(jù)塊作為當前熱點數(shù)據(jù)塊,并執(zhí)行410。
[0108]440、將調整后的當前熱點數(shù)據(jù)塊緩存到固態(tài)硬盤中。
[0109]450、將調整后的當前熱點數(shù)據(jù)塊的下一個熱點數(shù)據(jù)塊作為當前熱點數(shù)據(jù)塊,并執(zhí)行 410。
[0110]本實施例提供的數(shù)據(jù)塊緩存方法,通過確定當前熱點數(shù)據(jù)塊的相鄰的數(shù)據(jù)塊是否為熱點數(shù)據(jù)塊,若是則合并當前熱點數(shù)據(jù)塊和當前熱點數(shù)據(jù)塊的相鄰的數(shù)據(jù)塊為一個新的熱點數(shù)據(jù)塊,并將一個新的熱點數(shù)據(jù)塊作為調整后的當前熱點數(shù)據(jù)塊,將調整后的當前熱點數(shù)據(jù)塊緩存到固態(tài)硬盤中,并以調整后的當前熱點數(shù)據(jù)塊的下一個熱點數(shù)據(jù)塊作為當前熱點數(shù)據(jù)塊繼續(xù)執(zhí)行判斷是否調整當前熱點數(shù)據(jù)塊的步驟。從而解決了現(xiàn)有技術中IO設備訪問的數(shù)據(jù)的大小偏離預先設定的數(shù)據(jù)塊的大小過多時,數(shù)據(jù)塊的大小、內存開銷和SSD利用率三因素會失衡,無法自適應多種IO業(yè)務場景混合的問題,實現(xiàn)了在多種IO業(yè)務場景下數(shù)據(jù)塊的大小、內存開銷和SSD利用率三因素之間的平衡。
[0111]本實施例以上述實施例一為基礎,進一步進行了優(yōu)化,圖5為本發(fā)明實施例五所提供的數(shù)據(jù)塊緩存方法的流程圖。本實施例與上述實施例四的區(qū)別在于調整當前熱點數(shù)據(jù)塊后,將調整后的當前熱點數(shù)據(jù)塊作為當前熱點數(shù)據(jù)塊,并繼續(xù)執(zhí)行是否調整當前熱點數(shù)據(jù)塊的步驟。參照圖5,本實施例的方法可以包括:
[0112]510、確定當前熱點數(shù)據(jù)塊的相鄰的數(shù)據(jù)塊是否為熱點數(shù)據(jù)塊,若是則執(zhí)行520,否則執(zhí)行530。
[0113]520、合并當前熱點數(shù)據(jù)塊和當前熱點數(shù)據(jù)塊的相鄰的數(shù)據(jù)塊為一個新的熱點數(shù)據(jù)塊,并將一個新的熱點數(shù)據(jù)塊作為調整后的當前熱點數(shù)據(jù)塊,并執(zhí)行540。
[0114]530、將當前熱點數(shù)據(jù)塊緩存到固態(tài)硬盤中,并將當前熱點數(shù)據(jù)塊的下一個熱點數(shù)據(jù)塊作為當前熱點數(shù)據(jù)塊,并執(zhí)行510。
[0115]540、將調整后的當前熱點數(shù)據(jù)塊作為當前熱點數(shù)據(jù)塊,并執(zhí)行510。
[0116]本實施例提供的數(shù)據(jù)塊緩存方法,通過確定當前熱點數(shù)據(jù)塊的相鄰的數(shù)據(jù)塊是否為熱點數(shù)據(jù)塊,若是則合并當前熱點數(shù)據(jù)塊和當前熱點數(shù)據(jù)塊的相鄰的數(shù)據(jù)塊為一個新的熱點數(shù)據(jù)塊,并將一個新的熱點數(shù)據(jù)塊作為調整后的當前熱點數(shù)據(jù)塊,并將調整后的當前熱點數(shù)據(jù)塊作為當前熱點數(shù)據(jù)塊執(zhí)行判斷是否調整當前熱點數(shù)據(jù)塊的步驟。從而解決了現(xiàn)有技術中IO設備訪問的數(shù)據(jù)的大小偏離預先設定的數(shù)據(jù)塊的大小過多時,數(shù)據(jù)塊的大小、內存開銷和SSD利用率三因素會失衡,無法自適應多種IO業(yè)務場景混合的問題,實現(xiàn)了在多種IO業(yè)務場景下數(shù)據(jù)塊的大小、內存開銷和SSD利用率三因素之間的平衡。
[0117]本實施例以上述實施例一為基礎,進一步進行了優(yōu)化,圖6為本發(fā)明實施例六所提供的數(shù)據(jù)塊緩存方法的流程圖。參照圖6,本實施例的方法可以包括:
[0118]610、根據(jù)輸入輸出設備訪問的數(shù)據(jù)的大小的平均值和當前熱點數(shù)據(jù)塊的大小,確定是否調整當前熱點數(shù)據(jù)塊的大小,若是則執(zhí)行620,否則執(zhí)行630。
[0119]620、向后補齊當前熱點數(shù)據(jù)塊為一個新的熱點數(shù)據(jù)塊,以使一個新的熱點數(shù)據(jù)塊的大小等于平均值,并將一個新的熱點數(shù)據(jù)塊作為調整后的當前熱點數(shù)據(jù)塊,并執(zhí)行640。
[0120]630、將當前熱點數(shù)據(jù)塊緩存到固態(tài)硬盤中,并將當前熱點數(shù)據(jù)塊的下一個熱點數(shù)據(jù)塊作為當前熱點數(shù)據(jù)塊,并執(zhí)行610。
[0121]640、將調整后的當前熱點數(shù)據(jù)塊緩存到固態(tài)硬盤中。
[0122]650、將調整后的當前熱點數(shù)據(jù)塊的下一個熱點數(shù)據(jù)塊作為當前熱點數(shù)據(jù)塊,并執(zhí)行 610。
[0123]本實施例提供的數(shù)據(jù)塊緩存方法,通過根據(jù)輸入輸出設備訪問的數(shù)據(jù)的大小的平均值和當前熱點數(shù)據(jù)塊的大小,確定是否調整當前熱點數(shù)據(jù)塊的大小,若調整則向后補齊當前熱點數(shù)據(jù)塊為一個新的熱點數(shù)據(jù)塊,以使一個新的熱點數(shù)據(jù)塊的大小等于平均值,并將一個新的熱點數(shù)據(jù)塊作為調整后的當前熱點數(shù)據(jù)塊,將調整后的當前熱點數(shù)據(jù)塊緩存到固態(tài)硬盤中,將調整后的當前熱點數(shù)據(jù)塊的下一個熱點數(shù)據(jù)塊作為當前熱點數(shù)據(jù)塊繼續(xù)執(zhí)行判斷是否調整當前熱點數(shù)據(jù)塊的步驟。從而解決了現(xiàn)有技術中IO設備訪問的數(shù)據(jù)的大小偏離預先設定的數(shù)據(jù)塊的大小過多時,數(shù)據(jù)塊的大小、內存開銷和SSD利用率三因素會失衡,無法自適應多種IO業(yè)務場景混合的問題,實現(xiàn)了在多種IO業(yè)務場景下數(shù)據(jù)塊的大小、內存開銷和SSD利用率三因素之間的平衡。
[0124]本實施例以上述實施例一為基礎,進一步進行了優(yōu)化,圖7為本發(fā)明實施例七所提供的數(shù)據(jù)塊緩存方法的流程圖。本實施例與上述實施例六的區(qū)別在于調整當前熱點數(shù)據(jù)塊后,將調整后的當前熱點數(shù)據(jù)塊作為當前熱點數(shù)據(jù)塊,并繼續(xù)執(zhí)行是否調整當前熱點數(shù)據(jù)塊的步驟。參照圖7,本實施例的方法可以包括:
[0125]710、根據(jù)輸入輸出設備訪問的數(shù)據(jù)的大小的平均值和當前熱點數(shù)據(jù)塊的大小,確定是否調整當前熱點數(shù)據(jù)塊的大小,若是則執(zhí)行720,否則執(zhí)行730。
[0126]720、向后補齊當前熱點數(shù)據(jù)塊為一個新的熱點數(shù)據(jù)塊,以使一個新的熱點數(shù)據(jù)塊的大小等于平均值,并將一個新的熱點數(shù)據(jù)塊作為調整后的當前熱點數(shù)據(jù)塊,并執(zhí)行740。
[0127]730、將當前熱點數(shù)據(jù)塊緩存到固態(tài)硬盤中,并將當前熱點數(shù)據(jù)塊的下一個熱點數(shù)據(jù)塊作為當前熱點數(shù)據(jù)塊,并執(zhí)行710。
[0128]740、將調整后的當前熱點數(shù)據(jù)塊作為當前熱點數(shù)據(jù)塊,并執(zhí)行710。
[0129]本實施例提供的數(shù)據(jù)塊緩存方法,通過根據(jù)輸入輸出設備訪問的數(shù)據(jù)的大小的平均值和當前熱點數(shù)據(jù)塊的大小,確定是否調整當前熱點數(shù)據(jù)塊的大小,若調整則向后補齊當前熱點數(shù)據(jù)塊為一個新的熱點數(shù)據(jù)塊,以使一個新的熱點數(shù)據(jù)塊的大小等于平均值,并將一個新的熱點數(shù)據(jù)塊作為調整后的當前熱點數(shù)據(jù)塊,并以該調整后的當前熱點數(shù)據(jù)塊作為當前熱點數(shù)據(jù)塊繼續(xù)執(zhí)行判斷是否調整當前熱點數(shù)據(jù)塊的步驟。從而解決了現(xiàn)有技術中IO設備訪問的數(shù)據(jù)的大小偏離預先設定的數(shù)據(jù)塊的大小過多時,數(shù)據(jù)塊的大小、內存開銷和SSD利用率三因素會失衡,無法自適應多種IO業(yè)務場景混合的問題,實現(xiàn)了在多種IO業(yè)務場景下數(shù)據(jù)塊的大小、內存開銷和SSD利用率三因素之間的平衡。
[0130]本實施例以上述實施例一為基礎,進一步進行了優(yōu)化,圖8為本發(fā)明實施例八所提供的數(shù)據(jù)塊緩存方法的流程圖。參照圖8,本實施例的方法可以包括:
[0131]810、確定是否調整當前熱點數(shù)據(jù)塊的大小,若是則執(zhí)行820,否則執(zhí)行830。
[0132]舉例來說,確定是否調整當前熱點數(shù)據(jù)塊的大小可以通過如下方式實現(xiàn):
[0133]統(tǒng)計與當前熱點數(shù)據(jù)塊相鄰的兩個數(shù)據(jù)塊被輸入輸出設備訪問的次數(shù);若與當前熱點數(shù)據(jù)塊相鄰的數(shù)據(jù)塊被輸入輸出設備訪問的次數(shù)大于等于1,則確定調整當前熱點數(shù)據(jù)塊的大小。
[0134]820、合并當前熱點數(shù)據(jù)塊和與當前熱點數(shù)據(jù)塊相鄰的數(shù)據(jù)塊為一個新的熱點數(shù)據(jù)塊,并將一個新的熱點數(shù)據(jù)塊作為調整后的當前熱點數(shù)據(jù)塊,并執(zhí)行840。
[0135]830、將當前熱點數(shù)據(jù)塊緩存到固態(tài)硬盤中,并將當前熱點數(shù)據(jù)塊的下一個熱點數(shù)據(jù)塊作為當前熱點數(shù)據(jù)塊,并執(zhí)行810。
[0136]840、將調整后的當前熱點數(shù)據(jù)塊緩存到固態(tài)硬盤中。
[0137]850、將調整后的當前熱點數(shù)據(jù)塊的下一個熱點數(shù)據(jù)塊作為當前熱點數(shù)據(jù)塊,并執(zhí)行 810。
[0138]本實施例提供的數(shù)據(jù)塊緩存方法,通過統(tǒng)計與當前熱點數(shù)據(jù)塊相鄰的兩個數(shù)據(jù)塊被輸入輸出設備訪問的次數(shù)來確定是否調整當前熱點數(shù)據(jù)塊的大小,若是則合并當前熱點數(shù)據(jù)塊和與當前熱點數(shù)據(jù)塊相鄰的數(shù)據(jù)塊為一個新的熱點數(shù)據(jù)塊,并將一個新的熱點數(shù)據(jù)塊作為調整后的當前熱點數(shù)據(jù)塊,將調整后的當前熱點數(shù)據(jù)塊緩存到固態(tài)硬盤中,并將調整后的當前熱點數(shù)據(jù)塊的下一個熱點數(shù)據(jù)塊作為當前熱點數(shù)據(jù)塊繼續(xù)執(zhí)行判斷是否調整當前熱點數(shù)據(jù)塊的步驟。從而解決了現(xiàn)有技術中IO設備訪問的數(shù)據(jù)的大小偏離預先設定的數(shù)據(jù)塊的大小過多時,數(shù)據(jù)塊的大小、內存開銷和SSD利用率三因素會失衡,無法自適應多種IO業(yè)務場景混合的問題,實現(xiàn)了在多種IO業(yè)務場景下數(shù)據(jù)塊的大小、內存開銷和SSD利用率三因素之間的平衡。
[0139]本實施例以上述實施例一為基礎,進一步進行了優(yōu)化,圖9為本發(fā)明實施例九所提供的數(shù)據(jù)塊緩存方法的流程圖。本實施例與上述實施例八的區(qū)別在于調整當前熱點數(shù)據(jù)塊后,將調整后的當前熱點數(shù)據(jù)塊作為當前熱點數(shù)據(jù)塊,并繼續(xù)執(zhí)行是否調整當前熱點數(shù)據(jù)塊的步驟。參照圖9,本實施例的方法可以包括:
[0140]910、確定是否調整當前熱點數(shù)據(jù)塊的大小,若是則執(zhí)行920,否則執(zhí)行930。
[0141]920、合并當前熱點數(shù)據(jù)塊和與當前熱點數(shù)據(jù)塊相鄰的數(shù)據(jù)塊為一個新的熱點數(shù)據(jù)塊,并將一個新的熱點數(shù)據(jù)塊作為調整后的當前熱點數(shù)據(jù)塊,并執(zhí)行940。
[0142]930、將當前熱點數(shù)據(jù)塊緩存到固態(tài)硬盤中,并將當前熱點數(shù)據(jù)塊的下一個熱點數(shù)據(jù)塊作為當前熱點數(shù)據(jù)塊,并執(zhí)行910。
[0143]940、將調整后的當前熱點數(shù)據(jù)塊作為當前熱點數(shù)據(jù)塊,并執(zhí)行910。
[0144]本實施例提供的數(shù)據(jù)塊緩存方法,通過統(tǒng)計與當前熱點數(shù)據(jù)塊相鄰的兩個數(shù)據(jù)塊被輸入輸出設備訪問的次數(shù)來確定是否調整當前熱點數(shù)據(jù)塊的大小,若是則合并當前熱點數(shù)據(jù)塊和與當前熱點數(shù)據(jù)塊相鄰的數(shù)據(jù)塊為一個新的熱點數(shù)據(jù)塊,并將一個新的熱點數(shù)據(jù)塊作為調整后的當前熱點數(shù)據(jù)塊,并將調整后的當前熱點數(shù)據(jù)塊作為當前熱點數(shù)據(jù)塊繼續(xù)執(zhí)行判斷是否調整當前熱點數(shù)據(jù)塊的步驟。從而解決了現(xiàn)有技術中IO設備訪問的數(shù)據(jù)的大小偏離預先設定的數(shù)據(jù)塊的大小過多時,數(shù)據(jù)塊的大小、內存開銷和SSD利用率三因素會失衡,無法自適應多種IO業(yè)務場景混合的問題,實現(xiàn)了在多種IO業(yè)務場景下數(shù)據(jù)塊的大小、內存開銷和SSD利用率三因素之間的平衡。
[0145]需要說明的是,對于上述實施例二至實施例九中提供的調整當前熱點數(shù)據(jù)塊的大小的方法,可以通過采用任意至少兩種方法調整當前熱點數(shù)據(jù)塊的大小,例如采用實施例二中提供的合并當前熱點數(shù)據(jù)塊、下一個熱點數(shù)據(jù)塊和一個冷數(shù)據(jù)塊為一個新的熱點數(shù)據(jù)塊,并將一個新的熱點數(shù)據(jù)塊作為調整后的當前熱點數(shù)據(jù)塊的方法調整當前熱點數(shù)據(jù)塊后,也可以采用實施例四中提供的調整當前熱點數(shù)據(jù)塊的方法來對當前熱點數(shù)據(jù)塊進行調整,即通過合并當前熱點數(shù)據(jù)塊和當前熱點數(shù)據(jù)塊的相鄰的數(shù)據(jù)塊為一個新的熱點數(shù)據(jù)塊,并將一個新的熱點數(shù)據(jù)塊作為調整后的當前熱點數(shù)據(jù)塊。
[0146]圖10為本發(fā)明實施例十所提供的數(shù)據(jù)塊緩存裝置1000的結構示意圖。本實施例的裝置適用于將熱點數(shù)據(jù)塊緩存到SSD上的情況。該裝置通常以硬件和/或軟件的方式來實現(xiàn)。參照圖10,該數(shù)據(jù)塊緩存裝置包括如下模塊:調整確定模塊1010、熱點數(shù)據(jù)塊調整模塊1020和數(shù)據(jù)塊緩存模塊1030。
[0147]調整確定模塊1010用于確定是否調整當前熱點數(shù)據(jù)塊的大小;熱點數(shù)據(jù)塊調整模塊1020用于若確定調整當前熱點數(shù)據(jù)塊的大小,則調整當前熱點數(shù)據(jù)塊的大??;數(shù)據(jù)塊緩存模塊1030用于將調整后的當前熱點數(shù)據(jù)塊緩存到固態(tài)硬盤中。
[0148]進一步的,調整確定模塊1010具體用于根據(jù)當前熱點數(shù)據(jù)塊的大小、當前熱點數(shù)據(jù)塊的下一個熱點數(shù)據(jù)塊的大小和當前熱點數(shù)據(jù)塊與下一個熱點數(shù)據(jù)塊之間的一個冷數(shù)據(jù)塊的大小,確定是否調整當前熱點數(shù)據(jù)塊的大小。
[0149]可選的,調整確定模塊1010具體用于根據(jù)當前熱點數(shù)據(jù)塊的大小a和一個冷數(shù)據(jù)塊的大小C計算第一比值X,以及根據(jù)下一個熱點數(shù)據(jù)塊的大小b和一個冷數(shù)據(jù)塊的大小C
計算第二比值y,其中
【權利要求】
1.一種數(shù)據(jù)塊緩存方法,其特征在于,包括: 確定是否調整當前熱點數(shù)據(jù)塊的大??; 若確定調整所述當前熱點數(shù)據(jù)塊的大小,則調整所述當前熱點數(shù)據(jù)塊的大?。? 將調整后的當前熱點數(shù)據(jù)塊緩存到固態(tài)硬盤中。
2.根據(jù)權利要求1所述的方法,其特征在于,所述確定是否調整當前熱點數(shù)據(jù)塊的大小,包括: 根據(jù)所述當前熱點數(shù)據(jù)塊的大小、所述當前熱點數(shù)據(jù)塊的下一個熱點數(shù)據(jù)塊的大小和所述當前熱點數(shù)據(jù)塊與所述下一個熱點數(shù)據(jù)塊之間的一個冷數(shù)據(jù)塊的大小,確定是否調整所述當前熱點數(shù)據(jù)塊的大小。
3.根據(jù)權利要求2所述的方法,其特征在于,所述根據(jù)所述當前熱點數(shù)據(jù)塊的大小、所述當前熱點數(shù)據(jù)塊的下一個熱點數(shù)據(jù)塊的大小和所述當前熱點數(shù)據(jù)塊與所述下一個熱點數(shù)據(jù)塊之間的一個冷數(shù)據(jù)塊的大小,確定是否調整所述當前熱點數(shù)據(jù)塊的大小,包括: 根據(jù)所述當前熱點數(shù)據(jù)塊的大小a和所述一個冷數(shù)據(jù)塊的大小c計算第一比值X,以及根據(jù)所述下一個熱點數(shù)據(jù)塊的大小b和所述一個冷數(shù)據(jù)塊的大小c計算第二比值y,其中,
4.根據(jù)權利要求2所述的方法,其特征在于,所述根據(jù)所述當前熱點數(shù)據(jù)塊的大小、所述當前熱點數(shù)據(jù)塊的下一個熱點數(shù)據(jù)塊的大小和所述當前熱點數(shù)據(jù)塊與所述下一個熱點數(shù)據(jù)塊之間的一個冷數(shù)據(jù)塊的大小,確定是否調整所述當前熱點數(shù)據(jù)塊的大小,包括: 根據(jù)所述當前熱點數(shù)據(jù)塊的大小a、所述下一個熱點數(shù)據(jù)塊的大小b和所述一個冷數(shù)據(jù)塊的大小c計算第三比值z,其中,
5.根據(jù)權利要求2所述的方法,其特征在于,所述根據(jù)所述當前熱點數(shù)據(jù)塊的大小、所述當前熱點數(shù)據(jù)塊的下一個熱點數(shù)據(jù)塊的大小和所述當前熱點數(shù)據(jù)塊與所述下一個熱點數(shù)據(jù)塊之間的一個冷數(shù)據(jù)塊的大小,確定是否調整所述當前熱點數(shù)據(jù)塊的大小,包括: 根據(jù)所述當前熱點數(shù)據(jù)塊的大小a、所述下一個熱點數(shù)據(jù)塊的大小b和所述一個冷數(shù)據(jù)塊的大小c計算第四比值q,其中,
6.根據(jù)權利要求3~5中任一項所述的方法,其特征在于,所述調整所述當前熱點數(shù)據(jù)塊的大小,包括: 合并所述當前熱點數(shù)據(jù)塊、所述下一個熱點數(shù)據(jù)塊和所述一個冷數(shù)據(jù)塊為一個新的熱點數(shù)據(jù)塊,并將所述一個新的熱點數(shù)據(jù)塊作為調整后的當前熱點數(shù)據(jù)塊。
7.根據(jù)權利要求1所述的方法,其特征在于,所述確定是否調整當前熱點數(shù)據(jù)塊的大小,包括: 確定所述當前熱點數(shù)據(jù)塊的相鄰的數(shù)據(jù)塊是否為熱點數(shù)據(jù)塊;若確定所述當前熱點數(shù)據(jù)塊的相鄰的數(shù)據(jù)塊為熱點數(shù)據(jù)塊,則確定調整當前熱點數(shù)據(jù)塊的大?。? 所述調整所述當前熱點數(shù)據(jù)塊的大小,包括: 合并所述當前熱點數(shù)據(jù)塊和所述當前熱點數(shù)據(jù)塊的相鄰的數(shù)據(jù)塊為一個新的熱點數(shù)據(jù)塊,并將所述一個新的熱點數(shù)據(jù)塊作為調整后的當前熱點數(shù)據(jù)塊。
8.根據(jù)權利要求1所述的方法,其特征在于,所述確定是否調整當前熱點數(shù)據(jù)塊的大小,包括: 根據(jù)輸入輸出設備訪問的數(shù)據(jù)的大小的平均值和所述當前熱點數(shù)據(jù)塊的大小,確定是否調整當前熱點數(shù)據(jù)塊的大??; 若所述當前熱點數(shù)據(jù)塊的大小小于所 述平均值,則確定調整所述當前熱點數(shù)據(jù)塊的大小; 所述調整所述當前熱點數(shù)據(jù)塊的大小,包括: 向后補齊所述當前熱點數(shù)據(jù)塊為一個新的熱點數(shù)據(jù)塊,以使所述一個新的熱點數(shù)據(jù)塊的大小等于所述平均值,并將所述一個新的熱點數(shù)據(jù)塊作為調整后的當前熱點數(shù)據(jù)塊。
9.根據(jù)權利要求1所述的方法,其特征在于,所述確定是否調整當前熱點數(shù)據(jù)塊的大小,包括: 統(tǒng)計與所述當前熱點數(shù)據(jù)塊相鄰的兩個數(shù)據(jù)塊被輸入輸出設備訪問的次數(shù); 若與所述當前熱點數(shù)據(jù)塊相鄰的數(shù)據(jù)塊被輸入輸出設備訪問的次數(shù)大于等于1,則確定調整當前熱點數(shù)據(jù)塊的大?。? 所述調整所述當前熱點數(shù)據(jù)塊的大小,包括: 合并所述當前熱點數(shù)據(jù)塊和與所述當前熱點數(shù)據(jù)塊相鄰的數(shù)據(jù)塊為一個新的熱點數(shù)據(jù)塊,并將所述一個新的熱點數(shù)據(jù)塊作為調整后的當前熱點數(shù)據(jù)塊。
10.根據(jù)權利要求1~9中任一項所述的方法,其特征在于,在所述將調整后的當前熱點數(shù)據(jù)塊緩存到固態(tài)硬盤中之后,還包括: 將所述調整后的當前熱點數(shù)據(jù)塊的下一個熱點數(shù)據(jù)塊作為當前熱點數(shù)據(jù)塊,并執(zhí)行所述確定是否調整當前熱點數(shù)據(jù)塊的大小的步驟。
11.根據(jù)權利要求1~9中任一項所述的方法,其特征在于,在所述調整所述當前熱點數(shù)據(jù)塊的大小之后,還包括: 將所述調整后的當前熱點數(shù)據(jù)塊作為當前熱點數(shù)據(jù)塊,并執(zhí)行所述確定是否調整當前熱點數(shù)據(jù)塊的大小的步驟。
12.根據(jù)權利要求1~11中任一項所述的方法,其特征在于,還包括: 若確定不調整當前熱點數(shù)據(jù)塊的大小,則將當前熱點數(shù)據(jù)塊緩存到固態(tài)硬盤中,并將當前熱點數(shù)據(jù)塊的下一個熱點數(shù)據(jù)塊作為當前熱點數(shù)據(jù)塊,并執(zhí)行所述確定是否調整當前熱點數(shù)據(jù)塊的大小的步驟。
13.一種數(shù)據(jù)塊緩存裝置,其特征在于,包括: 調整確定模塊,用于確定是否調整當前熱點數(shù)據(jù)塊的大?。? 熱點數(shù)據(jù)塊調整模塊,用于若確定調整所述當前熱點數(shù)據(jù)塊的大小,則調整所述當前熱點數(shù)據(jù)塊的大小; 數(shù)據(jù)塊緩存模塊,用于將調整后的當前熱點數(shù)據(jù)塊緩存到固態(tài)硬盤中。
14.根據(jù)權利要求13所述的裝置,其特征在于,所述調整確定模塊,具體用于根據(jù)所述當前熱點數(shù)據(jù)塊的大小、所述當前熱點數(shù)據(jù)塊的下一個熱點數(shù)據(jù)塊的大小和所述當前熱點數(shù)據(jù)塊與所述下一個熱點數(shù)據(jù)塊之間的一個冷數(shù)據(jù)塊的大小,確定是否調整所述當前熱點數(shù)據(jù)塊的大小。
15.根據(jù)權利要求14所述的裝置,其特征在于,所述調整確定模塊,具體用于根據(jù)所述當前熱點數(shù)據(jù)塊的大小a和所述一個冷數(shù)據(jù)塊的大小c計算第一比值X,以及根據(jù)所述下一個熱點數(shù)據(jù)塊的大小b和所述一個冷數(shù)據(jù)塊的大小c計算第二比值y,其中,
16.根據(jù)權利要求14所述的裝置,其特征在于,所述調整確定模塊,具體用于根據(jù)所述當前熱點數(shù)據(jù)塊的大小a、所述下一個熱點數(shù)據(jù)塊的大小b和所述一個冷數(shù)據(jù)塊的大小c計算第三比值z,其中,
17.根據(jù)權利要求14所述的裝置,其特征在于,所述調整確定模塊,具體用于根據(jù)所述當前熱點數(shù)據(jù)塊的大小a、所述下一個熱點數(shù)據(jù)塊的大小b和所述一個冷數(shù)據(jù)塊的大小c計算第四比值q,其中
18.根據(jù)權利要求15~17中任一項所述的裝置,其特征在于,所述熱點數(shù)據(jù)塊調整模塊,具體用于合并所述當前熱點數(shù)據(jù)塊、所述下一個熱點數(shù)據(jù)塊和所述一個冷數(shù)據(jù)塊為一個新的熱點數(shù)據(jù)塊,并將所述一個新的熱點數(shù)據(jù)塊作為調整后的當前熱點數(shù)據(jù)塊。
19.根據(jù)權利要求13所述的裝置,其特征在于,所述調整確定模塊,具體用于確定所述當前熱點數(shù)據(jù)塊的相鄰的數(shù)據(jù)塊是否為熱點數(shù)據(jù)塊;若確定所述當前熱點數(shù)據(jù)塊的相鄰的數(shù)據(jù)塊為熱點數(shù)據(jù)塊,則確定調整當前熱點數(shù)據(jù)塊的大??; 所述熱點數(shù)據(jù)塊調整模塊,具體用于合并所述當前熱點數(shù)據(jù)塊和所述當前熱點數(shù)據(jù)塊的相鄰的數(shù)據(jù)塊為一個新的熱點數(shù)據(jù)塊,并將所述一個新的熱點數(shù)據(jù)塊作為調整后的當前熱點數(shù)據(jù)塊。
20.根據(jù)權利要求13所述的裝置,其特征在于,所述調整確定模塊,具體用于根據(jù)輸入輸出設備訪問的數(shù)據(jù)的大小的平均值和所述當前熱點數(shù)據(jù)塊的大小,確定是否調整當前熱點數(shù)據(jù)塊的大??;若所述當前熱點數(shù)據(jù)塊的大小小于所述平均值,則確定調整所述當前熱點數(shù)據(jù)塊的大?。? 所述熱點數(shù)據(jù)塊調整模塊,具體用于向后補齊所述當前熱點數(shù)據(jù)塊為一個新的熱點數(shù)據(jù)塊,以使所述一個新的熱點數(shù)據(jù)塊的大小等于所述平均值,并將所述一個新的熱點數(shù)據(jù)塊作為調整后的當前熱點數(shù)據(jù)塊。
21.根據(jù)權利要求13所述的裝置,其特征在于,所述調整確定模塊,具體用于統(tǒng)計與所述當前熱點數(shù)據(jù)塊相鄰的兩個數(shù)據(jù)塊被輸入輸出設備訪問的次數(shù);若與所述當前熱點數(shù)據(jù)塊相鄰的數(shù)據(jù)塊被輸入輸出設備訪問的次數(shù)大于等于1,則確定調整當前熱點數(shù)據(jù)塊的大小; 所述熱點數(shù)據(jù)塊調整模塊,具體用于合并所述當前熱點數(shù)據(jù)塊和與所述當前熱點數(shù)據(jù)塊相鄰的數(shù)據(jù)塊為一個新的熱點數(shù)據(jù)塊,并將所述一個新的熱點數(shù)據(jù)塊作為調整后的當前熱點數(shù)據(jù)塊。
22.根據(jù)權利要求13~21中任一項所述的裝置,其特征在于,所述調整確定模塊,還用于在所述將調整后的當前熱點數(shù)據(jù)塊緩存到固態(tài)硬盤中之后,將所述調整后的當前熱點數(shù)據(jù)塊的下一個熱點數(shù)據(jù)塊作為當前熱點數(shù)據(jù)塊,并執(zhí)行所述確定是否調整當前熱點數(shù)據(jù)塊的大小的步驟。
23.根據(jù)權利要求13~21中任一項所述的裝置,其特征在于,所述調整確定模塊,還用于在所述調整所述當前熱點數(shù)據(jù)塊的大小之后,將所述調整后的當前熱點數(shù)據(jù)塊作為當前熱點數(shù)據(jù)塊,并執(zhí)行所述確定是否調整當前熱點數(shù)據(jù)塊的大小的步驟。
24.根據(jù)權利要求13~23中任一項所述的裝置,其特征在于,所述調整確定模塊,還用于若確定不調整當前熱點數(shù)據(jù)塊的大小,則將當前熱點數(shù)據(jù)塊緩存到固態(tài)硬盤中,并將當前熱點數(shù)據(jù)塊的下一個熱點數(shù)據(jù)塊作為當前熱點數(shù)據(jù)塊,并執(zhí)行所述確定是否調整當前熱點數(shù)據(jù)塊的大小的步驟 。
【文檔編號】G06F12/08GK103530240SQ201310512498
【公開日】2014年1月22日 申請日期:2013年10月25日 優(yōu)先權日:2013年10月25日
【發(fā)明者】楊福全, 何歡歡, 林春恭, 周后兵, 謝雨 申請人:華為技術有限公司