亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

linux free命令詳解

 更新時間:2018年02月24日 13:49:29   作者:sparkdev  
本篇文章主要介紹了linux free命令詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

本文介紹了linux free命令詳解,分享給大家,具體如下:

free 命令顯示系統(tǒng)內存的使用情況,包括物理內存、交換內存(swap)和內核緩沖區(qū)內存。

如果加上 -h 選項,輸出的結果會友好很多:

有時我們需要持續(xù)的觀察內存的狀況,此時可以使用 -s 選項并指定間隔的秒數(shù):

$ free -h -s 3

上面的命令每隔 3 秒輸出一次內存的使用情況,直到你按下 ctrl + c。
(Ubuntu 16.04 中默認的 free 版本有 bug,使用 -s 選項時報錯,所以這張圖是在 CentOS 中截的。)

由于 free 命令本身比較簡單,所以本文的重點會放在如何通過 free 命令了解系統(tǒng)當前的內存使用狀況。

輸出簡介

下面先解釋一下輸出的內容:
Mem 行(第二行)是內存的使用情況。
Swap 行(第三行)是交換空間的使用情況。
total 列顯示系統(tǒng)總的可用物理內存和交換空間大小。
used 列顯示已經被使用的物理內存和交換空間。
free 列顯示還有多少物理內存和交換空間可用使用。
shared 列顯示被共享使用的物理內存大小。
buff/cache 列顯示被 buffer 和 cache 使用的物理內存大小。
available 列顯示還可以被應用程序使用的物理內存大小。

我想只有在理解了一些基本概念之后,上面的輸出才能幫助我們了解系統(tǒng)的內存狀況。

buff/cache

先來提一個問題: buffer 和 cache 應該是兩種類型的內存,但是 free 命令為什么會把它們放在一起呢?要回答這個問題需要我們做些準備工作。讓我們先來搞清楚 buffer 與 cache 的含義。

buffer 在操作系統(tǒng)中指 buffer cache, 中文一般翻譯為 "緩沖區(qū)"。要理解緩沖區(qū),必須明確另外兩個概念:"扇區(qū)" 和 "塊"。扇區(qū)是設備的最小尋址單元,也叫 "硬扇區(qū)" 或 "設備塊"。塊是操作系統(tǒng)中文件系統(tǒng)的最小尋址單元,也叫 "文件塊" 或 "I/O 塊"。每個塊包含一個或多個扇區(qū),但大小不能超過一個頁面,所以一個頁可以容納一個或多個內存中的塊。當一個塊被調入內存時,它要存儲在一個緩沖區(qū)中。每個緩沖區(qū)與一個塊對應,它相當于是磁盤塊在內存中的表示(下圖來自互聯(lián)網):

注意,buffer cache 只有塊的概念而沒有文件的概念,它只是把磁盤上的塊直接搬到內存中而不關心塊中究竟存放的是什么格式的文件。

cache 在操作系統(tǒng)中指 page cache,中文一般翻譯為 "頁高速緩存"。頁高速緩存是內核實現(xiàn)的磁盤緩存。它主要用來減少對磁盤的 I/O 操作。具體地講,是通過把磁盤中的數(shù)據(jù)緩存到物理內存中,把對磁盤的訪問變?yōu)閷ξ锢韮却娴脑L問。頁高速緩存緩存的是內存頁面。緩存中的頁來自對普通文件、塊設備文件(這個指的就是 buffer cache 呀)和內存映射文件的讀寫。

頁高速緩存對普通文件的緩存我們可以這樣理解:當內核要讀一個文件(比如 /etc/hosts)時,它會先檢查這個文件的數(shù)據(jù)是不是已經在頁高速緩存中了。如果在,就放棄訪問磁盤,直接從內存中讀取。這個行為稱為緩存命中。如果數(shù)據(jù)不在緩存中,就是未命中緩存,此時內核就要調度塊 I/O 操作從磁盤去讀取數(shù)據(jù)。然后內核將讀來的數(shù)據(jù)放入頁高速緩存中。這種緩存的目標是文件系統(tǒng)可以識別的文件(比如 /etc/hosts)。

頁高速緩存對塊設備文件的緩存就是我們在前面介紹的 buffer cahce。因為獨立的磁盤塊通過緩沖區(qū)也被存入了頁高速緩存(緩沖區(qū)最終是由頁高速緩存來承載的)。

到這里我們應該搞清楚了:無論是緩沖區(qū)還是頁高速緩存,它們的實現(xiàn)方式都是一樣的。緩沖區(qū)只不過是一種概念上比較特殊的頁高速緩存罷了。

那么為什么 free 命令不直接稱為 cache 而非要寫成 buff/cache? 這是因為緩沖區(qū)和頁高速緩存的實現(xiàn)并非天生就是統(tǒng)一的。在 linux 內核 2.4 中才將它們統(tǒng)一。更早的內核中有兩個獨立的磁盤緩存:頁高速緩存和緩沖區(qū)高速緩存。前者緩存頁面,后者緩存緩沖區(qū)。當你知道了這些故事之后,輸出中列的名稱可能已經不再重要了。

free 與 available

在 free 命令的輸出中,有一個 free 列,同時還有一個 available 列。這二者到底有何區(qū)別?

free 是真正尚未被使用的物理內存數(shù)量。至于 available 就比較有意思了,它是從應用程序的角度看到的可用內存數(shù)量。Linux 內核為了提升磁盤操作的性能,會消耗一部分內存去緩存磁盤數(shù)據(jù),就是我們介紹的 buffer 和 cache。所以對于內核來說,buffer 和 cache 都屬于已經被使用的內存。當應用程序需要內存時,如果沒有足夠的 free 內存可以用,內核就會從 buffer 和 cache 中回收內存來滿足應用程序的請求。所以從應用程序的角度來說,available = free + buffer + cache。請注意,這只是一個很理想的計算方式,實際中的數(shù)據(jù)往往有較大的誤差。

