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重要命令
釋義 命令引數 示例 列目錄ls a 包括隱藏檔案 l 看詳細資訊 f 在檔案後面顯示表示檔案型別的符號 重定向 ls xx.txt管道 cmd1 cmd2 左面的輸出會作為右邊的輸入 許可權chmod chomd 777 file 切目錄cd 注意大小寫敏感 增 刪目錄 mkdir rmdir r...
linux 重要命令
檢視當前程序運 況 ps aux grep php very good ps aux grep nginx 刪除軟體命令 sudo apt get remove purge nginx 刪除nginx purge表示連配置檔案一起刪除 sudo apt get autoremove purge ng...
Linux 基礎重要命令
1.建立乙個目錄 data mkdir data 命令總結 1 mkdir 建立目錄的命令,mkdir directorys 2 ls ld directory 顯示目錄或者檔案 ls的全稱是list 3 cd 切換目錄層次 change directory 4 pwd 列印當前工作目錄 pwd的全...