磁盤緩存可能處于I/O路徑的不同位置。我們將探討最常見的一些位置,分析它們對主機系統的影響,以及對存儲總線或網絡傳輸能力的影響。所考慮的四種情況包括:
主機系統內存。
設備或子系統,
主機I/O控制器。
存儲網絡中的獨立緩存。
1.在主機內存中實現磁盤緩存
實現磁盤緩存最常見的位置是主機內存。為了實現這個方案,必須在滿足指定應用的基礎上增加一些內存,這些增加的內存即分配給磁盤緩存的內存。圖中顯示了設計在I/O路徑上的服務器的基本緩存。
從另一個方面看,緩存的系統內存也可能位于系統內存總線,且由緩存進程管理。
放在系統內存的緩存中的數據能通過系統總線極快地被訪問。事實上,除了CPU和系統內存緩存外,系統內存的訪問速度最快。
雖然如此,系統CPU卻成為了緩存的控制器。此外,緩存操作也需要占用系統資源,這給系統帶來某種程度的額外開銷,包括上述所列的實現磁盤緩存所必需的資源。主機系統中另一個重要的資源是用作緩存內存的可用內存。占用應用所需的內存預留給磁盤緩存并不是一個好主意。
警告對于處理器緊張的系統,不建議使用基于主機的緩存。“處理器緊張”是一個相對的概念,取決于幾個因素。當運行正常應用時,如果CPU的使用率超過75%,那么,系統就是處理器緊張的
2.在磁盤子系統中實現磁盤緩存
實現磁盤緩存的另一個常見的位置是磁盤子系統。正像在主機系統中實現一樣,它也需要在存儲子系統中安裝額外的內存。然而,與一般的內存相比,這個額外的內存往往相當地昂貴。圖中顯示了設備/子系統中的緩存實現。
在存儲設備或子系統中實現緩存具有一個明顯優勢,即主機系統的CPU將不會受到緩存操作的影響。這對負荷很重的系統大有好處,也有益于那些要求更多處理能力的緩存方法,如預先讀緩存。
然而,這種實現方法的緩存操作將比基于主機的緩存操作更慢,因為每個請求都要通過整個I/O路徑—從CPU一直到緩存所在的設備/子系統。
每一個請求都經過I/O路徑從CPU傳到緩存,并由在子系統中的緩存控制器執行緩存算法,因而,不受其他進程的干擾,干擾的進程包括那些競爭主機CPU的應用、系統軟件等,算法的執行速度很快。不僅緩存命中得到快速的響應,而且緩存未命中也能以極快的速度傳到設備/子系統,且其延遲達到最小。
假如使用鏡像子系統,存儲子系統中的緩存需要兩倍的緩存內存。例如,考慮設計一個鏡像的存儲子系統,每個子系統都安裝自己的緩存內存,如果每個子系統的緩存內存相同,那么需要購買兩倍的緩存內存。