Cache命中率計算例項

2021-10-07 10:32:35 字數 2222 閱讀 3774

題目(**課堂)

一次:63 ~ 70

迴圈10次:15 ~ 32,80 ~ 95

(a)假設cache採用直接對映技術。主存塊0, 4, … 指派到行0;塊1,5, … 指派到行1;以此類推。請計算命中率。

(b)假設cache採用二路組關聯對映,共有兩組,每組兩行。偶序號塊被指派到組0,奇序號塊被指派到組1。請計算使用lru替換策略的二路組關聯cache的命中率。

解答

(a) 採用直接對映

一次訪問:63 ~ 70

主存位址63-70為主存的第3、4塊,將被指派到cache的行3和0,訪問過程中,順序發生以下事件:

(i) 訪問主存位址63,主存第3塊被調入cache的行3;

(ii) 訪問主存位址64,主存第4塊被調入cache的行0;

(iii) 訪問主存位址65-70,均為主存第4塊,已經在cache中,cache均命中。

迴圈10次訪問:15 ~ 32,80 ~ 95

主存位址15-32為主存的第0、1和2塊,將被指派到cache的行0、1和2。

主存位址80-95為主存的第5塊,將被指派到cache的行1。

在第1次迴圈中,順序發生以下事件:

(i) 訪問主存位址15,為主存第0塊被調入cache的行0;

(ii) 訪問主存位址16,為主存第1塊被調入cache的行1;

(iii) 訪問主存位址17-31,均為主存第1塊,已經在cache中,cache均命中;

(iv) 訪問主存位址32,為主存第2塊被調入cache的行2;

(v) 訪問主存位址80,為主存第5塊被調入cache的行1;

(vi) 訪問主存位址81-95,均為主存第5塊,已經在cache中,cache均命中。

在後續的每次迴圈中,順序發生以下事件:

(i) 訪問主存位址15,為主存第0塊,已經在cache的行0中,命中;

(ii) 訪問主存位址16,為主存第1塊被調入cache的行1;

(iii) 訪問主存位址17-31,均為主存第1塊,已經在cache中,cache均命中;

(iv) 訪問主存位址32,為主存第2塊,已經在cache的行2中,命中;

(v) 訪問主存位址80,為主存第5塊被調入cache的行1;

(vi) 訪問主存位址81-95,均為主存第5塊,已經在cache中,cache均命中。

cache命中率 = 快取命中的次數/總共訪問的訪問次數

= (6 + (15 + 15) + (1 + 15 + 1 + 15) * 9) / (8 + (18 + 16) * 10)

= 324 / 348 = 93.1%

(b) 採用二路組關聯對映

一次訪問:63 ~ 70

主存位址63-70為主存的第3、4塊,將被指派到cache的行3和0,訪問過程中,順序發生以下事件:

(i) 訪問主存位址63,主存第3塊被調入cache的行3;

(ii) 訪問主存位址64,主存第4塊被調入cache的行0;

(iii) 訪問主存位址65-70,均為主存第4塊,已經在cache中,cache均命中。

迴圈10次訪問:15 ~ 32,80 ~ 95

主存位址15-32為主存的第0、1和2塊,將被指派到cache的行0、1和2。

主存位址80-95為主存的第5塊,將被指派到cache的行1。

在第1次迴圈中,順序發生以下事件:

(i) 訪問主存位址15,為主存第0塊被調入cache組0的行1;

(ii) 訪問主存位址16,為主存第1塊被調入cache組1的行1;

(iii) 訪問主存位址17-31,均為主存第1塊,已經在cache中,cache均命中;

(iv) 訪問主存位址32,為主存第2塊應被調入cache的組0,但組0已滿,根據lru策略,將組0的行0替代,主存第2塊調入cache組0的行0;

(v) 訪問主存位址80,為主存第5塊應被調入cache的組1,但組1已滿,根據lru策略,將組1的行0替代,主存第5塊調入cache組1的行0;

(vi) 訪問主存位址81-95,均為主存第5塊,已經在cache中,cache均命中。

此時後續迴圈所訪問的主存塊0、1、2和5均已在cache中,因此後續迴圈快取全部命中。

cache命中率 = 快取命中的塊數/總共訪問記憶體的塊數

= (6 + (15 + 15) + (18 + 16) * 9) / (8 + (18 + 16) * 10)

= 342 / 348 = 98.3%

mysql計算共享池命中率 計算記憶體命中率

1 lc的命中率 計算公式 library cache hit ratio sum pinhits sum pins selectsum pinhits sum pins fromv librarycache 通常在98 以上,否則,需要要考慮加大共享池,繫結變數,修改cursor sharing等...

redis命中率計算

redis提供了info這個命令,能夠隨時監控伺服器的狀態,只用telnet到對應伺服器的埠,執行命令即可 telnet localhost 6379 info在輸出的資訊裡面有這幾項和快取的狀態比較有關係 keyspace hits 14414110 keyspace misses 3228654...

redis命中率計算

redis提供了info這個命令,能夠隨時監控伺服器的狀態,只用telnet到對應伺服器的埠,執行命令即可 quote telnet localhost 6379 info quote 在輸出的資訊裡面有這幾項和快取的狀態比較有關係 quote keyspace hits 14414110 keys...