linux 优化内存分配,Linux性能优化 第三章 性能工具:系统内存
3.1內存性能統計信息
3.1.1內存子系統和性能
和CPU相比,內存的讀寫速度都大大落后于CPU。為了彌補這個差距,通常CPU會采用高速緩存的機制(高cache)。
3.1.2內存子系統(虛擬存儲器)
在物理內存尋址時,Linux將其分成塊或者內存“頁”。內存頁面過小,會造成管理內存時產生大的花銷;內存頁面大時,則容易造成內存的浪費。
l交換(物理內存不足)
內存的大小是固定的,當內存不夠用時,內核會使用硬盤作為臨時存儲器,這個硬盤空間稱為交換分區(swap space)。
交換分區確實能夠讓大內存的程序運行,但是卻非常慢。如果系統性能不佳,有可能是系統使用了較多的swap。
l緩沖區(buffer)和緩存(cache)(物理內存太多)
如果你的內存很多,系統不會浪費不用的。系統會把多出來的內存用來做緩沖或者緩存使用,這樣能大大加快程序的讀寫。
應用程序寫入到磁盤的速度是很慢的,Linux為了能夠讓程序能夠馬上執行,會把文件數據保存到緩沖區,然后在某個時間,再把緩沖區的數據寫入到磁盤。
緩存和緩沖正好倒過來,Linux會把程序用過的數據放在內存中,這樣下次使用的時候就不用去到磁盤讀取了。
緩沖和緩存都是為了提高系統性能,提高程序的運行速度。雖然看起來系統free(空余)的內存很少,但這是個好事。
l活躍和非活躍內存
活躍內存是指當前進程使用的內存,不活躍的內存是已經被分配了,但暫時還沒有使用的內存。
3.2Linux性能工具:CPU與內存
3.2.1 vmstat
vmstat統計信息說明swap當前交換到硬盤的內存總量
free未被系統使用的物理內存總量
buff系統共緩沖區的大小
cache緩存區的大小
si上次采樣中,從硬盤進來的內存交換速率
so上次采樣中,到硬盤去的內存交換速率
vmstat的輸出,默認是平均模式。
vmstat –a可以查看活躍和非活躍的內存
vmstat 1 5查看過去五秒的采樣數據,可以看出沒有內存數據的交換。
vmstat –s可以查看系統的統計信息
3.2.2 top
具體用法可以參考CPU章節的top的解析。
3.2.3 free
free –m的輸出
free內存部分統計信息說明total物理內存與交換空間的總量
used使用的物理內存和交換分區的容量
free未使用的物理內存和交換分區的容量
-/+ ? buffers/cache:對于used來說,把buff和cache當成已使用的內存,顯示的是內存使用的總和;對于free來說,把buff和cache當作空閑內存統計的內存總和。
3.2.4 slabtop
slabtop實時顯示內核是如何分配其各種緩存的,以及這些緩存的被占用情況。在內部,內核有一系列的緩存,他們由一個或者多個分片(salb)構成。
默認情況下slab會每3秒更新一次數據,可以看出多數的分片都是活躍的。
3.2.5 sar
sar給出的Linux內存子系統的信息相當完整,除了能看到絕對值,還能提供一些重要數值的變化率。此外,sar還能統計CPU和磁盤I/O的統計數據。
sar –r 1 5過去5秒的內存信息[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內存統計信息說明kbmemfree當前空閑或未被使用的內存總量
%memused被使用的物理內存總量所占的百分比
%swpused被使用的交換分區的百分比
kbswapcad該項內存包括了交換到磁盤和已存在內存中的
3.2.6 /proc/meminfo
Linux內核提供用戶可讀文本文件/proc/meminfo來顯示當前系統范圍的內存性能統計信息,里面的信息非常全面。如果需要定期更新的數據,需要自行編寫腳本實現。
meminfo統計信息部分說明
MemTotal系統物理內存總量
SwapCached在交換分區和物理內存中都存在的內存總量
Active當前系統中處于活躍狀態的內存
HightTotal高端內存容量
Dirty等待寫入磁盤的內存
Writeback當前被寫入磁盤的內存
Slab內核分片內存的總量
Committed_AS所需內存容量,在當前工作負載下,這個容量幾乎是不會耗盡的。通常情況下,內核會分配更多的內存,預期應用程序會超分配。如果所有的應用程序都使用自己被分配的內存,這個就是你需要的物理內存的容量。
PageTables為內核頁表保留的內存容量
總結
以上是生活随笔為你收集整理的linux 优化内存分配,Linux性能优化 第三章 性能工具:系统内存的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 原神妮露抽取建议
- 下一篇: linux 信号量锁 内核,Linux内