交換空間(swap space)

swap space 是磁盤上的一塊區(qū)域,可以是一個分區(qū),也可以是一個文件。所以具體的實現(xiàn)可以是 swap 分區(qū)也可以是 swap 文件。當系統(tǒng)物理內存吃緊時,Linux 會將內存中不常訪問的數(shù)據(jù)保存到 swap 上,這樣系統(tǒng)就有更多的物理內存為各個進程服務,而當系統(tǒng)需要訪問 swap 上存儲的內容時,再將 swap 上的數(shù)據(jù)加載到內存中,這就是常說的換出和換入。交換空間可以在一定程度上緩解內存不足的情況,但是它需要讀寫磁盤數(shù)據(jù),所以性能不是很高。

現(xiàn)在的機器一般都不太缺內存,如果系統(tǒng)默認還是使用了 swap 是不是會拖累系統(tǒng)的性能?理論上是的,但實際上可能性并不是很大。并且內核提供了一個叫做 swappiness 的參數(shù),用于配置需要將內存中不常用的數(shù)據(jù)移到 swap 中去的緊迫程度。這個參數(shù)的取值范圍是 0~100,0 告訴內核盡可能的不要將內存數(shù)據(jù)移到 swap 中,也即只有在迫不得已的情況下才這么做,而 100 告訴內核只要有可能,盡量的將內存中不常訪問的數(shù)據(jù)移到 swap 中。在 ubuntu 系統(tǒng)中,swappiness 的默認值是 60。如果我們覺著內存充足,可以在 /etc/sysctl.conf 文件中設置 swappiness:

vm.swappiness=10

如果系統(tǒng)的內存不足,則需要根據(jù)物理內存的大小來設置交換空間的大小。具體的策略網上有很豐富的資料,這里筆者不再贅述。

/proc/meminfo 文件

其實 free 命令中的信息都來自于 /proc/meminfo 文件。/proc/meminfo 文件包含了更多更原始的信息,只是看起來不太直觀:

$ cat /proc/meminfo

有興趣的同學可以直接查看這個文件。

總結

free 命令是一個既簡單又復雜的命令。簡單是因為這個命令的參數(shù)少,輸出結果清晰。說它復雜則是因為它背后是比較晦澀的操作系統(tǒng)中的概念,如果不清楚這些概念,即便看了 free 命令的輸出也 get 不到多少有價值的信息。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • linux下查看內存條數(shù)及每根內存大小的實現(xiàn)方法(推薦)

    linux下查看內存條數(shù)及每根內存大小的實現(xiàn)方法(推薦)

    下面小編就為大家?guī)硪黄猯inux下查看內存條數(shù)及每根內存大小的實現(xiàn)方法(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-11-11
  • Linux安裝MongoDB啟動及常見問題解決

    Linux安裝MongoDB啟動及常見問題解決

    這篇文章主要介紹了Linux安裝MongoDB啟動及問題解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • Linux tee命令使用詳解

    Linux tee命令使用詳解

    這篇文章主要介紹了Linux tee命令使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12
  • 基于Ubuntu 16.04設置固定IP的方法教程

    基于Ubuntu 16.04設置固定IP的方法教程

    這篇文章主要給大家介紹了基于Ubuntu 16.04設置固定IP的方法教程,文中通過圖文以及示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧。
    2017-10-10
  • CentOS6.5下搭建文件共享服務Samba的教程

    CentOS6.5下搭建文件共享服務Samba的教程

    這篇文章主要介紹了CentOS6.5下搭建文件共享服務(Samba)的教程,本文圖文并茂給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-10-10
  • Xshell連接centOS7并與CentOS7聯(lián)網

    Xshell連接centOS7并與CentOS7聯(lián)網

    本文主要介紹了Xshell連接centOS7并與CentOS7聯(lián)網,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • linux expect實現(xiàn)登陸遠程主機并執(zhí)行命令示例代碼

    linux expect實現(xiàn)登陸遠程主機并執(zhí)行命令示例代碼

    這篇文章主要給大家介紹了linux expect實現(xiàn)登陸遠程主機并執(zhí)行命令的相關資料,文中給出了詳細的示例代碼供大家參考學習,對大家具有一定的參考學習價值,需要的朋友們下面來一起看看吧。
    2017-06-06
  • Centos6.9安裝vsftpd并配置多用戶的方法

    Centos6.9安裝vsftpd并配置多用戶的方法

    本篇文章主要介紹了Centos6.9安裝vsftpd并配置多用戶的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • 關于linux服務器下vsftpd的一些問題

    關于linux服務器下vsftpd的一些問題

    針對我自己本身出現(xiàn)的問題,將高人與我的QQ聊天記錄整理了一份,然后再加上實際的操作.終于讓我大徹大悟.現(xiàn)在與大家狠狠的分享這位高人的成果.
    2010-06-06
  • 使用FileZilla從Linux系統(tǒng)下載文件的方法

    使用FileZilla從Linux系統(tǒng)下載文件的方法

    最近做項目,遇到這樣的需求,要求將Linux系統(tǒng)的的某個文件夾下載到我Windows系統(tǒng)某個文件夾里,怎么實現(xiàn)這個功能呢?下面腳本之家小編給大家?guī)砹耸褂肍ileZilla從Linux系統(tǒng)下載文件的方法,感興趣的朋友一起看看吧
    2018-07-07

最新評論