linux效能監控之free
free用於顯示系統記憶體使用量情況,一直對free的輸出迷惑不清,特總結如下:
123 4 5 6
free命令的輸出結果來自於檔案/proc/meminfo,預設以KB為單位顯示,可以通過-m選項以MB顯示,為了方便起見,將輸出結果劃分為4行3列,FO[1][1]表示輸出結果的第一行第一列,即total。以下是各行各列的解釋:
FO[2][1]:表示系統認為當前一共有24676104KB記憶體。
FO[2][2]:表示系統認為當前已有17659596KB記憶體被使用。
FO[2][3]:表示系統認為當前還有7016508KB記憶體可以使用。
FO[2][4]:已淘汰,忽略。
FO[2][5]:表示被系統分配作為buffers,但是還沒有被使用的記憶體。
FO[2][6]:表示被系統分配作為cache,但是還沒有別使用的記憶體。
- A buffer is something that has yet to be "written" to disk.
- A cache is something that has been "read" from the disk and stored for later use.
也就是說buffer是用於存放要輸出到disk(塊裝置)的資料的,而cache是存放從disk上讀出的資料。這二者是為了提高IO效能的,並由OS管理
即:Mem這行的資料顯示的是從系統的角度來看記憶體的使用方式。
FO[3][2]:應用程式實際已經使用的記憶體。
FO[3][3]:應用程式還可以使用的記憶體。
即:-/+ buffers/cache這一行的資料顯示的是從應用程式角度看記憶體的使用方式。
從以上解釋中可以總結出三個等式:
FO[2][1] = FO[2][2]+FO[2][3]
FO[3][2] = FO[2][2]-FO[2][5]-FO[2][6]
FO[3][3] = FO[2][3]+FO[2][5]+FO[2][6]