物理內存和虛擬內存swap(交換空間)詳解


首先要知道直接從物理內存讀寫數據比硬盤讀寫數據要快的多,但是內存是有限的,所以就引出了物理內存和虛擬內存,物理內存是系統硬件提供的內存,是真正的內存,虛擬內存是為了滿足物理內存不足時而提出的策略,他是利用磁盤空間虛擬出的邏輯內存,用作虛擬內存的磁盤空間被稱為交換空間(swap space)

作為物理內存的擴展,linux會在物理內存不足時使用交換空間,內核會將暫時不用的內存快信息寫到交換空間,這樣物理內存就得到了釋放,當需要 用到原始內容時重新從交換空間讀入物理內存

linux操作系統中當應用程序需要讀取文件中的數據時,操作系統會先分配一些內存將數據從磁盤讀入到內存中,然后再將數據分發給應用程序;當需要往文件中寫入數據時操作系統會分配內存接收用戶數據,然后再將數據寫入到磁盤中; 如果有大量數據需要讀寫 到磁盤時,系統的讀寫性能就會降低非常耗時間和資源,這種情況下就引入了buffers和cached機制

buffer和cached都是內存操作,用來保存內存曾經打開的文件和文件屬性信息,所以當系統需要讀取文件時會先從buffer和cache內存區查找,如果找到直接讀取發給應用程序,如果沒有找到才從磁盤中找,通過緩存大大提高了操作系統的性能,但是buffer和cache緩存的內容是不同的,buffer用來緩存塊設備的只記錄了文件系統的元數據以及pages,而cached用來給文件做緩沖;通俗說buffer存得是文件內容、屬性和權限,cached直接用來記憶我們打開過的文件和程序

 

釋放虛擬內存命令:

一般系統不會自動釋放內存

/proc/sys/vm/drop_caches   默認是0 表示不釋放緩存   3 代表釋放所有緩存

釋放swap前提保證內存剩余大於swap使用量,否則會宕機

查看當前swap分區掛載  swapop -s      /dev/sda1

關停分區   swapoff /dev/sda1

查看狀態  swapon -a

如果想掛到其他分區下面  可以  swapon  /dev/sda5

 

cat /proc/sys/vm/swappiness   60   表示物理內存用到60%時才會使用swap

swapiness=0 表示物理內存用完才會使用swap

swapiness=100 表示積極的使用swap分區,並且把內存上的數據及時搬運到swap空間

 

臨時修改swappiness參數

sysctl vm.swappiness=10

 

永久修改

vim /etc/sysctl.conf

sysctl -p

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM