1. 程式人生 > >Linux中用free命令檢視記憶體佔用情況

Linux中用free命令檢視記憶體佔用情況

free命令可以顯示Linux系統中空閒的、已用的實體記憶體及swap記憶體,及被核心使用的buffer。在Linux系統監控的工具中,free命令是最經常使用的命令之一。

1命令格式:

free [引數]

2命令功能:

free 命令顯示系統使用和空閒的記憶體情況,包括實體記憶體、互動區記憶體(swap)和核心緩衝區記憶體。共享記憶體將被忽略

3命令引數:

-b  以Byte為單位顯示記憶體使用情況。 

-k  以KB為單位顯示記憶體使用情況。 

-m  以MB為單位顯示記憶體使用情況。

-g   以GB為單位顯示記憶體使用情況。 

-o  不顯示緩衝區調節列。 

-s<間隔秒數> 

 持續觀察記憶體使用狀況。 

-t  顯示記憶體總和列。 

-V  顯示版本資訊。 

4使用例項:

例項1:顯示記憶體使用情況

命令:

free

free -g

free -m

輸出:

[[email protected] service]#free

               total              used              free                   shared    buffers       cached

Mem:      32940112   30841684    2098428          0              4545340   11363424

-/+ buffers/cache:       14932920   18007192

Swap:     32764556   1944984      30819572

[[email protected] service]#free -g

                   total       used       free     shared    buffers     cached

Mem:            31         29          2          0              4               10

-/+ buffers/cache:     14         17

Swap:           31          1           29

[[email protected] service]#free -m

                  total          used         free            shared    buffers     cached

Mem:         32168      30119       2048          0             4438        11097

-/+ buffers/cache:      14583      17584

Swap:        31996      1899         30097

說明:

下面是對這些數值的解釋:

total:總計實體記憶體的大小。

used:已使用多大。

free:可用有多少。

Shared:多個程序共享的記憶體總額。

Buffers/cached:磁碟快取的大小。

(-buffers/cache) used記憶體數:指的第一部分Mem行中的used - buffers - cached
(+buffers/cache) free記憶體數: 指的第一部分Mem行中的free + buffers + cached
可見-buffers/cache反映的是被程式實實在在吃掉的記憶體,而+buffers/cache反映的是可以挪用的記憶體總數。

第四行是交換分割槽SWAP的,也就是我們通常所說的虛擬記憶體。

區別:第二行(mem)的used/free與第三行(-/+ buffers/cache) used/free的區別。 這兩個的區別在於使用的角度來看,第一行是從OS的角度來看,因為對於OS,buffers/cached 都是屬於被使用,所以他的可用記憶體是2098428KB,已用記憶體是30841684KB,其中包括,核心(OS)使用+Application(X, oracle,etc)使用的+buffers+cached.

第三行所指的是從應用程式角度來看,對於應用程式來說,buffers/cached 是等於可用的,因為buffer/cached是為了提高檔案讀取的效能,當應用程式需在用到記憶體的時候,buffer/cached會很快地被回收。

所以從應用程式的角度來說,可用記憶體=系統free memory+buffers+cached。

如本機情況的可用記憶體為:

18007156=2098428KB+4545340KB+11363424KB

接下來解釋什麼時候記憶體會被交換,以及按什麼方交換。

當可用記憶體少於額定值的時候,就會開會進行交換.如何看額定值: 

命令:

cat /proc/meminfo 

輸出:

[[email protected] service]#cat /proc/meminfo

MemTotal:     32940112 kB

MemFree:       2096700 kB

Buffers:       4545340 kB

Cached:       11364056 kB

SwapCached:    1896080 kB

Active:       22739776 kB

Inactive:      7427836 kB

HighTotal:           0 kB

HighFree:            0 kB

LowTotal:     32940112 kB

LowFree:       2096700 kB

SwapTotal:    32764556 kB

SwapFree:     30819572 kB

Dirty:             164 kB

Writeback:           0 kB

AnonPages:    14153592 kB

Mapped:          20748 kB

Slab:           590232 kB

PageTables:      34200 kB

NFS_Unstable:        0 kB

Bounce:              0 kB

CommitLimit:  49234612 kB

Committed_AS: 23247544 kB

VmallocTotal: 34359738367 kB

VmallocUsed:    278840 kB

VmallocChunk: 34359459371 kB

HugePages_Total:     0HugePages_Free:      0HugePages_Rsvd:      0Hugepagesize:     2048 kB

交換將通過三個途徑來減少系統中使用的物理頁面的個數:  

1.減少緩衝與頁面cache的大小, 

2.將系統V型別的記憶體頁面交換出去,  

3.換出或者丟棄頁面。(Application 佔用的記憶體頁,也就是實體記憶體不足)。 

事實上,少量地使用swap是不是影響到系統性能的。

那buffers和cached都是快取,兩者有什麼區別呢?

