1. 程式人生 > >linux下swap分割槽的作用

linux下swap分割槽的作用

嵌入式Linux中文站訊息,Linux系統的Swap分割槽,即交換區,Swap空間的作用可簡單描述為:當系統的實體記憶體不夠用的時候,就需要將實體記憶體中的一部分空間釋放出來,以供當前執行的程式使用。那些被釋放的空間可能來自一些很長時間沒有什麼操作的程式,這些被釋放的空間被臨時儲存到Swap空間中,等到那些程式要執行時,再從Swap中恢復儲存的資料到記憶體中。這樣,系統總是在實體記憶體不夠時,才進行Swap交換。其實,Swap的調整對Linux伺服器,特別是Web伺服器的效能至關重要。通過調整Swap,有時可以越過系統性能瓶頸,節省系統升級費用。

        如大家所知,現代作業系統都實現了“虛擬記憶體”這一技術,不但在功能上突破了實體記憶體的限制,使程式可以操縱大於實際實體記憶體的空間,更重要的是,“虛擬記憶體”是隔離每個程序的安全保護網,使每個程序都不受其它程式的干擾。

        可能計算機使用者會經常遇這種現象。例如,在使用Windows系統時,可以同時執行多個程式,當你切換到一個很長時間沒有理會的程式時,會聽到硬碟“嘩嘩”直響。這是因為這個程式的記憶體被那些頻繁執行的程式給“偷走”了,放到了Swap區中。因此,一旦此程式被放置到前端,它就會從Swap區取回自己的資料,將其放進記憶體,然後接著執行。

        另外,並不是所有從實體記憶體中交換出來的資料都會被放到Swap中(如果這樣的話,Swap就會不堪重負),有相當一部分資料被直接交換到檔案系統。例如,有的程式會開啟一些檔案,對檔案進行讀寫(其實每個程式都至少要開啟一個檔案,那就是執行程式本身),當需要將這些程式的記憶體空間交換出去時,就沒有必要將檔案部分的資料放到Swap空間中了,而可以直接將其放到檔案裡去。如果是讀檔案操作,那麼記憶體資料被直接釋放,不需要交換出來,因為下次需要時,可直接從檔案系統恢復;如果是寫檔案,只需要將變化的資料儲存到檔案中,以便恢復。但是那些用malloc和new函式生成的物件的資料則不同,它們需要Swap空間,因為它們在檔案系統中沒有相應的“儲備”檔案,因此被稱作“匿名”(Anonymous)記憶體資料。這類資料還包括堆疊中的一些狀態和變數資料等。所以說,Swap空間是“匿名”資料的交換空間。

   突破128M Swap限制

       有些Linux(國內漢化版)安裝手冊上有這樣的說明:Swap空間不能超過128M。為什麼會有這種說法?在說明“128M”這個數字的來歷之前,先給問題一個回答:現在根本不存在128M的限制!現在的限制是2G!

       Linux系統中的Swap空間是分頁的,每一頁的大小和記憶體頁的大小一樣,方便Swap空間和記憶體之間的資料交換。舊版本的Linux實現Swap空間時,用Swap空間的第一頁作為所有Swap空間頁的一個“位對映”(Bit map)。這就是說第一頁的每一位,都對應著一頁Swap空間。如果這一位是1,表示此頁Swap可用;如果是0,表示此頁是壞塊,不能使用。這麼說來,第一個Swap對映位應該是0,因為,第一頁Swap是對映頁。另外,最後10個對映位也被佔用,用來表示Swap的版本(原來的版本是Swap_space ,現在的版本是swapspace2)。那麼,如果說一頁的大小為s,這種Swap的實現方法共能管理“8 * ( s - 10 ) - 1”個Swap頁。對於i386系統來說s=4096,則空間大小共為133890048,如果認為1 MB=2^20 Byte的話,大小正好為128M。

      這樣來實現Swap空間的管理,是要防止Swap空間中有壞塊。如果系統檢查到Swap中有壞塊,則在相應的位對映上標記上0,表示此頁不可用。這樣在使用Swap時,不至於用到壞塊,而使系統產生錯誤。

   現在的系統設計者認為:

   1.現在硬碟質量很好,壞塊很少。

   2.就算有,也不多,只需要將壞塊羅列出來,而不需要為每一頁建立對映。

   3.如果有很多壞塊,就不應該將此硬碟作為Swap空間使用。

   於是,現在的Linux取消了位對映的方法,也就取消了128M的限制。直接用地址訪問,限制為2G。

   Swap配置對效能的影響

       對於分配太多的Swap空間,會浪費磁碟空間,而Swap空間太少,則系統會發生錯誤。

       當系統的實體記憶體用光了,系統就會跑得很慢,但仍能執行;如果Swap空間用光了,那麼系統就會發生錯誤。例如,Web伺服器能根據不同的請求數量衍生出多個服務程序(或執行緒),如果Swap空間用完,則服務程序無法啟動,通常會出現“application is out of memory”的錯誤,嚴重時會造成服務程序的死鎖。因此Swap空間的分配是很重要的。

       一般情況下,Swap空間應大於或等於實體記憶體的大小,最小不應小於64M,通常Swap空間的大小應是實體記憶體的2-2.5倍。但根據不同的應用,應有不同的配置:如果是小的桌面系統,則只需要較小的Swap空間,而大的伺服器系統則視情況不同需要不同大小的Swap空間。特別是資料庫伺服器和Web伺服器,隨著訪問量的增加,對Swap空間的要求也會增加,具體配置參見各伺服器產品的說明。

       此外,Swap分割槽的數量對效能也有很大的影響。因為Swap交換的操作是磁碟IO的操作,如果有多個Swap交換區,Swap空間的分配會以輪流的方式操作於所有的Swap,這樣會大大均衡IO的負載,加快Swap交換的速度。如果只有一個交換區,所有的交換操作會使交換區變得很忙,使系統大多數時間處於等待狀態,效率很低。用效能監視工具就會發現,此時的CPU並不很忙,而系統卻慢。這說明,瓶頸在IO上,依靠提高CPU的速度是解決不了問題的。

   系統性能監視

      Swap空間的分配固然很重要,而系統執行時的效能監控卻更加有價值。通過效能監視工具,可以檢查系統的各項效能指標,找到系統性能的瓶頸。本文只介紹一下在Solaris下和Swap相關的一些命令和用途。

     最常用的是Vmstat命令(在大多數Unix平臺下都有這樣一些命令),此命令可以檢視大多數效能指標。 例如:

