linuxcache
❶ linux內存 Buffer和Cache的區別及Linux中查看內存的命令free
Linux中內存查看命令free詳解
2011-08-18 11:24:34| 分類: linux相關|舉報|字型大小 訂閱
下載LOFTER我的照片書 |
free命令用來查看內存的使用情況,與Top命令相比,開銷較小。
$free –m
total used free shared buffers cached
mem: 1002 769 232 0 62 421
-/+ buffers/cache 286 715
swap 1153 0 1 153
說明:在理解free命令的輸出項的時候,要區分兩個概念:第一行(mem),是針對操作系統來說的,而對操作系統來說buffer和cache都是屬於被使用了的內存。第二行(-/+ buffers/cache)是針對應用程序來說的,而對應用程序來說,buffer和cache都屬於可以使用的內存。
所以:
第一行(mem):
total:表示系統可使用的物理內存的總量為1002;
used表示已經被分配的內存為769,具體包括真正已經被使用掉的buffer和cache內存286,未使用的buffer內存62,未使用的cache內存421,即769 = 62 + 421 + 286;
free:表示為分配的物理內存為232;
buffers:已經被系統分配而未使用的buffer內存62;
cached:已經被分配而未使用的cache內存421;
第二行(-/+ buffers/cache);
used:已經被應用程序真正使用掉的buffer和cache內存為286;
free:可以被應用程序使用的內存為715,其中包括:已經分配而未使用的buffer內存62,已經分配而未使用的cache內存421,還沒有被分配的內存232,即: 715 = 62 + 421 + 232;
另:Linux中buffer與cache的區別:
buffer:要寫到硬碟上去的數據內存;
cache:讀取到內存中的數據內存;
❷ Linux中內存buffer和cache的區別
兩者都是RAM中的數據。簡單來說,buffer是即將要被寫入磁碟的,而cache是被從磁碟中讀出來的。
緩存(cached)是把讀取過的數據保存起來,重新讀取時若命中(找到需要的數據)就不要去讀硬碟了,若沒有命中就讀硬碟。其中的數據會根據讀取頻率進行組織,把最頻繁讀取的內容放在最容易找到的位置,把不再讀的內容不斷往後排,直至從中刪除。
緩存(cache)實際並不是緩沖文件的,而是緩沖塊的,塊是磁碟I/O操作的最小單元(在Linux中,它們通常是1KB)。這樣,目錄、超級塊、其它文件系統的薄記數據以及非文件系統的磁碟數據都可以被緩沖了。
如果緩存有固定的大小,那麼緩存太大了也不好,因為這會使得空閑的內存太小而導致進行交換操作(這同樣是慢的)。為了最有效地使用實際內存,Linux自動地使用所有空閑的內存作為高速緩沖,當程序需要更多的內存時,它也會自動地減小緩沖的大小。
緩沖(buffers)是根據磁碟的讀寫設計的,把分散的寫操作集中進行,減少磁碟碎片和硬碟的反復尋道,從而提高系統性能。linux有一個守護進程定期清空緩沖內容(即寫磁碟),也可以通過sync命令手動清空緩沖。舉個例子吧:我這里有一個ext2的U盤,我往裡面cp一個3M的 MP3,但U盤的燈沒有跳動,過了一會兒(或者手動輸入sync)U盤的燈就跳動起來了。卸載設備時會清空緩沖,所以有些時候卸載一個設備時要等上幾秒鍾。
buffer是由各種進程分配的,由進程和系統一起管理.被用在如輸入隊列等方面,一個簡單的例子如某個進程要求有多個欄位讀入,在所有欄位被讀入完整之前,進程把先前讀入的欄位放在buffer中保存。
cache經常被用在磁碟的I/O請求上,如果有多個進程都要訪問某個文件,於是該文件便被做成cache以方便下次被訪問,這樣可提供系統性能。
綜上所述可以理解為cache系統管理, buffer由進程和系統一起管理.
❸ linux緋葷粺cache琚鍗犳弧浜,fwrite鏁堢巼浣庝笅
浣犳槸鎯抽棶linux緋葷粺cache琚鍗犳弧浜,fwrite鏁堢巼浣庝笅鎬庝箞鍔炲悧錛焞inux緋葷粺cache琚鍗犳弧浜嗭紝fwrite鏁堢巼浣庝笅鍙浠ョ敤鍛戒護娓呴櫎涓涓嬪唴瀛樸俵inux緋葷粺涓嬬粡甯鎬細閬囧埌buff/cache鍐呭瓨鍗犵敤榪囧氶棶棰樻垨鍗犳弧鐨勯棶棰橈紝榪欎釜鏃跺檉write鏁堢巼浣庛傚叾瀹炶繖閲岄潰寰堝氭槸鉶氭嫙鍐呭瓨錛岃繖涓鏃跺欏彲浠ヤ嬌鐢ㄥ懡浠ゅ幓娓呴櫎涓涓媍ache鍐呭瓨錛岄氳繃娓呴櫎涔嬪悗錛屽彲浠ョ湅鍒板唴瀛橀噴鏀句簡寰堝氾紝free鍐呭瓨澧炲姞浜嗐俵inux鏄涓縐嶈嚜鐢卞拰寮鏀炬簮浠g爜鐨勭被UNIX鎿嶄綔緋葷粺銆