Linux操作系統內存淺析
說到,linux操作系統內存我們並不陌生,應用正常運行時候我們需要關注,應用出core或者內存溢出時候更是我們需要關注,那麼Linux中的內存我們道理了解多少,下面我抽個時間淺析下:
一、內存的組成成員
1、操作系統查看內存使用
我們先執行free -m命令查看內存狀態,會出現如下結果,為了方便說明,稍微加了一些名字作注釋,
如:App_Used、App_Used 。
Total(內存總使用) = Used + free + shared
$free -m
total used free shared buffers cached
Mem: {} {}(App_Used) {} 0 182 {}
-/+ buffers/cache: {}(App_Used) {}
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的使用量。
※學習java很難嗎?高效學習Java路線圖分享
※剛進公司的第一堂培訓——《程序猿的結構化思維》
※Java學習系列之不要學習代碼,要學會思考
※演算法是內功,程序員別冷落演算法!
※萌妹子告訴你php和 java如何選
TAG:java吧 |
※Linux操作系統篇
※PDF操作指南之linux操作系統
※Windows的Linux 子系統現已支持「複製/粘貼」操作
※Magic Leap One操作系統或叫Lumin
※Google決定用gLinux取代Goobuntu Linux操作系統
※網時:伺服器如何選擇Linux和Windows操作系統
※Google宣布其內部的Linux桌面操作系統將從Ubuntu轉到Debian
※致敬Linux系統
※快速搭建Linux操作系統和Oracle資料庫
※Linux系統內核管理哲學篇之Linux發展所依賴的5大支柱
※Google 發布其非 Linux 系操作系統 Fuchsia 說明書
※Chrome操作系統終端應用程序暗示其將支持linux
※Linux 系統啟動過程
※Linux操作系統已擁有自動化的Spectre/Meltdown檢查器
※淺談Linux系統MySQL安全配置
※Linux工程師學習資料,Linux中的文件系統樹
※Windows、macOS和Linux三大操作系統使用體驗比較
※Linux系統之Redis擴散病毒繼續分析
※基於Ubuntu+python搭建簡易人臉檢測系統
※操作系統安全哪家強?Linux超越Windows和macOS