這篇文章給大家介紹Linux Swap交換分區(qū)介紹是怎么樣的,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。
創(chuàng)新互聯(lián)建站成立與2013年,先為肥西等服務(wù)建站,肥西等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為肥西企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。Swap交換分區(qū)概念
什么是Linux swap space呢?我們先來看看下面兩段關(guān)于Linux swap space的英文介紹資料:
Linux divides its physical RAM (random access memory) into chucks of memory called pages. Swapping is the process whereby a page of memory is copied to the preconfigured space on the hard disk, called swap space, to free up that page of memory. The combined sizes of the physical memory and the swap space is the amount of virtual memory available.
Swap space in Linux is used when the amount of physical memory (RAM) is full. If the system needs more memory resources and the RAM is full, inactive pages in memory are moved to the swap space. While swap space can help machines with a small amount of RAM, it should not be considered a replacement for more RAM. Swap space is located on hard drives, which have a slower access time than physical memory.Swap space can be a dedicated swap partition (recommended), a swap file, or a combination of swap partitions and swap files.
Linux內(nèi)核為了提高讀寫效率與速度,會(huì)將文件在內(nèi)存中進(jìn)行緩存,這部分內(nèi)存就是Cache Memory(緩存內(nèi)存)。即使你的程序運(yùn)行結(jié)束后,Cache Memory也不會(huì)自動(dòng)釋放。這就會(huì)導(dǎo)致你在Linux系統(tǒng)中程序頻繁讀寫文件后,你會(huì)發(fā)現(xiàn)可用物理內(nèi)存變少。當(dāng)系統(tǒng)的物理內(nèi)存不夠用的時(shí)候,就需要將物理內(nèi)存中的一部分空間釋放出來,以供當(dāng)前運(yùn)行的程序使用。那些被釋放的空間可能來自一些很長(zhǎng)時(shí)間沒有什么操作的程序,這些被釋放的空間被臨時(shí)保存到Swap空間中,等到那些程序要運(yùn)行時(shí),再從Swap分區(qū)中恢復(fù)保存的數(shù)據(jù)到內(nèi)存中。這樣,系統(tǒng)總是在物理內(nèi)存不夠時(shí),才進(jìn)行Swap交換。
關(guān)于Swap分區(qū),其實(shí)我們有很多疑問,如果能弄清楚這些疑問,那么你對(duì)Swap的了解掌握就差不多了。如何查看Swap分區(qū)大??? Swap分區(qū)大小應(yīng)該如何設(shè)置?系統(tǒng)在什么時(shí)候會(huì)使用Swap分區(qū)? 是否可以調(diào)整? 如何調(diào)整Swap分區(qū)的大???Swap分區(qū)有什么優(yōu)劣和要注意的地方? Swap分區(qū)是否必要?那么我一個(gè)一個(gè)來看看這些疑問吧!
查看Swap分區(qū)大小
查看Swap分區(qū)的大小以及使用情況,一般使用free命令即可,如下所示,Swap大小為2015M,目前沒有使用Swap分區(qū)
[root@DB-Server ~]# free -m
total used free shared buffers cached
Mem: 1000 855 145 0 28 296
-/+ buffers/cache: 530 470
Swap: 2015 0 2015
另外我們還可以使用swapon命令查看當(dāng)前swap相關(guān)信息:例如swap空間是swap partition,Swap size,使用情況等詳細(xì)信息
[root@DB-Server ~]# swapon -s
Filename Type Size Used Priority
/dev/sda3 partition 2064344 0 -1
[root@DB-Server ~]# cat /proc/swaps
Filename Type Size Used Priority
/dev/sda3 partition 2064344 0 -1
[root@DB-Server ~]#
Swap分區(qū)大小設(shè)置
系統(tǒng)的Swap分區(qū)大小設(shè)置多大才是最優(yōu)呢? 關(guān)于這個(gè)問題,應(yīng)該說只能有一個(gè)統(tǒng)一的參考標(biāo)準(zhǔn),具體還應(yīng)該根據(jù)系統(tǒng)實(shí)際情況和內(nèi)存的負(fù)荷綜合考慮,像ORACLE的官方文檔就推薦如下設(shè)置,這個(gè)是根據(jù)物理內(nèi)存來做參考的。
RAM | Swap Space |
Up to 512 MB | 2 times the size of RAM |
Between 1024 MB and 2048 MB | 1.5 times the size of RAM |
Between 2049 MB and 8192 MB | Equal to the size of RAM |
More than 8192 MB | 0.75 times the size of RAM |
另外在其它博客中看到下面一個(gè)推薦設(shè)置,當(dāng)然我不清楚其怎么得到這個(gè)標(biāo)準(zhǔn)的。是否合理也無從考證??梢宰鳛橐粋€(gè)參考。
4G以內(nèi)的物理內(nèi)存,SWAP 設(shè)置為內(nèi)存的2倍。
4-8G的物理內(nèi)存,SWAP 等于內(nèi)存大小。
8-64G 的物理內(nèi)存,SWAP 設(shè)置為8G。
64-256G物理內(nèi)存,SWAP 設(shè)置為16G。
上下兩個(gè)標(biāo)準(zhǔn)確實(shí)也很讓人無所適從。我就有一次在一臺(tái)ORACLE數(shù)據(jù)庫服務(wù)器(64G的RAM),按照官方推薦設(shè)置了一個(gè)很大的Swap分區(qū),但是我發(fā)現(xiàn)其實(shí)這個(gè)Swap幾乎很少用到,其實(shí)是浪費(fèi)了磁盤空間。所以如果根據(jù)系統(tǒng)實(shí)際情況和內(nèi)存的負(fù)荷綜合考慮,其實(shí)應(yīng)該按照第二個(gè)參考標(biāo)準(zhǔn)設(shè)置為8G即可。當(dāng)然這個(gè)只是個(gè)人的一些認(rèn)知。
釋放Swap分區(qū)空間
[root@testlnx ~]# free -m
total used free shared buffers cached
Mem: 64556 55368 9188 0 926 51405
-/+ buffers/cache: 3036 61520
Swap: 65535 13 65522
[root@testlnx ~]# swapon -s
Filename Type Size Used Priority
/dev/mapper/VolGroup00-LogVol01 partition 67108856 14204 -1
使用swapoff關(guān)閉交換分區(qū)
[root@testlnx ~]# swapoff /dev/mapper/VolGroup00-LogVol01
使用swapon啟用交換分區(qū),此時(shí)查看交換分區(qū)的使用情況,你會(huì)發(fā)現(xiàn)used為0了
[root@testlnx ~]# swapon /dev/mapper/VolGroup00-LogVol01
[root@testlnx ~]# free -m
total used free shared buffers cached
Mem: 64556 55385 9171 0 926 51406
-/+ buffers/cache: 3052 61504
Swap: 65535 0 65535
[root@testlnx ~]#
Swap分區(qū)空間什么時(shí)候使用
系統(tǒng)在什么情況或條件下才會(huì)使用Swap分區(qū)的空間呢? 其實(shí)是Linux通過一個(gè)參數(shù)swappiness來控制的。當(dāng)然還涉及到復(fù)雜的算法。
這個(gè)參數(shù)值可為 0-100,控制系統(tǒng) swap 的使用程度。高數(shù)值可優(yōu)先系統(tǒng)性能,在進(jìn)程不活躍時(shí)主動(dòng)將其轉(zhuǎn)換出物理內(nèi)存。低數(shù)值可優(yōu)先互動(dòng)性并盡量避免將進(jìn)程轉(zhuǎn)換處物理內(nèi)存,并降低反應(yīng)延遲。默認(rèn)值為 60。注意:這個(gè)只是一個(gè)權(quán)值,不是一個(gè)百分比值,涉及到系統(tǒng)內(nèi)核復(fù)雜的算法。關(guān)于該參數(shù)請(qǐng)參考這篇文章[轉(zhuǎn)載]調(diào)整虛擬內(nèi)存,在此不做過多贅述。下面是關(guān)于swappiness的相關(guān)資料
The Linux 2.6 kernel added a new kernel parameter called swappiness to let administrators tweak the way Linux swaps. It is a number from 0 to 100. In essence, higher values lead to more pages being swapped, and lower values lead to more applications being kept in memory, even if they are idle. Kernel maintainer Andrew Morton has said that he runs his desktop machines with a swappiness of 100, stating that "My point is that decreasing the tendency of the kernel to swap stuff out is wrong. You really don't want hundreds of megabytes of BloatyApp's untouched memory floating about in the machine. Get it out on the disk, use the memory for something useful."
Swappiness is a property of the Linux kernel that changes the balance between swapping out runtime memory, as opposed to dropping pages from the system page cache. Swappiness can be set to values between 0 and 100 inclusive. A low value means the kernel will try to avoid swapping as much as possible where a higher value instead will make the kernel aggressively try to use swap space. The default value is 60, and for most desktop systems, setting it to 100 may affect the overall performance, whereas setting it lower (even 0) may improve interactivity (by decreasing response latency.
有兩種臨時(shí)修改swappiness參數(shù)的方法,系統(tǒng)重啟后失效
方法1:
[root@DB-Server ~]# more /proc/sys/vm/swappiness
60
[root@DB-Server ~]# echo 10 > /proc/sys/vm/swappiness
[root@DB-Server ~]# more /proc/sys/vm/swappiness
10
方法2
[root@DB-Server ~]#sysctl vm.swappiness=10
永久修改swappiness參數(shù)的方法就是在配置文件/etc/sysctl.conf里面修改vm.swappiness的值,然后重啟系統(tǒng)
echo 'vm.swappiness=10' >>/etc/sysctl.conf
如果有人會(huì)問是否物理內(nèi)存使用到某個(gè)百分比后才會(huì)使用Swap交換空間,可以明確的告訴你不是這樣一個(gè)算法,如下截圖所示,及時(shí)物理內(nèi)存只剩下8M了,但是依然沒有使用Swap交換空間,而另外一個(gè)例子,物理內(nèi)存還剩下19G,居然用了一點(diǎn)點(diǎn)Swap交換空間。
另外調(diào)整/proc/sys/vm/swappiness這個(gè)參數(shù),如果你沒有絕對(duì)把握,就不要隨便調(diào)整這個(gè)內(nèi)核參數(shù),這個(gè)參數(shù)符合大多數(shù)情況下的一個(gè)最優(yōu)值。
Swap交換分區(qū)對(duì)性能的影響
我們知道Linux可以使用文件系統(tǒng)中的一個(gè)常規(guī)文件或獨(dú)立分區(qū)作為Swap交換空間,相對(duì)而言,交換分區(qū)要快一些。但是和RAM比較而言,Swap交換分區(qū)的性能依然比不上物理內(nèi)存,目前的服務(wù)器上RAM基本上都相當(dāng)充足,那么是否可以考慮拋棄Swap交換分區(qū),是否不需要保留Swap交換分區(qū)呢?這個(gè)其實(shí)是我的疑問之一。在這篇What Is a Linux SWAP Partition, And What Does It Do?博客中,作者給出了swap交換空間的優(yōu)劣
Advantages:
Provides overflow space when your memory fills up completely
Can move rarely-needed items away from your high-speed memory
Allows you to hibernate
Disadvantages:
Takes up space on your hard drive as SWAP partitions do not resize dynamically
Can increase wear and tear to your hard drive
Does not necessarily improve performance (see below)
其實(shí)保留swap分區(qū)概括起來可以從下面來看:
首先,當(dāng)物理內(nèi)存不足以支撐系統(tǒng)和應(yīng)用程序(進(jìn)程)的運(yùn)作時(shí),這個(gè)Swap交換分區(qū)可以用作臨時(shí)存放使用率不高的內(nèi)存分頁,把騰出的內(nèi)存交給急需的應(yīng)用程序(進(jìn)程)使用。有點(diǎn)類似機(jī)房的UPS系統(tǒng),雖然正常情況下不需要使用,但是異常情況下, Swap交換分區(qū)還是會(huì)發(fā)揮其關(guān)鍵作用。
其次,即使你的服務(wù)器擁有足夠多的物理內(nèi)存,也有一些程序會(huì)在它們初始化時(shí)殘留的極少再用到的內(nèi)存分頁內(nèi)容轉(zhuǎn)移到 swap 空間,以此讓出物理內(nèi)存空間。對(duì)于有發(fā)生內(nèi)存泄漏幾率的應(yīng)用程序(進(jìn)程),Swap交換分區(qū)更是重要,因?yàn)檎l也不想看到由于物理內(nèi)存不足導(dǎo)致系統(tǒng)崩潰。
最后,現(xiàn)在很多個(gè)人用戶在使用Linux,有些甚至是PC的虛擬機(jī)上跑Linux系統(tǒng),此時(shí)可能常用到休眠(Hibernate),這種情況下也是推薦劃分Swap交換分區(qū)的。
其實(shí)少量使用Swap交換空間是不會(huì)影響性能,只有當(dāng)RAM資源出現(xiàn)瓶頸或者內(nèi)存泄露,進(jìn)程異常時(shí)導(dǎo)致頻繁、大量使用交換分區(qū)才會(huì)導(dǎo)致嚴(yán)重性能問題。另外使用Swap交換分區(qū)頻繁,還會(huì)引起kswapd0進(jìn)程(虛擬內(nèi)存管理中, 負(fù)責(zé)換頁的)耗用大量CPU資源,導(dǎo)致CPU飆升。
關(guān)于Swap分區(qū)的優(yōu)劣以及是否應(yīng)該舍棄,我有點(diǎn)惡趣味的想到了這個(gè)事情:人身上的兩個(gè)器官,闌尾和扁桃體。切除闌尾或扁桃體是否也是爭(zhēng)論不休。另外,其實(shí)不要Swap交換分區(qū),Linux也是可以正常運(yùn)行的(有人提及過這個(gè)問題)
調(diào)整Swap分區(qū)的大小
如下測(cè)試案例所示,Swap分區(qū)大小為65535M,我現(xiàn)在想將Swap分區(qū)調(diào)整為8G,那么我們來看看具體操作吧
1:查看Swap的使用情況以及相關(guān)信息
[root@getlnx14uat ~]# swapon -s
Filename Type Size Used Priority
/dev/mapper/VolGroup00-LogVol01 partition 67108856 878880 -1
[root@getlnx14uat ~]# free -m
total used free shared buffers cached
Mem: 3957 3920 36 0 39 3055
-/+ buffers/cache: 825 3132
Swap: 65535 858 64677
2: 關(guān)閉Swap交換分區(qū)
[root@getlnx14uat ~]# swapoff /dev/mapper/VolGroup00-LogVol01
[root@getlnx14uat ~]# swapon -s
Filename Type Size Used Priority
3: 這里是縮小Swap分區(qū)大小,如果是增大Swap分區(qū)大小,那么就需要擴(kuò)展正在使用的swap分區(qū)的邏輯卷,此處使用lvreduce命令收縮邏輯卷。
[root@getlnx14uat ~]# lvreduce -L 8G /dev/mapper/VolGroup00-LogVol01
WARNING: Reducing active logical volume to 8.00 GB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce LogVol01? [y/n]: y
Reducing logical volume LogVol01 to 8.00 GB
Logical volume LogVol01 successfully resized
4:格式化swap分區(qū)
[root@getlnx14uat ~]# mkswap /dev/mapper/VolGroup00-LogVol01
Setting up swapspace version 1, size = 8589930 kB
5:啟動(dòng)swap分區(qū),并增加到/etc/fstab自動(dòng)掛載
[root@getlnx14uat ~]# swapon -s
Filename Type Size Used Priority
[root@getlnx14uat ~]# swapon /dev/mapper/VolGroup00-LogVol01
[root@getlnx14uat ~]# swapon -s
Filename Type Size Used Priority
/dev/mapper/VolGroup00-LogVol01 partition 8388600 0 -1
關(guān)于Linux Swap交換分區(qū)介紹是怎么樣的就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。
名稱欄目:LinuxSwap交換分區(qū)介紹是怎么樣的-創(chuàng)新互聯(lián)
本文鏈接:http://jinyejixie.com/article40/hgiho.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、軟件開發(fā)、網(wǎng)站設(shè)計(jì)、用戶體驗(yàn)、小程序開發(fā)、虛擬主機(jī)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容