3.1 基本概念
1. memory的簡介
虛擬記憶體:是採用硬碟對物理記憶體進行擴充套件,所以對可用記憶體的增加是要相對在乙個有效範圍內的。核心會寫當前為使用記憶體塊的內容到硬碟上,到時這個部分記憶體被用於其它用途,當再一次需要原始內容時,此時再度回到記憶體中,這對於使用者來說是透明的。但是在磁碟上讀和寫都是很慢的(比物理記憶體慢千倍);而且這個速度不能通過軟體提高;用一部分硬碟空間作為虛擬記憶體(又叫交換空間(swap))主要作用是,當物理記憶體耗盡或不足時,把物理記憶體中暫時不用的資料拷貝到swap中,當使用時再讀入物理記憶體中,這樣可以在記憶體耗盡時提高系統效能。
2. 虛擬記憶體頁(virtual memory pages)
虛擬記憶體分為很多頁(pages),在x86架構中,每個虛擬頁為4kb,當核心寫記憶體中資料到磁碟或者讀磁碟中的資料到記憶體,都是一次寫記憶體到頁的過程(不理解???),
核心通常是在swap分割槽和檔案系統之間進行這樣的操作(???????????)
記憶體分頁:
cpu是通過定址方式來訪問記憶體的,32位cpu的定址寬度是0-ffffffff,計算後是4g,所以說32位的計算機最大支援4g的記憶體
在實際應用中,碰到這樣的問題,應用程式需要使用大於4g的記憶體,但系統最大只有4g記憶體;為了解決此類問題,現代cpu引入了mmu(memory management unit)記憶體管理單元;mmu的核心思想就是用虛擬位址代替實體地址,就虛擬記憶體(swap),當物理記憶體不夠時把暫時不用的資料放到虛擬記憶體中,mmu負責將虛擬位址對映到實體地址
記憶體分頁(paging)就是是在使用mmu的基礎上,提出的一種有效記憶體管理機制,它將虛擬位址和實體地址按固定大小切割成頁和頁幀,保證頁和頁幀大小相等。實際上記憶體頁就是一單位的記憶體資料,頁是記憶體資料的單位。
3. 記憶體頁表(page table)
就是對映虛擬記憶體頁到物理記憶體頁的,當把資料從物理記憶體寫到虛擬記憶體中時會把二者的位址對映關係寫到page table中,需要此資料時從page table去查詢位址,然後在把資料拷貝回物理記憶體
4. kernel memory paging
記憶體分頁是指核心會定期將記憶體中的資料同步到硬碟,這個過程就是 memory paging
5. page frame reclaim algorithm(pfra) 頁框**演算法
pfra 就是os核心用來**並釋放記憶體空間的演算法,pfra根據記憶體頁的型別來決定是否**或怎樣**記憶體空間
6.kswapd
kswapd 程序負責確保記憶體空間總是在被釋放中,它監控核心中的 pages_high和pages_low閥值,如果空閒記憶體的數值低於pages_low ,則kswapd程序會啟動掃瞄並嘗試釋放32個free pages,並一直重複這個操作,直到空閒記憶體的數值高於pages_high
ps -ef | grep kswapd
7. 髒頁
髒頁是linux核心中的概念,因為硬碟的讀寫速度比物理記憶體的讀寫速度慢千倍,系統把讀寫比較頻繁的資料先讀到記憶體中,以提高讀寫速度,這就叫快取記憶體;linux是以頁
作為快取記憶體的基本單位;如果程序修改了快取記憶體中的資料,則該頁就是髒頁,核心要在合適的時間把髒頁的資料寫到磁碟中,與磁碟中的資料進行同步。
實現上述清理髒頁,把快取記憶體中的資料和磁碟的資料同步的程序就是 pdflush
ps -ef | grep pdflush
一般記憶體中存在10%的髒頁是,會啟動pdflush程序,把髒頁寫到磁碟的檔案系統(檔案系統就是硬碟),這個10%的值可以進行設定
8. 記憶體監控總結
(1) 較少的空閒記憶體(free 比較少)是件好事,意味著快取的使用更有效率(free小,cache比較大說明系統執行比較好)
(2) 如果swap不斷的增加,讀寫頻繁則說明記憶體不足,需要公升級了。(記憶體空閒低於page_low時要釋放記憶體空間,把資料寫到swap;需要這些資料時要把資料寫回記憶體)
Linux系統效能之記憶體(memory)
在安裝linux系統的時候,通常會選擇這麼個分割槽,這個交換分割槽 swap space 是用來幹啥的呢?交換分割槽就是使用硬碟的一部分作為記憶體ram的擴充套件。核心會將當前不使用記憶體資料寫到硬碟的這部分,騰出記憶體的這部分空間用以其他的使用。當需要使用這部分資料的時候,重新再讀回到記憶體。讀寫...
Linux 效能監測 Memory
這裡的講到的 記憶體 包括物理記憶體和虛擬記憶體,虛擬記憶體 virtual memory 把計算機的記憶體空間擴充套件到硬碟,物理記憶體 ram 和硬碟的一部分空間 swap 組合在一起作為虛擬記憶體為計算機提供了乙個連貫的虛擬記憶體空間,好處是我們擁有的記憶體 變多了 可以執行更多 更大的程式,...
Linux 效能監測 Memory
這裡的講到的 記憶體 包括物理記憶體和虛擬記憶體,虛擬記憶體 virtual memory 把計算機的記憶體空間擴充套件到硬碟,物理記憶體 ram 和硬碟的一部分空間 swap 組合在一起作為虛擬記憶體為計算機提供了乙個連貫的虛擬記憶體空間,好處是我們擁有的記憶體 變多了 可以執行更多 更大的程式,...