linux 內存之Mem和Swap


Linux 內存概念

1.Linux mem/swap/buffers/cached區別

free命令相對於top,提供了更簡潔的查看系統內存使用情況:

# free -m
# 以M為單位顯示內存使用情況

mem:表示物理內存統計

buff/cache:表示物理內存的緩存統計

swap:表示硬盤上交換分區的使用情況

系統當前真正可用的內存並不是第一行 free 標記的,僅代表未被分配的內存。

2.buff/cache

buff/cache主要干啥來的?

Linux具有先進的緩存機制,會針對dentry(用於VFS-虛擬文件系統,加速文件路徑名到inode的轉換)、buffer cache(針對磁盤塊的讀,寫)和 page cache(針對文件 inode 的讀寫)進行緩存操作來提高讀寫效率。但是在進行了大量文件操作之后,緩存會把內存資源基本用完,雖然文件讀取效率提高了,但是物理內存會被逐漸吃完。

原來是因為系統進行了頻繁的文件讀寫操作,但是為什么操作系統不會主動回收呢,原來是因為drop_caches 的默認參數設置的就是不釋放。

drop_caches的值可以是 0-3 之間的數字,代表不同的含義:

  0:不釋放(系統默認值)

  1:釋放頁緩存

  2:釋放dentries和inode

  3:釋放所有緩存

# 修改: echo 1 > /proc/sys/vm/drop_caches

3.Swap

當Linux的物理內存快要被耗盡時,系統會把一些進程占用的內存轉移到 swap 區,當物理內存被釋放一部分時,swap 區的一些內存占用又慢慢回到 mem 區,但是 mem 區卻不再是之前的滿負荷狀態,而是有一部分 free 的內存!

【總結】

  1)當物理內存快被耗盡時,系統並沒有崩潰,而是拿 swap 做臨時內存,當兩者都耗盡,系統 OutofMemory

  2)物理內存達到峰值,系統中一些不常用的進程內存占用被提到 swap 區

  3)當 Men 區的資源進行釋放時,被挪到 swap 的內存並不會全部回來,隨着系統或者程序的喚醒才會慢慢回到 men 區

  4)swap 是內存不夠時,磁盤虛擬出來的內存,磁盤主要是 I/O 級別的操作,並不是系統內核級別的操作,處理速度跟 mem 區不是一個等級

轉載 & 查閱,原文:https://www.cnblogs.com/lili-xia/p/11506188.html


免責聲明!

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



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