# vmstat 3

   procs memory swap io system cpu

   r b w swpd free buff cache si so bi bo in cs us sy id

   0 0 0 0 93880 3304 19372 0 0 10 2 131 10 0 0 99

   0 0 0 0 93880 3304 19372 0 0 0 0 109 8 0 0 100

   0 0 0 0 93880 3304 19372 0 0 0 0 112 6 0 0 100

   …………

   命令說明:

   vmstat 後面的引數指定了效能指標捕獲的時間間隔。3表示每三秒鐘捕獲一次。第一行資料不用看,沒有價值,它僅反映開機以來的平均效能。從第二行開始,反映每三秒鐘之內的系統性能指標。這些效能指標中和Swap有關的包括以下幾項:

   procs下的w

   它表示當前(三秒鐘之內)需要釋放記憶體、交換出去的程序數量。

   memory下的swpd

   它表示使用的Swap空間的大小。

   Swap下的si,so

   si表示當前(三秒鐘之內)每秒交換回記憶體(Swap in)的總量,單位為kbytes;so表示當前(三秒鐘之內)每秒交換出記憶體(Swap out)的總量,單位為kbytes。

   以上的指標數量越大,表示系統越忙。這些指標所表現的系統繁忙程度,與系統具體的配置有關。系統管理員應該在平時系統正常執行時,記下這些指標的數值,在系統發生問題的時候,再進行比較,就會很快發現問題,並制定本系統正常執行的標準指標值,以供效能監控使用。

   另外,使用Swapon-s也能簡單地檢視當前Swap資源的使用情況。例如:

# swapon -s

   Filename Type Size Used Priority

   /dev/hda9 partition 361420 0 3

   能夠方便地看出Swap空間的已用和未用資源的大小。

   應該使Swap負載保持在30%以下,這樣才能保證系統的良好效能。

   增加Swap空間,分以下幾步:

   1)成為超級使用者

$su - root

   2)建立Swap檔案

