修改Linux交換空間的使用率
簡單地說這個引數定義了系統對swap的使用傾向,預設值為60,值越大表示越傾向於使用swap。
可以設為0,這樣做並不會禁止對swap的使用,只是最大限度地降低了使用swap的可能性。
通過sysctl -q vm.swappiness
可以檢視引數的當前設定。
修改引數的方法是修改vi /etc/sysctl.conf
檔案,加入vm.swappiness=xxx
,並重起系統。
這個操作相當於是修改虛擬系統中的/proc/sys/vm/swappiness檔案,將值改為XXX數值。
如果不想重起,可以通過sysctl -p
動態載入/etc/sysctl.conf
檔案,但建議這樣做之前先清空swap。
建議設定:vm.swappiness = 10
swap清理程式碼程式碼如下:
swapoff -a && swapon -a
注意:這樣清理有個前提條件,空閒的記憶體必須比已經使用的swap空間大
記憶體使用到多少開始使用swap?
vm.swappiness 這個核心引數控制
/proc/sys/vm/swappiness
這個交換引數控制核心從實體記憶體移出程序,移到交換空間。該引數從0到100,當該引數=0,表示只要有可能就盡力避免交換程序移出實體記憶體;該引數=100,這告訴核心瘋狂的將資料移出實體記憶體移到swap快取中。
PS:設定vm.swappiness=0 後並不代表禁用swap分割槽,只是告訴核心,能少用到swap分割槽就儘量少用到,設定vm.swappiness=100的話,則表示儘量使用swap分割槽,預設的值是60
調整記憶體引數,當記憶體使用率不足10%(開始是預設值60)時在使用swap,儘量避免使用swap,減少喚醒軟中斷程序,從而降低ksoftirqd程序對cpu的佔用。
關於linux記憶體分配機制
在linux的記憶體分配機制中,優先使用實體記憶體,當實體記憶體還有空閒時(還夠用),不會釋放其佔用記憶體,就算佔用記憶體的程式已經被關閉了,該程式所佔用的記憶體用來做快取使用,對於開啟過的程式、或是讀取剛存取過得資料會比較快。