1. 程式人生 > >linux 內存介紹

linux 內存介紹

nbsp trie 正在 方便 例子 三種 機器 2個 交換

linux用free -m 查看linux內存使用情況
具體參數如下:
Mem:內存的使用情況總覽表。
totel:機器總的物理內存 單位為:M
used:用掉的內存。
free:空閑的物理內存。
物理內存(totel)=系統看到的用掉的內存(used)+系統看到空閑的內存(free)
比較難以理解的是buffers和cached
兩者都是RAM中的數據,簡單來說,buffer是即將要被寫入磁盤的,而cache是被從磁盤中讀出來的。
buffer是由各種進程分配的,被用在如輸入隊列等方面。一個簡單的例子如某個進程要求有多個字段讀入,在所有字段被讀入完整之前,進程把先前讀入的字段放在buffer中保存。

cache經常被用在磁盤的I/O請求上,如果有多個進程都要訪問某個文件,於是該文件便被做成cache以方便下次被訪問,這樣可提高系統性能。
Cache和Buffer的相同點:都是2個層面之間的中間層,都是內存。
Cache和Buffer的不同點:Cache解決的是時間問題,Buffer解決的是空間問題。

所以前真是使用到的內存是:used – buffers – cached
空閑的內存是 free + buffers + cached

在Linux系統中,為了提高文件系統性能,內核利用一部分物理內存分配出緩沖區,用於緩存系統操作和數據文件,當內核收到讀寫的請求時,內核先去緩存區找是否有請求的數據,有就直接返回,如果沒有則通過驅動程序直接操作磁盤。

緩存機制優點:減少系統調用次數,降低CPU上下文切換和磁盤訪問頻率。
CPU上下文切換:CPU給每個進程一定的服務時間,當時間片用完後,內核從正在運行的進程中收回處理器,同時把進程當前運行狀態保存下來,然後加載下一個任務,這個過程叫做上下文切換。實質上就是被終止運行進程與待運行進程的進程切換。
Swap用途:Swap意思是交換分區,通常我們說的虛擬內存,是從硬盤中劃分出的一個分區。當物理內存不夠用的時候,內核就會釋放緩存區(buffers/cache)裏一些長時間不用的程序,然後將這些程序臨時放到Swap中,也就是說如果物理內存和緩存區內存不夠用的時候,才會用到Swap。
swap清理:swapoff -a && swapon -a
註意:這樣清理有個前提條件,空閑的內存必須比已經使用的swap空間大
釋放緩存區內存的方法
1)清理pagecache(頁面緩存)
[[email protected] ~]# echo 1 > /proc/sys/vm/drop_caches 或者 # sysctl -w vm.drop_caches=1
2)清理dentries(目錄緩存)和inodes
[[email protected] ~]# echo 2 > /proc/sys/vm/drop_caches 或者 # sysctl -w vm.drop_caches=2
3)清理pagecache、dentries和inodes
[[email protected] ~]# echo 3 > /proc/sys/vm/drop_caches 或者 # sysctl -w vm.drop_caches=3
上面三種方式都是臨時釋放緩存的方法,要想永久釋放緩存,需要在/etc/sysctl.conf文件中配置:vm.drop_caches=1/2/3,然後sysctl -p生效即可!
另外,可以使用sync命令來清理文件系統緩存,還會清理僵屍(zombie)對象和它們占用的內存
[[email protected] ~]# sync

linux 內存介紹