# dd if=/dev/zero of=swapfile bs=1024 count=65536

   建立一個有連續空間的交換檔案。

   3)啟用Swap檔案

#/usr/sbin/swapon swapfile

   swapfile指的是上一步建立的交換檔案。

   4)現在新加的Swap檔案已經起作用了,但系統重新啟動以後,並不會記住前幾步的操作。因此要在/etc/fstab檔案中記錄檔案的名字,和Swap型別,如:

/path/swapfile none Swap sw,pri=3 0 0

   5)檢驗Swap檔案是否加上

   /usr/sbin/swapon -s

   刪除多餘的Swap空間。

   1)成為超級使用者

   2)使用Swapoff命令收回Swap空間。

   #/usr/sbin/swapoff swapfile

   3)編輯/etc/fstab檔案,去掉此Swap檔案的實體。

   4)從檔案系統中回收此檔案。

   #rm swapfile

   5)當然,如果此Swap空間不是一個檔案,而是一個分割槽,則需建立一個新的檔案系統,再掛接到原來的檔案系統上。

相關推薦

linuxswap分割槽作用

嵌入式Linux中文站訊息,Linux系統的Swap分割槽,即交換區,Swap空間的作用可簡單描述為:當系統的實體記憶體不夠用的時候,就需要將實體記憶體中的一部分空間釋放出來,以供當前執行的程式使用。那些被釋放的空間可能來自一些很長時間沒有什麼操作的程式,這些被釋放的空間被

在不重灌系統的情況建立LinuxSwap分割槽

本文由荒原之夢原創,原文連結:http://zhaokaifeng.com/?p=649 操作環境: CentOS 7 操作背景: 本文中使用的CentOS Linux系統在安裝的時候沒有建立Swap分割槽。下面介紹的方法是通過建立一個檔案的方式在不重灌系統(即不格式化整

Linuxswap分區多大才合適的問題探討

gpo 基本 ont red ise 問題 情況 add cells 說明: 1、這個話題在每個Linux發行版中都各不相同,且在當下內存硬盤的時代下,再組個磁盤陣列之後速度相當。 2、我覺得硬盤大的情況下,有多大搞多大,我只要控制內存的使用率在99%時才使用swap,

linux基礎3-磁碟和檔案系統相關 LINUX支援哪些檔案系統 linux磁碟分割槽詳解 圖文(fdisk;mkfs)

一 dumpe2fs :    在Linux使用過程中,我們如果要了解檔案系統的配置情況,可以使用dumpe2fs檢視ext2/ext3/ext4格式的檔案系統資訊。 命令格式: dumpe2fs [選項] 裝置 常用選項: -h  僅列出超級塊中的資訊

Linux磁碟分割槽,格式化以及掛載

接下來,我們詳細介紹在Linux下,如何用命令對磁碟進分割槽、格式化以及如何掛載到目錄。   測試環境:VMware Workstation / centos7   操作步驟:     第一步:首先來看看當前虛擬機器的磁碟情況。              以及先前分割槽情況:由下

CentOS7swap分割槽建立(新增),刪除以及相關配置

  小叨下背景:筆者的伺服器記憶體只有1g,少得可憐。之前使用apache,不堪忍受其過量的記憶體消耗,網站卡得想哭,資料庫也不斷地崩,無奈投入nginx的懷抱並且已經喜歡上了nginx,具體請看上文《CentOS7部署輕量級web伺服器nginx+php》。     &nb

linux格式化分割槽和重新掛載的命令,適用於centos和redhat

http://help.aliyun.com/manual?spm=0.0.0.105.673183&helpId=271 http://help.aliyun.com/manual?spm=0.0.0.33.50c908&lastSortId=234 

linuxswap分割槽

linux的swap分割槽是用來儲存記憶體中資訊的,一般情況下,我們的實體記憶體是夠用的,但如果應用程式所佔據的記憶體太大,實體記憶體不夠用,那麼這時候就要釋放一些不常用到的實體記憶體,那麼釋放在什麼地方呢?就可以放在swap分割槽。釋放出的記憶體供應用程式使用。 可以通過swapon、sw

linux增加swap分割槽方法

建立swapfile檔案 執行命令:dd if=/dev/zero of=swapfile bs=1024 count=500000 注:可根據實際需要更改count值的大小,這裡設定500000,大概就是50G [root@dics-no iflytek]# dd

