Linux上的free命令詳解

2021-06-06 09:24:59 字數 1163 閱讀 7440

解釋一下linux上free命令的輸出。

下面是free的執行結果,一共有4行。為了方便說明,我們加上了列號。這樣可以把free的輸出看成乙個二維陣列fo(free output)。例如:

1          2          3         4         5           6

1total used free shared buffers cached

2mem

:999212

967476

31736

050668

223000

3-/+

buffers

/cache

:693808

305404

4swap

:2048276

154524

1893752

free的輸出一共有四行,第四行為交換區的資訊,分別是交換的總量(total),使用量(used)和有多少空閒的交換區(free),這個比較清楚,不說太多。

free輸出地第二行和第三行是比較讓人迷惑的。這兩行都是說明記憶體使用情況的。第一列是總量(free),第二列是使用量(free),第三列是可用量(free)。第一行的輸出時從作業系統(os)來看的。也就是說,從os的角度來看,計算機上一共有:

這裡得到第乙個等式:

fo[2][4]表示被幾個程序共享的記憶體的,現在已經deprecated,其值總是0(當然在一些系統上也可能不是0,主要取決於free命令是怎麼實現的)。

fo[2][5]表示被os buffer住的記憶體。fo[2][6]表示被os cache的記憶體。在有些時候buffer和cache這兩個詞經常混用。不過在一些比較低層的軟體裡是要區分這兩個詞的,看老外的洋文:

也就是說buffer是用於存放要輸出到disk(塊裝置)的資料的,而cache是存放從disk上讀出的資料。這二者是為了提高io效能的,並由os管理。

linux和其他成熟的作業系統(例如windows),為了提高io read的效能,總是要多cache一些資料,這也就是為什麼fo[2][6](cached memory)比較大,而fo[2][3]比較小的原因。我們可以做乙個簡單的測試:

釋放掉被系統cache占用的資料;

Linux上的free命令詳解

解釋一下linux上free命令的輸出。下面是free的執行結果,一共有4行。為了方便說明,我們加上了列號。這樣可以把free的輸出看成乙個二維陣列fo free output 例如 free的輸出一共有四行,第四行為交換區的資訊,分別是交換的總量 total 使用量 used 和有多少空閒的交換區...

Linux上的free命令詳解

解釋一下linux上free命令的輸出。下面是free的執行結果,一共有4行。為了方便說明,我加上了列號。這樣可以把free的輸出看成乙個二維陣列fo free output 例如 1 2 3 4 5 6 1 total used free shared buffers cached 2 mem 2...

Linux上的free命令詳解

解釋一下linux上free命令的輸出。下面是free的執行結果,一共有4行。為了方便說明,我加上了列號。這樣可以把free的輸出看成乙個二維陣列fo free output 例如 1 2 3 4 5 6 1 total used free shared buffers cached 2 mem 2...