Linux運維 Linux上free命令的輸出

2021-09-02 05:17:10 字數 1970 閱讀 9708

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

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

fo[2][1] = 24677460

fo[3][2] = 10321516

1 2 3 4 5 6

1 total used free shared buffers cached

2 mem: 24677460 23276064 1401396 0 870540 12084008

3 -/+ buffers/cache: 10321516 14355944

4 swap: 25151484 224188 24927296

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

free輸出地第二行和第三行是比較讓人迷惑的。這兩行都是說明記憶體使用情況的。第一列是總量(total),第二列是使用量(used),第三列是可用量(free)。

第一行的輸出時從作業系統(os)來看的。也就是說,從os的角度來看,計算機上一共有:

24677460kb(預設時free的單位為kb)物理記憶體,即fo[2][1];

在這些物理記憶體中有23276064kb(即fo[2][2])被使用了;

還用1401396kb(即fo[2][3])是可用的;

這裡得到第乙個等式:

fo[2][1] = fo[2][2] + fo[2][3]

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

fo[2][5]表示被os buffer住的記憶體。fo[2][6]表示被os cache的記憶體。在有些時候buffer和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管理。

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

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

echo 3>/proc/sys/vm/drop_caches

讀乙個大檔案,並記錄時間;

關閉該檔案;

重讀這個大檔案,並記錄時間;

第二次讀應該比第一次快很多。原來我做過乙個berkeleydb的讀操作,大概要讀5g的檔案,幾千萬條記錄。在我的環境上,第二次讀比第一次大概可以快9倍左右。

free輸出的第二行是從乙個應用程式的角度看系統記憶體的使用情況。

對於fo[3][2],即-buffers/cache,表示乙個應用程式認為系統被用掉多少記憶體;

對於fo[3][3],即+buffers/cache,表示乙個應用程式認為系統還有多少記憶體;

因為被系統cache和buffer占用的記憶體可以被快速**,所以通常fo[3][3]比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]

這二者都不難理解。

free命令由procps.*.rpm提供(在redhat系列的os上)。free命令的所有輸出值都是從/proc/meminfo中讀出的。

linux運維 linux系統上忘記密碼如何操作

目錄 1 再出現以下介面後按鍵盤e鍵 2 進入以下介面後,再次按e鍵 3 使用上下鍵選擇第2項或帶有kernel字樣的行,然後再次按下e鍵 4 出現下圖,在游標處輸入single,按回車鍵,會回到和第3 步相似的介面,然後按b鍵。就會不用輸入密碼進入系統。進入之後重新設定密碼,然後reboot重啟後...

Linux運維是什麼?linux運維的基礎知識

如果您對運維行業了解一些,應該會知道,現在的運維早已不是早年的 睡機房 往辦公室打眼一看,分不清是運維攻城獅還是開發程式猿,但是,運維這行也是春天到了,今天linux,明天雲計算的,各種新鮮概念層出不窮,那麼,linux運維是什麼?雲計算運維又是什麼?linux運維需要掌握的基礎知識 1 shell...

Linux運維筆記

總核數 物理cpu個數 x 每顆物理cpu的核數 總邏輯cpu數 物理cpu個數 x 每顆物理cpu的核數 x 超執行緒數 檢視物理cpu個數 cat proc cpuinfo grep physical id sort uniq wc l 檢視每個物理cpu中core的個數 即核數 cat pro...