在系統(tǒng)遇到各種IO瓶頸,內(nèi)存使用率高,cpu使用率高等問題時(shí),我們?nèi)绾蝸矶ㄎ诲e(cuò)誤?linux提供了很多命令來協(xié)助我們快速定位到錯(cuò)誤,free命令是Linux最常用的命令之一:它可以查看系統(tǒng)的內(nèi)存狀況,包括服務(wù)器的總內(nèi)存,已經(jīng)使用的內(nèi)存和剩下未被使用的內(nèi)存,以及緩沖區(qū)和緩存各自占用的內(nèi)存情況。
$ free -m
total used free shared buffers cached
Mem: 994 787 207 0 121 227
-/+ buffers/cache: 437 557
Swap: 0 0 0
要完全理解上面3行數(shù)據(jù),先搞明白buffer和cache是什么。
buffer:緩沖區(qū)
將數(shù)據(jù)緩沖下來,解決速度慢和快的交接問題;速度快的需要通過緩沖區(qū)將數(shù)據(jù)一點(diǎn)一點(diǎn)傳給速度慢的區(qū)域。例如:從內(nèi)存中將數(shù)據(jù)往硬盤中寫入,并不是直接寫入,而是緩沖到一定大小之后刷入硬盤中。
A buffer is something that has yet to be "written" to disk.
cache:緩存
實(shí)現(xiàn)數(shù)據(jù)的重復(fù)使用,速度慢的設(shè)備需要通過緩存將經(jīng)常要用到的數(shù)據(jù)緩存起來,緩存下來的數(shù)據(jù)可以提供高速的傳輸速度給速度快的設(shè)備。例如:將硬盤中的數(shù)據(jù)讀取出來放在內(nèi)存的緩存區(qū)中,這樣以后再次訪問同一個(gè)資源,速度會快很多。
A cache is something that has been "read" from the disk and stored for later use.
buffer是用于存放將要輸出到disk(塊設(shè)備)的數(shù)據(jù),而cache是存放從disk上讀出的數(shù)據(jù)。二者都是為提高IO性能而設(shè)計(jì)的。
理解了buffer和cache的作用后,那么free展示的信息就易懂了,現(xiàn)在開始分析free命令輸出的每一行代表的含義:
第一行:Mem
總共的內(nèi)存994(total) = 787(used)+207(free),used表示系統(tǒng)已經(jīng)被使用的內(nèi)存,它包括應(yīng)用程序使用的內(nèi)存,以及用于緩沖和緩存的內(nèi)存總和。
第二行:-/+ buffers/cache
-buffers/cache:437(used) = 787(used) - 121(buffers) - 227(cached),437表示除去緩沖和緩存消耗的內(nèi)存外,應(yīng)用程序?qū)嶋H消耗的內(nèi)存是437M。
+buffers/cache:557(free) = 207(free)+121(buffers)+cached(227),557表示系統(tǒng)可用的內(nèi)存有557M,因?yàn)槿绻龅絻?nèi)存告急的情況時(shí),buffer和cache所占的內(nèi)存還是可以用來給應(yīng)用程序使用。
第三行:Swap
看到很多文章直接說不解釋了,但這里我要解釋一下,Swap表示交換分區(qū),也就是我們通常所說的虛擬內(nèi)存。就可以把一部分磁盤空間當(dāng)做內(nèi)存使用,這部分空間叫做虛擬內(nèi)存,當(dāng)系統(tǒng)內(nèi)存不足時(shí),系統(tǒng)會把那些還駐留在內(nèi)存中但是當(dāng)前沒有運(yùn)行的程序暫時(shí)放到虛擬內(nèi)存中去
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。