題目
(**課堂)
一次: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...