Linux作業系統記憶體淺析

船頭尺發表於2021-09-09

說到,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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章