cache中的thrashing問題和應對辦法

2022-06-14 14:48:13 字數 465 閱讀 7739

為什麼會這樣?

設x的起始位址為ax, 設x與y對應的記憶體偏移是t. 那麼什麼情況下, ax與ax+t對應的set index會是一樣的?

((ax)%2(b+s))/2b=((ax+t)%2(b+s))/2b成立的時候.

b是offset bits的長度, s是index bits的長度(也就是用來標誌set的位數)

在這裡, t=32, b=4, s=1, 發現僅僅是做了%2^(b+s)之後, 就已經相等了, 因為t是2^(b+s)的倍數.

如果想要它總是不相等怎麼辦? t需要再加x, 且滿足x/2^b>=1, <2^(b+s), 這樣就能保證不相等了. 最簡單地, 只要取2^b, 就一定不相等.

這裡b=4, 因此2^4=16, float的size是4, 因此padding為float[4]. 改x為float[12]即可. 差不多是通用公式了, 保證x與y的偏移%2^b為1就行(其它的也可以, 但要<2^s).

記憶體中的cache

在linux的記憶體管理中,這裡的buffer指linux記憶體的 buffer cache。這裡的cache指linux記憶體中的 page cache。翻譯成中文可以叫做緩衝區快取和頁面快取。什麼是page cache?page cache主要用來作為檔案系統上的檔案資料的快取來用,尤其是針對當...

acegi中的cache配置

通過讀acegi的原始碼,更加體會到 基於介面 的設計給擴充套件帶來巨大的靈活性。在bean配置中,有以下內容 這個usercache,acegi給出了乙個預設的ehcache的實現,如果你不設該屬性,預設使用nullusercache,使用者登入後,每進入乙個url,系統都會通過dao訪問一次資料...

C 中Cache的使用

公共方法 add將指定項新增到cache物件,該物件具有依賴項 過期和優先順序策略以及乙個委託 可用於在從cache移除插入項時通知應用程式 equals 從object繼承 已過載。確定兩個 object 例項是否相等。get從cache物件檢索指定項。getenumerator 檢索用於迴圈訪問...