Linux記憶體 效能調優

2022-09-02 11:45:09 字數 3882 閱讀 5120

記憶體是影響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.

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的利用率肯定會高,...