記憶體是影響linux效能的主要因素之一,記憶體資源的充足與否直接影響應用系統的使用效能。
free命令:監控linux記憶體使用狀況。
由上圖可知,空閒記憶體是free+buffers+cached=155mb
一般來說如果空閒記憶體/物理記憶體》70%,記憶體效能優;如果小於20%,則效能差,需要新增記憶體。
如果si和so數值很大的話,可能是出現系統資源緊缺。
sat命令:可以對每個方面進行單獨的統計,但是增加了系統開銷,但是對系統的統計結果不會有很大影響。
r是檢視記憶體和交換分割槽的使用率的。
%commit:應用程式使用記憶體百分比。
kbcommit:應用程式使用記憶體的大小。
由上面2行就可以看出系統目前的記憶體使用情況。
kbmemfree:空閒物理記憶體的大小。
kbmemused:已經使用物理記憶體的大小。
%memused:已使用記憶體佔總記憶體大小的百分比。
#free -m
used free
-/+ buffers/cache: 2571840 1480216
- buffers/cache 反應的是被程式實實在在吃掉的記憶體
+ buffers/cache 反應的是可以挪用的記憶體總數
$ free
total used free sharedbuffers cached
mem: 255268 238332 16936 0 85540 126384
-/+ buffers/cache:26408 228860
swap: 265000 0 265000
mem:表示物理記憶體統計
-/+ buffers/cached:表示物理記憶體的快取統計
swap:表示硬碟上交換分割槽的使用情況,這裡我們不去關心。
系統的總物理記憶體:255268kb(256m),但系統當前真正可用的記憶體b並不是第一行free 標記的16936kb,它僅代表未被分配的記憶體。
我們使用total1、used1、free1、used2、free2 等名稱來代表上面統計資料的各值,1、2分別代表第一行和第二行的資料。
total1: 表示物理記憶體總量。
used1: 表示總計分配給快取(包含buffers 與cache )使用的數量,但其中可能部分快取並未實際使用。
free1: 未被分配的記憶體。
shared1: 共享記憶體,一般系統不會用到,這裡也不討論。
buffers1: 系統分配但未被使用的buffers 數量。
cached1: 系統分配但未被使用的cache數量。buffer 與cache 的區別見後面。
used2:實際使用的buffers 與cache 總量,也是實際使用的記憶體總量。
free2:未被使用的buffers 與cache 和未被分配的記憶體之和,這就是系統當前實際可用記憶體。
total1 = used1 + free1
total1 = used2 + free2
used1 = buffers1 + cached1 +used2
free2 = buffers1 + cached1 +free1
buffer 與cache 的區別
a buffer is something that has yet to be "written" to disk.
a cache is something that has been "read" from the disk and storedfor later use.
更詳細的解釋參考:difference between buffer andcache
cache 和 buffer的區別:
cache: 快取記憶體,是位於
cpu與主記憶體間的一種容量較小但速度很高的儲存器。由於cpu的速度遠高於主記憶體,cpu直接從記憶體中訪問資料要等待一定時間週期,cache中儲存著cpu剛用過或迴圈使用的一部分資料,當cpu再次使用該部分資料時可從cache中直接呼叫,這樣就減少了cpu的等待時間,提高了系統的效率。cache又分為一級cache(l1 cache)和二級cache(l2 cache),l1cache整合在cpu內部,l2 cache早期一般是焊在主機板上,現在也都整合在cpu內部,常見的容量有256kb或512kb l2cache。
buffer:緩衝區,乙個用於儲存速度不同步的
裝置或優先順序不同的
裝置之間傳輸資料的區域。通過緩衝區,可以使程序之間的相互等待變少,從而使從速度慢的裝置讀入資料時,速度快的裝置的操作程序不發生間斷。
free中的buffer和cache:(它們都是占用記憶體):
buffer: 作為
buffercache的記憶體,是塊裝置的讀寫緩衝區
cache: 作為
page cache的記憶體,檔案系統的cache
如果 cache的值很大,說明cache住的檔案數很多。如果頻繁訪問到的檔案都能被cache住,那麼磁碟的讀iobi會非常小。
buffer和cache的區別
快取(cached)是把讀取過的資料儲存起來,重新讀取時若命中(找到需要的資料)就不要去讀硬碟了,若沒有命中就讀硬碟。其中的資料會根據讀取頻率進行組織,把最頻繁讀取的內容放在最容易找到的位置,把不再讀的內容不斷往後排,直至從中刪除。
緩衝(buffers)是根據磁碟的讀寫設計的,把分散的寫操作集中進行,減少磁碟碎片和硬碟的反覆尋道,從而提高系統效能。linux有乙個守護程序定期清空緩衝內容(即寫如磁碟),也可以通過sync命令手動清空緩衝。舉個例子吧:我這裡有乙個ext2的u盤,我往裡面cp乙個3m的***,但u盤的燈沒有跳動,過了一會兒(或者手動輸入sync)u盤的燈就跳動起來了。解除安裝裝置時會清空緩衝,所以有些時候解除安裝乙個裝置時要等上幾秒鐘。
buffer是由各種程序分配的,被用在如輸入佇列等方面,乙個簡單的例子如某個程序要求有多個字段讀入,在所有欄位被讀入完整之前,程序把先前讀入的字段放在buffer中儲存。
cache經常被用在磁碟的i/o請求上,如果有多個程序都要訪問某個檔案,於是該檔案便被做成cache以方便下次被訪問,這樣可提供系統效能。
linux的記憶體管理,實際上跟windows的記憶體管理有很相像的地方,都是用虛擬記憶體這個的概念,說到這裡不得不罵ms,為什麼在很多時候還有很大的物理記憶體的時候,卻還是用到了pagefile.所以才經常要跟一幫人吵著說pagefile的大小,以及如何分配這個問題,在linux大家就不用再吵什麼swap大小的問題,我個人認為,swap設個512m已經足夠了,如果你問說512m的swap不夠用怎麼辦?只能說大哥你還是加記憶體吧,要不就檢查你的應用,是不是真的出現了memoryleak.
在linux下檢視記憶體我們一般用command free
[root@nonamelinux ~]# free
total used free shared buffers cached
mem: 386024 377116
8908021280 155468
-/+buffers/cache: 200368185656=8908+21280+155468
**:
Linux 記憶體 效能調優
記憶體是影響linux效能的主要因素之一,記憶體資源的充足與否直接影響應用系統的使用效能。free命令 監控linux記憶體使用狀況。由上圖可知,空閒記憶體是free buffers cached 155mb 一般來說如果空閒記憶體 物理記憶體 70 記憶體效能優 如果小於20 則效能差,需要新增記...
Linux記憶體 效能調優
記憶體是影響linux效能的主要因素之一,記憶體資源的充足與否直接影響應用系統的使用效能。free命令 監控linux記憶體使用狀況。由上圖可知,空閒記憶體是free buffers cached 155mb 一般來說如果空閒記憶體 物理記憶體 70 記憶體效能優 如果小於20 則效能差,需要新增記...
效能調優(cpu IO JVM記憶體分析)
效能相關指標 系統負載代表單位時間內正在執行或等待的程序或執行緒數,代表了系統的繁忙程度,cpu利用率則代表單位時間內乙個執行緒或程序實時占用cpu的百分比。我們知道,乙個程序或者執行緒在執行時,未必都在實時的利用cpu的。比如,在cpu密集型的情況下,系統的負載未必會高,但cpu的利用率肯定會高,...