.Neter玩轉Linux系列之三:Linux分割槽講解

基礎篇 實戰篇 一、Linux分割槽 概述:首先我們要對硬碟分割槽的基本概念進行一些初步介紹,硬碟的分割槽主要分為主分割槽和擴充套件分割槽兩種。主分割槽和擴充套件分割槽的數目之和不能大於四個,且基本分割槽可以馬上別使用,但不能再分割槽。擴充套件分割槽必須再進行分割槽後才能

linux磁碟分割槽,格式化和掛載

按照規定,整個硬碟只能有4個主分割槽,包括基本分割槽和擴充套件分割槽。擴充套件分割槽最多隻能有1個,擴充套件分割槽裡可以分出多個任意大小的邏輯分割槽,而基本分割槽不可再分。 我的硬碟有1T,sda1為系統盤,有30G,sda2有100G,sda5為swap分割

[轉]如何手動清除或重新整理LinuxSWAP分割槽快取

XEN等架構的VPS都有SWAP(交換分割槽)。實體記憶體接近飽和時,系統會自動將不常用的記憶體檔案轉儲到SWAP中,但SWAP使用率達30%的時候對系統性能可能有一定影響。 對於較大實體記憶體的VPS或伺服器,或根據自己伺服器的情況,可以考慮手動關閉或重新整理SWAP分割槽。 一、SWAP開關: 1、關

Linux使用swap分割槽

在Linux伺服器中,記憶體分為兩種,分別是實體記憶體和虛擬記憶體,在Linux中我們習慣把他命名為swap分割槽,但是有時候會發現,明明伺服器的實體記憶體還有好多沒用,就開始使用了swap了,這種情況是正常的嗎? 關於什麼時候開始使用swap,可以進行相關比例的檢視 ca

Linux分配swap分割槽

1. free命令 free 【選項】:檢視記憶體與swap分割槽使用狀況 選項: -h:使用習慣單位顯示容量,如KB,MB或GB等。     -m:以MB為單位顯示容量。    -k:以KB為單

Linux磁碟分割槽和目錄的關係

 1、任何一個分割槽都必須掛載到某個目錄下(我安裝雙系統的時候,將一個分割槽掛載在/目錄下); 2、目錄是邏輯上的區分,分割槽是物理上的區分; 3、磁碟Linux分割槽都必須掛載到目錄樹中某個具體的目錄上才能進行讀寫操作(這點在安裝Linux系統的時候,需要你手動選擇掛

linux分割槽設定label

linux下用e2label命令來設定分割槽的label,其用法很簡單: e2label 分割槽 [新label] 如果後面指定新label則為分割槽設定新label;如果後面不指定label,則顯示分割槽的當前label 其man手冊 E2LABEL(8)    

Linux 磁碟分割槽和建立檔案系統(基於Ubuntu平臺)

Linux系統中對於檔案系統的存在方式和windows完全不相同,對於Linux來說一切皆檔案的思想是其核心,所以對於Linux下的裝置來說,其所對應的裝置檔案都存放在/dev目錄下,linux下硬碟裝置名為(IDE硬碟為hdx(x為a開始的字元一般一塊硬碟裝置對應一個字母

Linux磁碟分割槽與擴容

虛擬機器增加磁碟進行磁碟分割槽 檢視磁碟情況 [[email protected] /]#df 檢視裝置 [[email protected] /]#ls /dev/sd* 增加磁碟 [[email protected] /]#ls

LINUX地各分割槽作用是什麼?比方/ /home /boot /root等…

/binbin是binary地縮寫。這個目錄沿襲啦UNIX系統地結構,寄存著使用者最常常使用地命令。例如cp、ls、cat,等等。/boot這裡寄存地是啟動Linux時使用地一些中心檔案。/devdev是device(裝置)地縮寫。這個目錄下是一切Linux地外部裝置,其功用

Linux建立swap分割槽(用檔案作為Swap分割槽

1.建立要作為swap分割槽的檔案:增加1GB大小的交換分割槽,則命令寫法如下,其中的count等於想要的塊的數量(bs*count=檔案大小)。 dd if=/dev/zero of=/root/swapfile bs=1M count=1024 2.格式