為了提高磁碟存取效率, Linux做了一些精心的設計, 除了對dentry進行快取(用於VFS,加速檔案路徑名到inode的轉換), 還採取了兩種主要Cache方式:Buffer Cache和Page Cache。前者針對磁碟塊的讀寫,後者針對檔案inode的讀寫。這些Cache有效縮短了 I/O系統呼叫(比如read,write,getdents)的時間。

磁碟的操作有邏輯級(檔案系統)和物理級(磁碟塊),這兩種Cache就是分別快取邏輯和物理級資料的。

Page cache實際上是針對檔案系統的,是檔案的快取,在檔案層面上的資料會快取到page cache。檔案的邏輯層需要對映到實際的物理磁碟,這種對映關係由檔案系統來完成。當page cache的資料需要重新整理時,page cache中的資料交給buffer cache,因為Buffer Cache就是快取磁碟塊的。但是這種處理在2.6版本的核心之後就變的很簡單了,沒有真正意義上的cache操作。

Buffer cache是針對磁碟塊的快取,也就是在沒有檔案系統的情況下,直接對磁碟進行操作的資料會快取到buffer cache中,例如,檔案系統的元資料都會快取到buffer cache中。

簡單說來,page cache用來快取檔案資料,buffer cache用來快取磁碟資料。在有檔案系統的情況下,對檔案操作,那麼資料會快取到page cache,如果直接採用dd等工具對磁碟進行讀寫,那麼資料會快取到buffer cache。

所以我們看linux,只要不用swap的交換空間,就不用擔心自己的記憶體太少.如果常常swap用很多,可能你就要考慮加實體記憶體了.這也是linux看記憶體是否夠用的標準.

如果是應用伺服器的話,一般只看第二行,+buffers/cache,即對應用程式來說free的記憶體太少了,也是該考慮優化程式或加記憶體了。

例項2:以總和的形式顯示記憶體的使用資訊

命令:

free -t 

輸出:

[[email protected] service]# free -t 

            total       used       free     shared    buffers     cached

Mem:      32940112   30845024    2095088          0    4545340   11364324

-/+ buffers/cache:   14935360   18004752Swap:     32764556    1944984   30819572Total:    65704668   32790008   32914660[[email protected] service]#

說明:

例項3:週期性的查詢記憶體使用資訊

命令:

free -s 10

輸出:

[[email protected] service]# free -s 10

            total       used       free     shared    buffers     cached

Mem:      32940112   30844528    2095584          0    4545340   11364380

-/+ buffers/cache:   14934808   18005304Swap:     32764556    1944984   30819572

             total       used       free     shared    buffers     cached

Mem:      32940112   30843932    2096180          0    4545340   11364388

-/+ buffers/cache:   14934204   18005908Swap:     32764556    1944984   30819572

說明:

10s 執行一次命令

相關推薦

Linux中用free命令檢視記憶體佔用情況

free命令可以顯示Linux系統中空閒的、已用的實體記憶體及swap記憶體,及被核心使用的buffer。在Linux系統監控的工具中,free命令是最經常使用的命令之一。 1.命令格式: free [引數] 2.命令功能: free 命令顯示系統使用和空閒的記憶體情況,包

Linuxfree命令檢查記憶體使用情況

我們都知道, IT 基礎設施方面的大多數伺服器(包括世界頂級的超級計算機)都執行在 Linux 平臺上,因為和其他作業系統相比, Linux 更加靈活。有的作業系統對於一些微乎其微的改動和補丁更新都需要重啟,但是 Linux 不需要,只有對於一些關鍵補丁的更新, Linux

Linux使用free命令檢視實際記憶體佔用

轉自:http://www.cnblogs.com/pengdonglin137/p/3315124.html Linux下在終端環境下可以使用free命令看到系統實際使用記憶體的情況,一般用free -m方式檢視記憶體佔用情況(兆為單位)。而系統實際可用記憶體是不是free

如何理解Linux下,使用top命令看到記憶體佔用情況

linux 下使用top命令之後看到記憶體佔用情況如下: Mem: 32849260k total, 32630656k used, 218604k free, 445512k buffers Swap: 0k total, 0k used,

Centos 7 檢視記憶體佔用情況相關命令

1、 top命令 top命令經常用來監控linux的系統狀況,比如cpu、記憶體的使用,程式設計師基本都知道這個命令。 按 q 退出 2、free -m:看記憶體佔用 主要看第一行Mem 總共 15710 M , 使用了 823 M , 剩餘空閒 7895 M 。這個shared 223M 也不知道用在

linux檢視記憶體佔用情況

輸入:top PID:程序的ID   USER:程序所有者   PR:程序的優先級別,越小越優先被執行   NInice:值   VIRT:程序佔用的虛擬記憶體   RES:程序佔用的實體記憶體   SHR:程序使用的共享記憶體   S:程序的狀態。S表示

Linux系統使用iftop檢視頻寬佔用情況

