Linux記憶體 效能調優

2021-07-03 05:56:19 字數 3952 閱讀 7202

記憶體是影響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的利用率肯定會高,...