Linux共享記憶體和cache
申請以下共享記憶體,不對其進行初始化,共享記憶體大小為56600032bytes:
此時free:
total used free shared buffers cached
Mem: 3932356 132588 3799768 0 1148 26152
-/+ buffers/cache: 105288 3827068
Swap: 2008116 336 2007780
執行程式,往共享記憶體中寫資料,free檢視,cache一直在增長:
total used free shared buffers cached
Mem: 3932356 193984 3738372 0 1656 48264
-/+ buffers/cache: 144064 3788292
Swap: 2008116 336 2007780
total used free shared buffers cached
Mem: 3932356 199348 3733008 0 1660 53460
-/+ buffers/cache: 144228 3788128
Swap: 2008116 336 2007780
total used free shared buffers cached
Mem: 3932356 274448 3657908 0 1864 143216
-/+ buffers/cache: 129368 3802988
Swap: 2008116 336 2007780
增長到143216後cache不再增長。
用ipcrm刪除該共享記憶體,free結果:
total used free shared buffers cached
Mem: 3932356 201528 3730828 0 1928 88032
-/+ buffers/cache: 111568 3820788
Swap: 2008116 336 2007780
釋放的cache為55184K,和申請的共享記憶體大小差不多。如此是否共享記憶體在最初申請的時候並沒有實際為其分配cache,只有在對共享記憶體進行寫操作的時候才實際分配cache記憶體。