linux效能監控和優化命令free

2021-10-05 17:39:02 字數 4922 閱讀 7120

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

輸出:[root@sf1150 service]# free

total       used       free     shared    buffers     cached

mem:      32940112   30841684    2098428          0    4545340   11363424

-/+ buffers/cache:   14932920   18007192

swap:     32764556    1944984   30819572

[root@sf1150 service]# free -g

total       used       free     shared    buffers     cached

mem:            31         29          2          0          4         10

-/+ buffers/cache:         14         17

swap:           31          1         29

[root@sf1150 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/cached):

used:已使用多大。

free:可用有多少。

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

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

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

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

18007156=2098428kb+4545340kb+11363424kb

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

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

命令:cat /proc/meminfo 

輸出:[root@sf1150 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

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型別的記憶體頁面交換出去,  

事實上,少量地使用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 

輸出:[root@sf1150 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[root@sf1150 service]#

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

命令:free -s 10

輸出:[root@sf1150 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 效能優化筆記 應用監控

跟系統監控一樣,在構建應用程式的監控系統之前,首先也需要確定,到底需要監控哪些指標。特別是要清楚,有哪些指標可以用來快速確認應用程式的效能問題。對系統資源的監控,use 法簡單有效,卻不代表其適合應用程式的監控。舉個例子,即使在 cpu 使用率很低的時候,也不能說明應用程式就沒有效能瓶頸。因為應用程...

Linux系統和效能監控

4.0 cpu效能監控 cpu效能表現如何一般從三個方面來衡量 執行佇列 利用率和上下文切換。正如前文所提及的,效能表現的好壞和基線資料 或預期 是密不可分的。對大部分系統而言,一些基本的效能預期如下 上下文切換 上下文切換的次數和cpu利用率相關。假設cpu利用率達到了上述的佔比劃分,大量的上下文...

Linux 效能監控 測試 優化工具

linux 平台上的效能工具有很多,眼花繚亂,長期的摸索和經驗發現最好用的還是那些久經考驗的 簡單的小工具。系統效能專家 brendan d.gregg 在最近的 linuxcon na 2014 大會上更新了他那個有名的關於 linux 效能方面的 talk linux performance t...