linux 优化内存分配,Linux性能优化 第三章 性能工具:系统内存
3.1內(nèi)存性能統(tǒng)計信息
3.1.1內(nèi)存子系統(tǒng)和性能
和CPU相比,內(nèi)存的讀寫速度都大大落后于CPU。為了彌補這個差距,通常CPU會采用高速緩存的機(jī)制(高cache)。
3.1.2內(nèi)存子系統(tǒng)(虛擬存儲器)
在物理內(nèi)存尋址時,Linux將其分成塊或者內(nèi)存“頁”。內(nèi)存頁面過小,會造成管理內(nèi)存時產(chǎn)生大的花銷;內(nèi)存頁面大時,則容易造成內(nèi)存的浪費。
l交換(物理內(nèi)存不足)
內(nèi)存的大小是固定的,當(dāng)內(nèi)存不夠用時,內(nèi)核會使用硬盤作為臨時存儲器,這個硬盤空間稱為交換分區(qū)(swap space)。
交換分區(qū)確實能夠讓大內(nèi)存的程序運行,但是卻非常慢。如果系統(tǒng)性能不佳,有可能是系統(tǒng)使用了較多的swap。
l緩沖區(qū)(buffer)和緩存(cache)(物理內(nèi)存太多)
如果你的內(nèi)存很多,系統(tǒng)不會浪費不用的。系統(tǒng)會把多出來的內(nèi)存用來做緩沖或者緩存使用,這樣能大大加快程序的讀寫。
應(yīng)用程序?qū)懭氲酱疟P的速度是很慢的,Linux為了能夠讓程序能夠馬上執(zhí)行,會把文件數(shù)據(jù)保存到緩沖區(qū),然后在某個時間,再把緩沖區(qū)的數(shù)據(jù)寫入到磁盤。
緩存和緩沖正好倒過來,Linux會把程序用過的數(shù)據(jù)放在內(nèi)存中,這樣下次使用的時候就不用去到磁盤讀取了。
緩沖和緩存都是為了提高系統(tǒng)性能,提高程序的運行速度。雖然看起來系統(tǒng)free(空余)的內(nèi)存很少,但這是個好事。
l活躍和非活躍內(nèi)存
活躍內(nèi)存是指當(dāng)前進(jìn)程使用的內(nèi)存,不活躍的內(nèi)存是已經(jīng)被分配了,但暫時還沒有使用的內(nèi)存。
3.2Linux性能工具:CPU與內(nèi)存
3.2.1 vmstat
vmstat統(tǒng)計信息說明swap當(dāng)前交換到硬盤的內(nèi)存總量
free未被系統(tǒng)使用的物理內(nèi)存總量
buff系統(tǒng)共緩沖區(qū)的大小
cache緩存區(qū)的大小
si上次采樣中,從硬盤進(jìn)來的內(nèi)存交換速率
so上次采樣中,到硬盤去的內(nèi)存交換速率
vmstat的輸出,默認(rèn)是平均模式。
vmstat –a可以查看活躍和非活躍的內(nèi)存
vmstat 1 5查看過去五秒的采樣數(shù)據(jù),可以看出沒有內(nèi)存數(shù)據(jù)的交換。
vmstat –s可以查看系統(tǒng)的統(tǒng)計信息
3.2.2 top
具體用法可以參考CPU章節(jié)的top的解析。
3.2.3 free
free –m的輸出
free內(nèi)存部分統(tǒng)計信息說明total物理內(nèi)存與交換空間的總量
used使用的物理內(nèi)存和交換分區(qū)的容量
free未使用的物理內(nèi)存和交換分區(qū)的容量
-/+ ? buffers/cache:對于used來說,把buff和cache當(dāng)成已使用的內(nèi)存,顯示的是內(nèi)存使用的總和;對于free來說,把buff和cache當(dāng)作空閑內(nèi)存統(tǒng)計的內(nèi)存總和。
3.2.4 slabtop
slabtop實時顯示內(nèi)核是如何分配其各種緩存的,以及這些緩存的被占用情況。在內(nèi)部,內(nèi)核有一系列的緩存,他們由一個或者多個分片(salb)構(gòu)成。
默認(rèn)情況下slab會每3秒更新一次數(shù)據(jù),可以看出多數(shù)的分片都是活躍的。
3.2.5 sar
sar給出的Linux內(nèi)存子系統(tǒng)的信息相當(dāng)完整,除了能看到絕對值,還能提供一些重要數(shù)值的變化率。此外,sar還能統(tǒng)計CPU和磁盤I/O的統(tǒng)計數(shù)據(jù)。
sar –r 1 5過去5秒的內(nèi)存信息[root@localhost ? ~]# sar -r 1 5
Linux ? 2.6.18-308.el5 (localhost) ?? 2018年01月15日
18時40分40秒kbmemfree kbmemused? %memused kbbuffers? kbcached kbswpfree kbswpused? %swpused? ? kbswpcad
18時40分41秒102816?? 3940916???? 97.46??? ? 801872?? 1369084?? 4023580??? ? 170716????? 4.07???? 50584
18時40分42秒102816?? 3940916???? 97.46??? ? 801872?? 1369084?? 4023580??? ? 170716????? 4.07???? 50584
18時40分43秒102816?? 3940916???? 97.46??? ? 801872?? 1369084?? 4023580??? ? 170716????? 4.07???? 50584
18時40分44秒102816?? 3940916???? 97.46??? ? 801872?? 1369084?? 4023580??? ? 170716????? 4.07???? 50584
18時40分45秒102816?? 3940916???? 97.46??? ? 801872?? 1369084?? 4023580??? ? 170716????? 4.07???? 50584
Average:?????? 102816?? 3940916???? ? 97.46??? 801872?? 1369084?? ? 4023580??? 170716????? 4.07???? ? 50584
sar內(nèi)存統(tǒng)計信息說明kbmemfree當(dāng)前空閑或未被使用的內(nèi)存總量
%memused被使用的物理內(nèi)存總量所占的百分比
%swpused被使用的交換分區(qū)的百分比
kbswapcad該項內(nèi)存包括了交換到磁盤和已存在內(nèi)存中的
3.2.6 /proc/meminfo
Linux內(nèi)核提供用戶可讀文本文件/proc/meminfo來顯示當(dāng)前系統(tǒng)范圍的內(nèi)存性能統(tǒng)計信息,里面的信息非常全面。如果需要定期更新的數(shù)據(jù),需要自行編寫腳本實現(xiàn)。
meminfo統(tǒng)計信息部分說明
MemTotal系統(tǒng)物理內(nèi)存總量
SwapCached在交換分區(qū)和物理內(nèi)存中都存在的內(nèi)存總量
Active當(dāng)前系統(tǒng)中處于活躍狀態(tài)的內(nèi)存
HightTotal高端內(nèi)存容量
Dirty等待寫入磁盤的內(nèi)存
Writeback當(dāng)前被寫入磁盤的內(nèi)存
Slab內(nèi)核分片內(nèi)存的總量
Committed_AS所需內(nèi)存容量,在當(dāng)前工作負(fù)載下,這個容量幾乎是不會耗盡的。通常情況下,內(nèi)核會分配更多的內(nèi)存,預(yù)期應(yīng)用程序會超分配。如果所有的應(yīng)用程序都使用自己被分配的內(nèi)存,這個就是你需要的物理內(nèi)存的容量。
PageTables為內(nèi)核頁表保留的內(nèi)存容量
總結(jié)
以上是生活随笔為你收集整理的linux 优化内存分配,Linux性能优化 第三章 性能工具:系统内存的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 原神妮露抽取建议
- 下一篇: 毕业典礼上称学校为“牛马一中”被校长赶下