centos swap分區

swap分區
        一般memory是機器的物理內存,讀寫速度低於cpu一個量級,可是高於磁盤不止一個量級。因此,程序和數據若是在內存的話,會有很是快的讀寫速度。可是,內存的造價是要高於磁盤的,雖然相對來講價格一直在下降。除此以外,內存的斷電丟失數據也是一個緣由說不能把全部數據和程序都保存在內存中。既然不能所有使用內存,那數據還有程序確定不可能一直霸佔在內存中。當內存沒有可用的,就必需要把內存中不常常運行的程序給踢出去。可是踢到哪裏去,這時候swap就出現了。 swap全稱爲swap place,即交換區 ,當內存不夠的時候,被踢出的進程被暫時存儲到交換區。當須要這條被踢出的進程的時候,就從交換區從新加載到內存,不然它不會主動交換到真實內存中。
 
       計算機對內存分爲物理內存與虛擬內存(注意虛擬內存和虛擬地址空間的區別)。物理內存就是計算機的實際內存大小,由RAM芯片組成的。虛擬內存則是虛擬出來的、使用磁盤代替內存。虛擬內存的出現,讓機器內存不夠的狀況獲得部分解決。當程序運行起來由操做系統作具體虛擬內存到物理內存的替換和加載(相應的頁與段的虛擬內存管理)。 這裏的虛擬內存即所謂的swap
        當用戶提交程序,而後產生進程,在機器上運行。機器會判斷當前物理內存是否還有空閒容許進程調入內存運行,若是有那麼則直接調入內存進行運行;若是沒有,那麼會根據優先級選擇一個進程掛起,把該進程交換到swap中等待,而後把新的進程調入到內存中運行。根據這種換入和換出,實現了內存的循環利用,讓用戶感受不到內存的限制 。從這也能夠看出swap扮演了一個很是重要的角色,就是暫存被換出的進程。內存與swap之間是按照內存頁爲單位來交換數據的,通常Linux中頁的大小設置爲4kb。而內存與磁盤則是按照塊來交換數據的。
   
 
 
調整swappiness參數
 
swappiness的值的大小對如何使用swap分區是有着很大的聯繫的。swappiness=0的時候表示最大限度使用物理內存,而後纔是 swap空間,swappiness=100的時候表示積極的使用swap分區,而且把內存上的數據及時的搬運到swap空間裏面。linux的基本默認設置爲60,具體以下:
通常默認值都是60   
[root@timeserver ~]# cat /proc/sys/vm/swappiness
60
也就是說,你的內存在使用到 100-60=40% 的時候,就開始出現有交換分區的使用。這樣子會加大系統io,同時造的成大量頁的換進換出,嚴重影響系統的性能,因此咱們在操做系統層面,要儘量使用內存。
經過sysctl -q vm.swappiness能夠查看參數的當前設置:
[root@admin ~]$ sysctl -q vm.swappiness
vm.swappiness = 30
 
臨時調整的方法以下,咱們調成10:
[root@timeserver ~]# sysctl vm.swappiness=10
vm.swappiness = 10
[root@timeserver ~]# cat /proc/sys/vm/swappiness
10
這只是臨時調整的方法,重啓後會回到默認設置的
要想永久調整的話,須要將
須要在/etc/sysctl.conf修改 ,加上:
[root@timeserver ~]# cat /etc/sysctl.conf
# Controls the maximum number of shared memory segments, in pages
kernel.shmall = 4294967296
vm.swappiness=10
激活設置
[root@timeserver ~]# sysctl -p
在linux中,能夠經過修改swappiness內核參數,下降系統對swap的使用,從而提升系統的性能。
相關文章
相關標籤/搜索