free 命令
free?命令顯示Linux系統內存的使用和空閑情況,包括物理內存、交互區內存(swap)和內核緩沖區內存。共享內存將被忽略
(free displays the total amount of free and used physical and swap memory in the system, as well as the buffers used by the kernel. The shared?memory column represents the ’Shmem’ value. The available memory column represents the ’MemAvailable’ value.)
1.命令格式:
free?[參數]
2.命令功能:
free?命令顯示Linux系統內存的使用和空閑情況,包括物理內存、交互區內存(swap)和內核緩沖區內存。共享內存將被忽略
3.命令參數:
-b:以Byte為單位顯示內存使用情況。?
-k:以KB為單位顯示內存使用情況。?
-m:以MB為單位顯示內存使用情況。
-g:以GB為單位顯示內存使用情況。?
-o:不顯示緩沖區調節列。?
-s<間隔秒數>:持續觀察內存使用狀況。?
-t:顯示內存總和列。?
-V:顯示版本信息。?
4.使用實例:
實例1:顯示內存使用情況
[root@SF1150 service]# freetotal used free shared buffers cachedMem: 32940112 30841684 2098428 0 4545340 11363424-/+ buffers/cache: 14932920 18007192Swap: 32764556 1944984 30819572[root@SF1150 service]# free -gtotal used free shared buffers cachedMem: 31 29 2 0 4 10-/+ buffers/cache: 14 17Swap: 31 1 29[root@SF1150 service]# free -mtotal used free shared buffers cachedMem: 32168 30119 2048 0 4438 11097-/+ buffers/cache: 14583 17584Swap: 31996 1899 30097說明:
下面是對這些數值的解釋:
total:總計物理內存的大小。
used:已使用多大。
free:可用有多少。
Shared:多個進程共享的內存總額。
Buffers/cached:磁盤緩存的大小。
第三行(-/+?buffers/cached):
used:已使用多大。
free:可用有多少。
第四行是交換分區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
接下來解釋什么時候內存會被交換,以及按什么方交換。?
當可用內存少于額定值的時候,就會開會進行交換.如何看額定值:?
[root@SF1150 service]# cat /proc/meminfoMemTotal: 32940112 kBMemFree: 2096700 kBBuffers: 4545340 kBCached: 11364056 kBSwapCached: 1896080 kBActive: 22739776 kBInactive: 7427836 kBHighTotal: 0 kBHighFree: 0 kBLowTotal: 32940112 kBLowFree: 2096700 kBSwapTotal: 32764556 kBSwapFree: 30819572 kBDirty: 164 kBWriteback: 0 kBAnonPages: 14153592 kBMapped: 20748 kBSlab: 590232 kBPageTables: 34200 kBNFS_Unstable: 0 kBBounce: 0 kBCommitLimit: 49234612 kBCommitted_AS: 23247544 kBVmallocTotal: 34359738367 kBVmallocUsed: 278840 kBVmallocChunk: 34359459371 kBHugePages_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:以總和的形式顯示內存的使用信息
[root@SF1150 service]# free -t total used free shared buffers cachedMem: 32940112 30845024 2095088 0 4545340 11364324-/+ buffers/cache: 14935360 18004752Swap: 32764556 1944984 30819572Total: 65704668 32790008 32914660[root@SF1150 service]#說明:
實例3:周期性的查詢內存使用信息
[root@SF1150 service]# free -s 10total used free shared buffers cachedMem: 32940112 30844528 2095584 0 4545340 11364380-/+ buffers/cache: 14934808 18005304Swap: 32764556 1944984 30819572total used free shared buffers cachedMem: 32940112 30843932 2096180 0 4545340 11364388-/+ buffers/cache: 14934204 18005908Swap: 32764556 1944984 30819572說明:
每10s?執行一次命令
轉載于:https://www.cnblogs.com/winner-0715/p/8512265.html
總結
- 上一篇: 蚂蚁借呗还款方式有哪些
- 下一篇: 原始凭证怎么粘贴在记账凭证后面