阿里云云主机添加swap分区与swap性能优化
swap的功能與相應(yīng)內(nèi)核參數(shù)
Linux 將物理內(nèi)存分為內(nèi)存段的部分被稱作“頁(yè)面”。交換是指內(nèi)存頁(yè)面被復(fù)制到預(yù)先設(shè)定好的硬盤空間(叫做交換空間)的過程,目的是釋放用于頁(yè)面的內(nèi)存。物理內(nèi)存和交換空間的總大小是可用的虛擬內(nèi)存的總量。交換空間通常是一個(gè)磁盤分區(qū)(此分區(qū)在安裝操作系統(tǒng)時(shí),系統(tǒng)通常會(huì)默認(rèn)劃分出一段空間用于交換分區(qū),默認(rèn)將交換空間的大小設(shè)定為內(nèi)存的1倍到2倍),也可以是一個(gè)文件。
內(nèi)核參數(shù)中有一個(gè)vm.swappiness參數(shù),此參數(shù)代表了內(nèi)核對(duì)于交換空間的喜好(或厭惡)程度。Swappiness 可以有 0 到 100 的值,默認(rèn)的大小通常是60,但也有的是30。設(shè)置這個(gè)參數(shù)為較低的值會(huì)減少內(nèi)存的交換,從而提升一些系統(tǒng)上的響應(yīng)度。如果內(nèi)存較為充裕,則可以將vm.swappiness大小設(shè)定為30,如果內(nèi)存較少,可以設(shè)定為60。如果將此數(shù)值調(diào)整的過大,可能損失內(nèi)存本來能提供的性能,并增加磁盤IO消耗和CPU的消耗。
關(guān)于阿里云云主機(jī)swap功能
阿里云提供的云服務(wù)器(Elastic Compute Service,簡(jiǎn)稱 ECS),是云主機(jī)的一種,當(dāng)前采用的虛擬化驅(qū)動(dòng)是Xen(這一點(diǎn)可以通過bios vendor和virtual type可以看出)。
默認(rèn)情況下,阿里云云主機(jī)的swap功能是沒有啟用的,原因當(dāng)然是通過取消swap功能可以降低磁盤IO的占用率來讓用戶購(gòu)買更多的內(nèi)存、提高磁盤壽命和性能。
阿里當(dāng)前的做法是:
1.不創(chuàng)建swap分區(qū),由鏡像決定
2.將vm.swappiness設(shè)定為0,即永不使用swap分區(qū)
啟用swap分區(qū),確實(shí)可以降低內(nèi)存的使用壓力,但并不是長(zhǎng)久之計(jì),如果云主機(jī)上運(yùn)行的應(yīng)用確實(shí)需要較高的內(nèi)存,建議還是購(gòu)買更多的內(nèi)存。
如何啟用swap分區(qū)?
步驟如下:
1.查看當(dāng)前系統(tǒng)中是否已經(jīng)啟用swap分區(qū)
| 1 2 | cat?/proc/swaps??? top |
2.如果沒有啟用swap分區(qū)功能,則新建一個(gè)專門的文件用于swap分區(qū)
| 1 | dd?if=/dev/zero?of=/data/swap?bs=512?count=8388616 |
注:此文件的大小是count的大小乘以bs大小,上面命令的大小是4294971392,即4GB
3.通過mkswap命令將上面新建出的文件做成swap分區(qū)
| 1 | mkswap?/data/swap |
4.查看內(nèi)核參數(shù)vm.swappiness中的數(shù)值是否為0,如果為0則根據(jù)實(shí)際需要調(diào)整成30或者60
| 1 2 3 | cat?/proc/sys/vm/swappiness??? sysctl?-a?|?grep?swappiness???? sysctl?-w?vm.swappiness=60 |
注:若想永久修改,則編輯/etc/sysctl.conf文件
5.啟用此交換分區(qū)的交換功能
| 1 2 | swapon?/data/swap??? echo?"/data/swap?swap?swap?defaults????0??0"?>>?/etc/fstab |
如何關(guān)閉swap分區(qū)?
| 1 2 | swapoff?/data/swap??? swapoff?-a?>/dev/null |
關(guān)于多個(gè)交換分區(qū)在使用上的優(yōu)先級(jí)?? ?
如果你有多于一個(gè)交換文件或交換分區(qū),你可以給它們各自分配一個(gè)優(yōu)先級(jí)值(0 到 32767)。系統(tǒng)會(huì)在使用較低優(yōu)先級(jí)的交換區(qū)域前優(yōu)先使用較高優(yōu)先級(jí)的交換區(qū)域。例如,如果你有一個(gè)較快的磁盤 (/dev/sda) 和一個(gè)較慢的磁盤 (/dev/sdb),給較快的設(shè)備分配一個(gè)更高的優(yōu)先級(jí)。優(yōu)先級(jí)可以在 fstab 中通過 pri 參數(shù)指定: ? ?
| 1 2 | /dev/sda1?none?swap?defaults,pri=100?0?0???? /dev/sdb2?none?swap?defaults,pri=10??0?0 |
或者通過 swapon 的 ?p (或者 ??priority) 參數(shù): ? ?
| 1 | swapon?-p?100?/dev/sda1 |
如果兩個(gè)或更多的區(qū)域有同樣的優(yōu)先級(jí),并且它們都是可用的最高優(yōu)先級(jí),頁(yè)面會(huì)按照循環(huán)的方式在它們之間分配。
添加效果
PS: 原先對(duì)阿里云主機(jī)添加swap分區(qū)是否起作用表示質(zhì)疑,現(xiàn)在看來,阿里在云主機(jī)中確實(shí)沒做這方面的手腳。
注:關(guān)于top命令中的排序:top命令里面按下f或F,在通過箭頭移動(dòng)想要顯示或者排序的列,按d表示顯示或取消顯示,按下s表示按此列排序,按下R表示翻轉(zhuǎn)排序順序。
一些可用的參考資料和擴(kuò)展閱讀材料:
Swap?https://wiki.archlinux.org/index.php/Swap?? ?
All about Linux swap space?https://www.linux.com/news/all-about-linux-swap-space
云服務(wù)器 ECS?https://www.aliyun.com/product/ecs
tag:Linux swap,阿里云添加swap交換空間,swap性能優(yōu)化,云主機(jī)性能優(yōu)化,云服務(wù)器性能優(yōu)化
--end--
本文轉(zhuǎn)自 urey_pp 51CTO博客,原文鏈接:http://blog.51cto.com/dgd2010/1762907,如需轉(zhuǎn)載請(qǐng)自行聯(lián)系原作者
與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖
總結(jié)
以上是生活随笔為你收集整理的阿里云云主机添加swap分区与swap性能优化的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习算法:补一个k-近邻算法的测试
- 下一篇: 爪哇国新游记之三十一----日期时间与字