Linux作業系統記憶體淺析
說到,linux作業系統記憶體我們並不陌生,應用正常執行時候我們需要關注,應用出core或者記憶體溢位時候更是我們需要關注,那麼Linux中的記憶體我們道理了解多少,下面我抽個時間淺析下:
一、記憶體的組成成員
1、作業系統檢視記憶體使用
我們先執行free -m命令檢視記憶體狀態,會出現如下結果,為了方便說明,稍微加了一些名字作註釋,
如:App_Used、App_Used 。
Total(記憶體總使用) = Used + free + shared
$free -m
total used free shared buffers cached
Mem: 258355 190110(App_Used) 68245 0 182 176601
-/+ buffers/cache: 13326(App_Used) 245029
Swap: 2047 0 2047
2、組成圖示
Shared:多個程式共享的記憶體總額。用於不同的應用程式共享記憶體,一般很少會有應用程式去申請,所以使用量都會很少,所以本文就不過多講解。
二、關於buffers和cached
1、buffers 是塊裝置讀寫快取區。
儲存速度不同步的裝置或優先順序不同的裝置之間傳輸資料的區域。透過緩衝區,可以使程式之間的相互等待變少,從而使從速度慢的裝置讀入資料時,速度快的裝置的操作程式不發生間斷。
2、cached 快取儲存器
cached是位於CPU與主記憶體間的一種容量較小但速度很高的儲存器,因為 CPU的速度遠遠高於主存,為了方便CPU能迴圈讀取之前使用的資料檔案,將檔案快取在cached中,方便再次呼叫。
cache 的值很大,說明cache住的檔案數很多。如果頻繁訪問到的檔案都能被cache住,那麼磁碟的讀IO 必會非常小。
三、關於Used
Used 是包括系統和應用總體使用的記憶體容量。
Used = App_Used + cached + buffers
什麼場景下,我們需要關注什麼樣的引數?
當我們需要關注整體記憶體的使用量,關注Used數值,可以直觀的看出內容當前系統和應用的整體使用量。
四、關注App_Used數值
App_Used是應用程式所佔用的記憶體使用量,因為cached、buffers是作業系統來調節的,Used使用越高不能說明當前應用程式就會有問題,所以我們如果要直觀的關注應用程式對記憶體的使用,就應該關注App_used這個值。
如下情況:容易出現的,系統Used記憶體使用佔滿了,但是實際應用程式開闢的記憶體使用量卻不高。
五、關於cached補充
續上,那麼cached這個是不是我們就不用太關心了呢?當然不是。
cache重要的系統使用是在cpu使用檔案時快取外,另外一個重要的地方就是用於把記憶體劃分成檔案塊進行瓷盤掛載。tmpfs所使用的量,也會計入記憶體的cached中。
如在一些索引伺服器上,使用這種方式,讓索引資料檔案存放在記憶體中,加快應用的讀取資料速度。
在/etc/mtab下配置來實現記憶體裝置掛載,
tmpfs /index tmpfs rw,size=200G 0 0
所以,我們在關注中應用的伺服器應用記憶體使用量的時候,需要關注的有不僅有App_Used指標,還有tmpfs的使用量。
[歡迎大家繼續關注我在imooc的文章 ,]
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/3016/viewspace-2798030/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 淺談作業系統對記憶體的管理作業系統記憶體
- 淺析 Linux 的共享記憶體與 tmpfs 檔案系統Linux記憶體
- 作業系統-記憶體管理作業系統記憶體
- 作業系統——記憶體管理作業系統記憶體
- Linux 記憶體池原始碼淺析Linux記憶體原始碼
- 作業系統記憶體管理概述作業系統記憶體
- 作業系統記憶體管理-原理作業系統記憶體
- 【作業系統】記憶體管理概述作業系統記憶體
- linux查詢作業系統資訊(CPU、記憶體、硬碟)Linux作業系統記憶體硬碟
- Linux作業系統:快速記憶體操作技術(轉)Linux作業系統記憶體
- 作業系統的虛擬記憶體作業系統記憶體
- 作業系統-記憶體、檔案管理作業系統記憶體
- iOS記憶體管理淺析iOS記憶體
- MySQL記憶體管理,記憶體分配器和作業系統MySql記憶體作業系統
- 作業系統——記憶體管理學習筆記作業系統記憶體筆記
- 探索Linux 作業系統記憶體模型和管理-1(轉)Linux作業系統記憶體模型
- 探索Linux 作業系統記憶體模型和管理8(轉)Linux作業系統記憶體模型
- 淺析Linux Kernel[5.11.0]記憶體管理(一)Linux記憶體
- HP-UX作業系統的記憶體UX作業系統記憶體
- windows作業系統支援的最大記憶體Windows作業系統記憶體
- 【Java】 記憶體分配全面淺析Java記憶體
- Java 記憶體模型 JMM 淺析Java記憶體模型
- 淺析JVM記憶體分割槽JVM記憶體
- 計算機作業系統——虛擬記憶體與實體記憶體計算機作業系統記憶體
- Linux作業系統中記憶體buffer和cache的區別Linux作業系統記憶體
- linux作業系統修改共享記憶體的簡單方法(轉)Linux作業系統記憶體
- Linux作業系統記憶體管理的原始碼實現(轉)Linux作業系統記憶體原始碼
- 作業系統的記憶體管理你知道嗎作業系統記憶體
- 淺析java記憶體管理機制Java記憶體
- Java中字串記憶體位置淺析Java字串記憶體
- 作業系統(八) -- 記憶體的分段與分頁作業系統記憶體
- 作業系統——記憶體連續分配管理方式作業系統記憶體
- Android 作業系統的記憶體回收機制Android作業系統記憶體
- WindowsXP作業系統記憶體最佳化指南(轉)Windows作業系統記憶體
- Netty 中的記憶體分配淺析Netty記憶體
- 華納雲:Linux作業系統的記憶體管理方法是什麼Linux作業系統記憶體
- Linux作業系統中記憶體buffer和cache的區別(轉載)Linux作業系統記憶體
- Linux系統——架構淺析Linux架構