- 論壇徽章:
- 0
|
在一個(gè)計(jì)算機(jī)系統(tǒng)中,物理內(nèi)存是一個(gè)有限的資源。盡管有更多的進(jìn)程需要執(zhí)行,但是同時(shí)在物理內(nèi)存運(yùn)行的進(jìn)程數(shù)量是有限的。交換和換頁允許部分進(jìn)程在物理內(nèi)存和大容量存儲(chǔ)間移動(dòng)。這就會(huì)釋放物理內(nèi)存的空間。
交換區(qū):這是一塊在磁盤上的空間,它臨時(shí)的存放在內(nèi)存中的進(jìn)程的鏡像。當(dāng)物理內(nèi)存的需求非常低,進(jìn)程的內(nèi)存鏡像從交換區(qū)回到物理內(nèi)存中。
一、有兩個(gè)后臺(tái)守護(hù)進(jìn)程用于管理偽內(nèi)存子系統(tǒng):(SWAP)
1.vhand
為了使系統(tǒng)能有效地運(yùn)行,會(huì)始終盡力保持可用頁面高于閥值。只要可用內(nèi)存不低于被稱為lossfree的閥值,就不會(huì)發(fā)生頁面切換。當(dāng)可用內(nèi)存低于該閥值時(shí),vhand將選擇最近未訪問的頁面并將其調(diào)到交換區(qū),然后將這些頁面加入可分配頁面列表,這稱為page-out。當(dāng)進(jìn)程要訪問頁面而該頁面不在內(nèi)存中時(shí)會(huì)發(fā)生page fault。無論是數(shù)據(jù)從交換區(qū),還是執(zhí)行代碼從硬盤,該頁面都會(huì)通過page-in調(diào)入內(nèi)存。
非常大的內(nèi)存需求的系統(tǒng)上(如運(yùn)行許多大程序的系統(tǒng)),頁面交換守護(hù)程序會(huì)忙于頁面的調(diào)入和調(diào)出,從而使系統(tǒng)花所有的時(shí)間在頁面交換上,而沒有足夠的時(shí)間運(yùn)行程序。當(dāng)這種現(xiàn)象發(fā)生時(shí),系統(tǒng)性能會(huì)顯著下降,這時(shí)系統(tǒng)被稱為處于thrashing狀態(tài)。如果你懷疑你的系統(tǒng)處于thrashing狀態(tài),可用ps來檢查vhand所使用的CPU時(shí)間,如果vhand占用大量的CPU時(shí)間,考慮購買更多的內(nèi)存!
2.swapper
swap可追溯到早期UNIX通過將整個(gè)進(jìn)程空間在內(nèi)存和二級(jí)存儲(chǔ)之間的交換來管理物理內(nèi)存資源的方法,許多現(xiàn)代的偽內(nèi)存管理系統(tǒng)不再將整個(gè)進(jìn)程空間進(jìn)行交換,因?yàn)檫@種方法使系統(tǒng)花費(fèi)太多的時(shí)間處理I/O,而不是實(shí)際的工作。整區(qū)交換被deactivation機(jī)制所替代,該方法允許使用頁面交換技術(shù)將長期未用的頁面置換出內(nèi)存,頁面交換是一種更有效的管理偽內(nèi)存的機(jī)制。
當(dāng)系統(tǒng)處于thrashing狀態(tài)時(shí),或當(dāng)可用內(nèi)存低于另一個(gè)閥值minfree時(shí),swapper將被激活。Swapper使進(jìn)程變?yōu)榉羌せ顮顟B(tài),該狀態(tài)可防止進(jìn)程運(yùn)行,因此減少了他們所占頁面被訪問的頻率。這使vhand有機(jī)會(huì)將該進(jìn)程未訪問的頁面調(diào)到交換區(qū),釋放占用物理內(nèi)存中的頁面。當(dāng)swapper檢測(cè)到可用內(nèi)存已恢復(fù)到minfree以上且系統(tǒng)不再處于thrashing時(shí),系統(tǒng)會(huì)激活被置于非激活狀態(tài)的進(jìn)程。
二、交換區(qū)的類型:
主交換區(qū) 系統(tǒng)引導(dǎo)時(shí)至少要有一個(gè)設(shè)備交換區(qū)可用,這就是主交換區(qū)。主交換區(qū)默認(rèn)放在根盤上。(主交換區(qū)可以不在/etc/fstab中出現(xiàn))
輔交換區(qū) 可以使用除主交換區(qū)以外的其他交換區(qū),即輔交換區(qū)。若是用設(shè)備交換區(qū)作為輔交換區(qū),請(qǐng)將其設(shè)置在非根盤上,以獲得更好的性能。文件系統(tǒng)交換區(qū)總是輔交換區(qū)。
如何更該主交換區(qū) 首先確保將要成為主交換區(qū)的交換區(qū)時(shí)可用的交換區(qū)
用lvrmboot取消先前的定義:lvrmboot –s /dev/vg00
用lvlnboot重新定義主交換區(qū):lvlnboot -s /dev/vg00/lv_swap
重啟:shutdown –ry 0
三、關(guān)于交換區(qū)的幾個(gè)內(nèi)核參數(shù):
1. mxswapchunks:限制交換區(qū)的塊的數(shù)值,默認(rèn)為256個(gè)。
2. schunk:交換塊的大小,默認(rèn)是2(MB).
3. nswapdev:定義了最大可以動(dòng)態(tài)設(shè)置的交換設(shè)備的數(shù)量,默認(rèn)是10,最大為25。
4. nswapfs:定義了為文件系統(tǒng)交換區(qū)啟用的最多文件系統(tǒng)數(shù),默認(rèn)是10,最大是25。
四、關(guān)于用/etc/fstab啟用交換區(qū)
在/etc/fstab文件中定義交換區(qū),以保證其在系統(tǒng)引導(dǎo)時(shí)被起用。引導(dǎo)時(shí),swapon –a 命令啟用所有/etc/fstab里的交換條目。以下是fstab中的內(nèi)容:
/dev/vg00/lvol3 / hfs defaults 0 1
/dev/vg00/lvol1 /stand hfs defaults 0 1
/dev/vg00/lvol4 /home hfs defaults 0 2
/dev/vg00/lvol5 /opt hfs defaults 0 2
/dev/vg00/lvol6 /tmp hfs defaults 0 2
/dev/vg00/lvol7 /usr hfs defaults 0 2
/dev/vg00/lvol8 /var hfs defaults 0 2
/dev/vg00/lvol9 /log hfs rw,suid 0 2
/dev/vg00/lv_swap1 /paging hfs defaults 0 2
/dev/dsk/c0t1d0 . swap defaults 0 0
/dev/dsk/c0t1d0 . swap end 0 0
/dev/vg00/lv_swap . swap defaults 0 0
/dev/vg00/lv_swap1 /paging swapfs pri-4,lim=4m 0 0
注意:1.主交換區(qū)可以不出現(xiàn)在該文件中。
2.在文件系統(tǒng)的交換區(qū)的條目前,一定有把該文件系統(tǒng)mount上的條目。
五、選擇設(shè)備交換區(qū)的指導(dǎo)方針:
1. 從性能的角度看,提供相同大小空間的在不同硬盤上的兩個(gè)交換區(qū)比一個(gè)交換區(qū)好。同樣由于性能的緣故,同一硬盤上不應(yīng)該存在多個(gè)交換區(qū)。
2. 如果使用LVM,則可將多個(gè)設(shè)備交換區(qū)設(shè)定在不同硬盤的邏輯卷上。
3. 設(shè)備交換區(qū)應(yīng)該具有相同的大小,否則,當(dāng)所有小交換區(qū)空間被使用完畢后,不可能交替使用交換區(qū)。
本文來自ChinaUnix博客,如果查看原文請(qǐng)點(diǎn):http://blog.chinaunix.net/u/16427/showart_97323.html |
|