Linux系統下如果伺服器頻寬跑滿了,檢視跟哪個ip通訊佔用頻寬比較多,可以通過iftop命令進行查詢,使用方法如下:CentOS系統執行:yum install iftopDebian系統 執行:apt-get install iftop在安裝過程中需要我們輸入 y 繼續的

Linux中用ps命令檢視程序狀態

Linux上程序有5種狀態: 1. 執行(正在執行或在執行佇列中等待) 2. 中斷(休眠中, 受阻, 在等待某個條件的形成或接受到訊號) 3. 不可中斷(收到訊號不喚醒和不可執行, 程序必須等待直到有中斷髮生) 4. 僵死(程序已終止, 但程序描

linux下使用free命令檢視實際記憶體佔用(可用記憶體

轉:http://blog.is36.com/linux_free_command_for_memory/ linux下在終端環境下可以使用free命令看到系統實際使用記憶體的情況,一般用free -m方式檢視記憶體佔用情況(兆為單位)。而系統實際可用記憶體是不是f

linux ps sort命令檢視佔用CPU或記憶體最大的幾個程序

ps aux | sort -k 3 -rn |head  檢視系統內佔用cpu最大的幾個程序 ps aux | sort -k 4 -rn |head  檢視系統內佔用記憶體最大的幾個程序     sort 升序排列 引數:

檢視LINUX程序記憶體佔用情況

可以直接使用top命令後,檢視%MEM的內容。可以選擇按程序檢視或者按使用者檢視,如想檢視oracle使用者的程序記憶體使用情況的話可以使用如下的命令: (1)top top命令是Linux下常用的效能分析工具,能夠實時顯示系統中各個程序的資源佔用狀況,類似於W

linux 記憶體佔用情況檢視並優化

1. 使用top 檢視記憶體的佔用情況,該命令類似於windows系統的記憶體管理器, 然後鍵入"M"命令根據記憶體的佔用情況降序排列,看看記憶體主要由哪些程序佔用。("P"是CPU佔用情況降序排列) 2.再使用free -m卻還有6.1G被佔用(記憶體總共8G),仔細

檢視LINUX程序記憶體佔用情況(轉)

可以直接使用top命令後,檢視%MEM的內容。可以選擇按程序檢視或者按使用者檢視,如想檢視oracle使用者的程序記憶體使用情況的話可以使用如下的命令:  (1)top   top命令是Linux下常用的效能分析工具,能夠實時顯示系統中各個程序的資源佔用狀況,類似於Windows的工作管理員   可

檢視LINUX程序記憶體佔用情況 top pmap ps

可以直接使用top命令後,檢視%MEM的內容。可以選擇按程序檢視或者按使用者檢視,如想檢視oracle使用者的程序記憶體使用情況的話可以使用如下的命令:  (1)top   top命令是Linux下常用的效能分析工具,能夠實時顯示系統中各個程序的資源佔用狀況,類似於W

Linux 檢視Tomcat記憶體佔用情況

以前伺服器還是用 Windows Server 系統的時候,檢視一下各個程序對記憶體的影響就再簡單不過了,開啟工作管理員跟蹤一下相關的 JAVA 程序就OK了。但是伺服器如果使用的是 Linux 系統,有不少小夥伴就不知道怎麼看了,而且網友的回覆也是眾說紛紜。我總結了一下

Linux檢視程序的記憶體佔用情況

top命令是Linux下常用的效能分析工具,能夠實時顯示系統中各個程序的資源佔用狀況,類似於Windows的工作管理員 內容解釋: PID:程序的ID USER:程序所有者 PR:程序的優先級別,越小越優先被執行 NInice:值 VIRT:程序佔用的虛擬記憶體 RES:

Linux檢視某個程序記憶體佔用情況

在 Linux 上進行開發和運營維護的時候,免不了要檢視某一個程式所佔用記憶體的情況。有很多個命令都可以達到我們的需求,這裡給大家列舉幾個:  1:top -p pid 檢視程式的情況  2:ps -aux | grep process_name 3:cat /p

檢視Linux磁碟及記憶體佔用情況

檢視磁碟使用情況: df -k:以KB為單位顯示磁碟使用量和佔用率 df -m:以Mb為單位顯示磁碟使用量和佔用率 df –help:檢視更多df命令及使用方法 檢視記憶體佔用情況: 1.top PID:當前執行程序的ID USE

linux top命令檢視記憶體及多核CPU的使用

檢視多核CPU命令 mpstat -P ALL  和  sar -P ALL  說明:sar -P ALL > aaa.txt   

linux檢視記憶體使用情況

用 'top -i' 看看有多少程序處於 Running 狀態,可能系統存在記憶體或 I/O 瓶頸,用 free 看看系統記憶體使用情況,swap 是否被佔用很多,用 iostat 看看 I/O 負載情況... 還有一種辦法是 ps -ef | sort -k7 ,將程序按