簡體   English   中英

什么是Linux內存回收

[英]What is memory reclaim in linux

在閱讀一些內存管理相關文檔時,我對 Linux 內存管理概念非常陌生,我有一些基本的疑問,請澄清一下。

考慮以下是我的配置

vm.swappiness=10
vm.vfs_cache_pressure=140
vm.min_free_kbytes=2013265 

我的理解是如果空閑內存少於 vm.min_free_kbytes 操作系統將回收內存。

1- 內存回收是刪除不需要的文件還是從 RAM 復制到交換內存?

2- 如果它從 RAM 復制到交換內存,那么如果我不使用交換內存會發生什么?

3- swappiness 總是大於 vm.min_free_kbytes 嗎?

4-vm.vfs_cache_pressure 有什么意義?

謝謝你..!!

  1. 內存回收是通過將駐留在其中的數據扔到其他地方來創建更多空閑 RAM 頁面的機制。 它與文件無關。 當需要更多 RAM 時,數據將從 RAM 中刪除(丟棄,如果可以重新獲取)或復制到交換文件(因此數據可重新獲取)。

  2. 如果沒有交換文件,但應該將一些數據保存到(不存在的)交換區域,則會發生內存不足錯誤。 通常,這會通知嘗試獲取內存的進程(通過 alloc() 和類似方法)- alloc() 失敗並返回 NULL。 進程可以選擇做什么,甚至崩潰。 如果內核本身需要內存(通常很少見),則會發生 PANIC 並且系統完全鎖定。

  3. swappiness 是內核使用交換(即使不是嚴格需要的)的百分比,以便為內存請求准備足夠的 ram。 簡單地說,100% 的 swappiness 意味着內核總是嘗試交換,swappiness 為 0 意味着內核嘗試不進行交換(但是有一些特殊的值)。 min_free_kbytes 表示實際千字節,它不是百分比,它是為了讓內核正常工作而應始終空閑的最小量。 即使開始內存回收也可能需要更多的內存來完成這項工作:如果要獲得一些內存,您只需要一點內存但沒有它,那將是災難性的! :-)

  4. vfs_cache_pressure 又是一個百分比。 它表示內核試圖擺脫用於文件系統(vfs=虛擬文件系統)的(內存)緩存的程度。 文件系統的緩存非常適合丟棄,因為它使信息易於從磁盤讀取。 不幸的是,如果計算機需要頻繁使用文件系統,它必須讀取、再讀取、再讀取始終相同的數據。 緩存是一個很大的性能提升。 當然,如果系統只做很少的磁盤 I/O,那么當內存不足時,這個緩存是最好的選擇。

所有這些都在這里簡要解釋: https ://www.kernel.org/doc/Documentation/sysctl/vm.txt

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM