天天看點

阿裡雲雲主機添加swap分區與swap性能優化

swap的功能與相應核心參數

linux 将實體記憶體分為記憶體段的部分被稱作“頁面”。交換是指記憶體頁面被複制到預先設定好的硬碟空間(叫做交換空間)的過程,目的是釋放用于頁面的記憶體。實體記憶體和交換空間的總大小是可用的虛拟記憶體的總量。交換空間通常是一個磁盤分區(此分區在安裝作業系統時,系統通常會預設劃分出一段空間用于交換分區,預設将交換空間的大小設定為記憶體的1倍到2倍),也可以是一個檔案。

核心參數中有一個vm.swappiness參數,此參數代表了核心對于交換空間的喜好(或厭惡)程度。swappiness 可以有 0 到 100 的值,預設的大小通常是60,但也有的是30。設定這個參數為較低的值會減少記憶體的交換,進而提升一些系統上的響應度。如果記憶體較為充裕,則可以将vm.swappiness大小設定為30,如果記憶體較少,可以設定為60。如果将此數值調整的過大,可能損失記憶體本來能提供的性能,并增加磁盤io消耗和cpu的消耗。

關于阿裡雲雲主機swap功能

阿裡雲提供的雲伺服器(elastic compute service,簡稱 ecs),是雲主機的一種,目前采用的虛拟化驅動是xen(這一點可以通過bios vendor和virtual type可以看出)。

預設情況下,阿裡雲雲主機的swap功能是沒有啟用的,原因當然是通過取消swap功能可以降低磁盤io的占用率來讓使用者購買更多的記憶體、提高磁盤壽命和性能。

阿裡目前的做法是:

1.不建立swap分區,由鏡像決定

2.将vm.swappiness設定為0,即永不使用swap分區

啟用swap分區,确實可以降低記憶體的使用壓力,但并不是長久之計,如果雲主機上運作的應用确實需要較高的記憶體,建議還是購買更多的記憶體。

如何啟用swap分區?

步驟如下:

1.檢視目前系統中是否已經啟用swap分區

1

2

<code>cat</code> <code>/proc/swaps</code>   

<code>top</code>

2.如果沒有啟用swap分區功能,則建立一個專門的檔案用于swap分區

<code>dd</code> <code>if</code><code>=</code><code>/dev/zero</code> <code>of=</code><code>/data/swap</code> <code>bs=512 count=8388616</code>

注:此檔案的大小是count的大小乘以bs大小,上面指令的大小是4294971392,即4gb

3.通過mkswap指令将上面建立出的檔案做成swap分區

<code>mkswap </code><code>/data/swap</code>

4.檢視核心參數vm.swappiness中的數值是否為0,如果為0則根據實際需要調整成30或者60

3

<code>cat</code> <code>/proc/sys/vm/swappiness</code>   

<code>sysctl -a | </code><code>grep</code> <code>swappiness    </code>

<code>sysctl -w vm.swappiness=60</code>

注:若想永久修改,則編輯/etc/sysctl.conf檔案

5.啟用此交換分區的交換功能

<code>swapon </code><code>/data/swap</code>   

<code>echo</code> <code>"/data/swap swap swap defaults    0  0"</code> <code>&gt;&gt; </code><code>/etc/fstab</code>

如何關閉swap分區?

<code>swapoff </code><code>/data/swap</code>   

<code>swapoff -a &gt;</code><code>/dev/null</code>

關于多個交換分區在使用上的優先級    

如果你有多于一個交換檔案或交換分區,你可以給它們各自配置設定一個優先級值(0 到 32767)。系統會在使用較低優先級的交換區域前優先使用較高優先級的交換區域。例如,如果你有一個較快的磁盤 (/dev/sda) 和一個較慢的磁盤 (/dev/sdb),給較快的裝置配置設定一個更高的優先級。優先級可以在 fstab 中通過 pri 參數指定:    

<code>/dev/sda1</code> <code>none swap defaults,pri=100 0 0    </code>

<code>/dev/sdb2</code> <code>none swap defaults,pri=10  0 0</code>

或者通過 swapon 的 ?p (或者 ??priority) 參數:    

<code>swapon -p 100 </code><code>/dev/sda1</code>

如果兩個或更多的區域有同樣的優先級,并且它們都是可用的最高優先級,頁面會按照循環的方式在它們之間配置設定。

添加效果

ps: 原先對阿裡雲主機添加swap分區是否起作用表示質疑,現在看來,阿裡在雲主機中确實沒做這方面的手腳。

阿裡雲雲主機添加swap分區與swap性能優化

注:關于top指令中的排序:top指令裡面按下f或f,在通過箭頭移動想要顯示或者排序的列,按d表示顯示或取消顯示,按下s表示按此列排序,按下r表示翻轉排序順序。

一些可用的參考資料和擴充閱讀材料:

tag:linux swap,阿裡雲添加swap交換空間,swap性能優化,雲主機性能優化,雲伺服器性能優化

--end--

繼續閱讀