linux的vm相關引數介紹
linux的vm相關引數介紹
1. 保證linux有足夠的實體記憶體,可以調整vm的如下引數
vm.min_free_kbytes=409600;//預設值是3797,保證實體記憶體有足夠空閒空間,防止突發性換頁
vm.vfs_cache_pressure=200;//預設是100,增大這個引數設定了虛擬記憶體回收directory和i-node緩衝的傾向,這個值越大。越易回收
vm.swappiness=40 //預設60,減少這個引數會使系統儘快通過swapout不使用的程式資源來釋放更多的實體記憶體
一般在rac的配置環境中配置這三個引數,可以防止換頁引起節點短暫無響應,導致節點重啟
2. 改善io系統的效能
overcommit_memory = 0
vm.overcommit_ratio = 10 //預設值是50,用於虛擬記憶體的實體記憶體的百分比
vm.dirty_ratio = 20 //預設值是40,為了保持穩定,持續的寫入,把這個值調整的小一些,經驗值是20
vm.dirty_background_ratio //預設數值是500,也就是5秒,如果系統要求穩定持續的寫,可以適當降低該值,把峰值的寫操作平均多次,也避免當機丟失更多的資料
vm.dirty_expire_centisecs //預設是3000,也就是30秒,如果系統寫操作壓力很大,可以適當減小該值,但也不要太小;建議設定為 1500
vm的相關引數在/proc/sys目錄下
相關命令
sysctl -p //修改vm引數後,執行這個命令可以立即生效
sysctl -a //檢視所有的vm引數
與磁碟IO子系統有關的
/proc/sys/vm/dirty_ratio
這個引數控制檔案系統的檔案系統寫緩衝區的大小,單位是百分比,表示系統記憶體的百分比,
表示當寫緩衝使用到系統記憶體多少的時候,開始向磁碟寫出資料。增大之會使用更多系統內
存用於磁碟寫緩衝,也可以極大提高系統的寫效能。但是,當你需要持續、恆定的寫入場合
時,應該降低其數值,一般啟動上預設是 10。下面是增大的方法:
echo '40' > /proc/sys/vm/dirty_ratio
/proc/sys/vm/dirty_background_ratio
這個引數控制檔案系統的pdflush程式,在何時重新整理磁碟。單位是百分比,表示系統記憶體的百
分比,意思是當寫緩衝使用到系統記憶體多少的時候,pdflush開始向磁碟寫出資料。增大之會
使用更多系統記憶體用於磁碟寫緩衝,也可以極大提高系統的寫效能。但是,當你需要持續、恆
定的寫入場合時,應該降低其數值,一般啟動上預設是 5。下面是增大的方法:
echo '20' > /proc/sys/vm/dirty_background_ratio
/proc/sys/vm/dirty_writeback_centisecs
這個引數控制核心的髒資料重新整理程式pdflush的執行間隔。單位是 1/100 秒。預設數值是500,
也就是 5 秒。如果你的系統是持續地寫入動作,那麼實際上還是降低這個數值比較好,這樣可
以把尖峰的寫操作削平成多次寫操作。設定方法如下:
echo "200" > /proc/sys/vm/dirty_writeback_centisecs
如果你的系統是短期地尖峰式的寫操作,並且寫入資料不大(幾十M/次)且記憶體有比較多富裕,那麼應該增大此數值:
echo "1000" > /proc/sys/vm/dirty_writeback_centisecs
/proc/sys/vm/dirty_expire_centisecs
這個引數宣告Linux核心寫緩衝區裡面的資料多“舊”了之後,pdflush程式就開始考慮寫到磁碟中去。
單位是 1/100秒。預設是 3000,也就是 30 秒的資料就算舊了,將會重新整理磁碟。對於特別過載的寫
操作來說,這個值適當縮小也是好的,但也不能縮小太多,因為縮小太多也會導致IO提高太快。建
議設定為 1500,也就是15秒算舊。
echo "1500" > /proc/sys/vm/dirty_expire_centisecs
當然,如果你的系統記憶體比較大,並且寫入模式是間歇式的,並且每次寫入的資料不大(比如幾十M),
那麼這個值還是大些的好。
與網路IO子系統有關的
/proc/sys/net/ipv4/tcp_retrans_collapse
這個引數控制TCP雙方Window協商出現錯誤的時候的一些重傳的行為。但是在老的2.6的核
(<2.6.18)裡頭,這個重傳會導致kernel oops,kernel panic,所以,如果出現有
tcp_retrans_*樣子的kernel panic,可以把這個引數給設定成0:
echo '0' > /proc/sys/net/ipv4/tcp_retrans_collapse
提高Linux應對短連線的負載能力
在存在大量短連線的情況下,Linux的TCP棧一般都會生成大量的 TIME_WAIT 狀態的socket。
你可以用下面的命令看到:
netstat -ant| grep -i time_wait
有時候,這個數目是驚人的:
netstat -ant|grep -i time_wait |wc -l
可能會超過三四萬。這個時候,我們需要修改 linux kernel 的 tcp time wait的時間,縮短之,
有個 sysctl 引數貌似可以使用,它是 /proc/sys/net/ipv4/tcp_fin_timeout,預設值是 60,
也就是60秒,很多網上的資料都說將這個數值設定低一些就可以減少netstat 裡面的TIME_WAIT狀態,
但是這個說法是錯誤的。經過認真閱讀Linux的核心原始碼,我們發現這個數值其實是輸出用的,
修改之後並沒有真正的讀回核心中進行使用,而核心中真正管用的是一個巨集定義,在
$KERNEL/include/net/tcp.h裡面,有下面的行:
#define TCP_TIMEWAIT_LEN (60*HZ) /* how long to wait to destroy TIME-WAIT
* state, about 60 seconds */
而這個巨集是真正控制 TCP TIME_WAIT 狀態的超時時間的。如果我們希望減少 TIME_WAIT 狀態的數目
(從而節省一點點核心操作時間),那麼可以把這個數值設定低一些,根據我們的測試,設定為 10
秒比較合適,也就是把上面的修改為:
#define TCP_TIMEWAIT_LEN (10*HZ) /* how long to wait to destroy TIME-WAIT
* state, about 60 seconds */
然後重新編譯核心,重啟系統即可發現短連線造成的TIME_WAIT狀態大大減少:
netstat -ant | grep -i time_wait |wc -l
一般情況都可以至少減少2/3。也能相應提高系統應對短連線的速度。
/proc/irq/{number}/smp_affinity
在多 CPU 的環境中,還有一箇中斷平衡的問題,比如,網路卡中斷會教給哪個 CPU 處理,
這個引數控制哪些 CPU 可以繫結 IRQ 中斷。其中的 {number} 是對應裝置的中斷編號,
可以用下面的命令找出:
cat /proc/interrupt
比如,一般 eth0 的 IRQ 編號是 16,所以控制 eth0 中斷繫結的 /proc 檔名是
/proc/irq/16/smp_affinity。上面這個命令還可以看到某些中斷對應的CPU處理的次數,
預設的時候肯定是不平衡的。
設定其值的方法很簡單,smp_affinity 自身是一個位掩碼(bitmask),特定的位對應特
定的 CPU,這樣,01 就意味著只有第一個 CPU 可以處理對應的中斷,而 0f(0x1111)
意味著四個 CPU 都會參與中斷處理。
幾乎所有外設都有這個引數設定,可以關注一下。
這個數值的推薦設定,其實在很大程度上,讓專門的CPU處理專門的中斷是效率最高的,比如,
給磁碟IO一個CPU,給網路卡一個CPU,這樣是比較合理的。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8183550/viewspace-675191/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL中的統計資訊相關引數介紹MySql
- 【MYSQL】兩階段提交及相關引數介紹MySql
- MySQL change buffer介紹和相關引數調整建議MySql
- oracle相關的linux核心引數OracleLinux
- linux中時間相關的函式介紹Linux函式
- 【手摸手玩轉 OceanBase 172】清理備份相關引數介紹
- Linux 核心引數 和 Oracle相關引數調整LinuxOracle
- Linux 核心引數及Oracle相關引數調整LinuxOracle
- Nginx 相關介紹Nginx
- 網址url相關引數獲取處理外掛簡單介紹
- docker 引數介紹Docker
- (轉)Linux 核心引數及Oracle相關引數調整LinuxOracle
- Dart VM 的相關簡介與執行模式解析Dart模式
- Oracle安裝相關Linux引數(轉)OracleLinux
- 【轉】Oracle安裝相關Linux引數OracleLinux
- css vm用法介紹CSS
- linux 跟oracle相關的系統核心引數?LinuxOracle
- 設計模式的相關介紹設計模式
- 使用NGUINGUI的相關介紹NGUI
- Spark的相關引數配置Spark
- MySQL的兩種filesort演算法介紹以及相關引數的設定和優化MySql演算法優化
- oracle&linux環境vm相關的調整OracleLinux
- gcc 常用引數介紹GC
- HRMS Function 引數介紹Function
- Linux作業系統相關內容介紹!Linux作業系統
- Linux核心優化之TCP相關引數Linux優化TCP
- linux /proc/sys/vm下核心引數解析Linux
- linux引數之/proc/sys/vm詳解Linux
- RTSP 流相關工具介紹
- mvn相關介紹和命令
- [android]androguard相關介紹Android
- camunda相關資料介紹
- 與oracle緊密相關的unix/linux核心引數OracleLinux
- MySQL效能相關引數MySql
- 歸檔相關引數
- PostgreSQL AutoVacuum 相關引數SQL
- SAP的月結相關流程介紹
- Oracle 各版本引數/隱藏引數 介紹Oracle