?? unix系統(tǒng)管理-第十一章:管理交換空間.txt
字號:
UNIX系統(tǒng)管理-第十一章:管理交換空間
目標(biāo)
完成這一章,你能夠做以下事情:
了解需求分頁的概念。
了解物理內(nèi)存,有效內(nèi)存,和可鎖定內(nèi)存的含義。
確定系統(tǒng)中物理內(nèi)存,有效內(nèi)存,和可鎖定內(nèi)存的數(shù)目。
確定系統(tǒng)現(xiàn)有的和正在使用的交換區(qū)的數(shù)量。
在命令行中配置設(shè)備交換區(qū)。
在命令行中配置文件系統(tǒng)交換區(qū)。
取消交換分區(qū)。
選擇文件系統(tǒng)交換分區(qū)和設(shè)備交換分區(qū)的時候需要考慮事項
11.1 系統(tǒng)內(nèi)存
物理內(nèi)存就是安裝在你計算機中的隨機存取存儲器(RAM)。在系統(tǒng)啟動的時候,在系統(tǒng)控制臺上會顯示已安裝的物理內(nèi)存的數(shù)目:
Physical: xxxxxxx kbytes
并不是所有的物理內(nèi)存都能被操作系統(tǒng)使用。一些物理內(nèi)存會被內(nèi)核代碼和數(shù)據(jù)結(jié)構(gòu)占用。剩下的內(nèi)存被稱為有效內(nèi)存,被系統(tǒng)用作需求分頁。在系統(tǒng)引導(dǎo)時,會顯示有效內(nèi)存的數(shù)目:
Available: xxxxxxx kbytes
全部或部分的有效內(nèi)存都可以被一個子系統(tǒng)或是用戶進程鎖定。被鎖定的內(nèi)存不能被交換到磁盤上去。典型的情況是,被鎖定的內(nèi)存頁中保存有頻繁存取的程序代碼或數(shù)據(jù)結(jié)構(gòu),通過將程序代碼和數(shù)據(jù)結(jié)構(gòu)常駐內(nèi)存,可以提高進程的執(zhí)行效率。但是如果系統(tǒng)的大部分的內(nèi)存都被鎖定會導(dǎo)致系統(tǒng)死鎖,所以必須要有一些未鎖定的內(nèi)存存在來避免系統(tǒng)死鎖。
在系統(tǒng)啟動的時候,能夠被鎖定的內(nèi)存的總數(shù)會顯示出來:
Lockeable: xxxxxxxx kbytes
有效內(nèi)存減去被子系統(tǒng)或用戶進程實際鎖定的內(nèi)存就是虛擬內(nèi)存分頁實際可用的內(nèi)存。系統(tǒng)參數(shù),unlockable_mem 中保存了不能被鎖定的內(nèi)存的大小。
注意:dmesg 命令可以顯示系統(tǒng)啟動的時候顯示的信息,這些信息包括物理內(nèi)存的數(shù)目,有效內(nèi)存,和可鎖定內(nèi)存的大小。
11.2 什么是交換分區(qū)
交換分區(qū)是在高速存儲設(shè)備上的一塊區(qū)域,交換區(qū)是為虛擬存儲系統(tǒng)進行分頁進程而保留的。物理內(nèi)存是系統(tǒng)中的有限的資源,這意味著在同一個時刻只能有一定數(shù)量的進程可以使用物理內(nèi)存,甚至?xí)性S多的進程實際上處于等待運行或等待執(zhí)行當(dāng)中。當(dāng)進程運行的時候,程序的數(shù)據(jù)頁和數(shù)據(jù)結(jié)構(gòu)(文本)從內(nèi)存中被拷貝到磁盤上或從磁盤上拷貝到內(nèi)存中(在需要的時候),這就被稱為需求分頁。通常,程序的文本部分在程序執(zhí)行的時候不會更改。所以在需要的時候,文本可以從包含可執(zhí)行程序的文件中被拷貝到RAM中,執(zhí)行中的程序的數(shù)據(jù)頁會更改,因此,如果一個數(shù)據(jù)頁必須從RAM移動到另外的空間,必須先將其拷貝到交換空間。
分頁
內(nèi)核通常會保持一定數(shù)量的空閑內(nèi)存頁來確保系統(tǒng)的效率。這個數(shù)字稱為lotsfree,只要不低于這個數(shù)字,就不會發(fā)生分頁行為,當(dāng)空閑內(nèi)存頁的數(shù)目小于這個數(shù)字的時候,一個稱為vhand的進程就會啟動,這個守護進程會選擇那些最近沒有被訪問的內(nèi)存頁,在需要的時候?qū)⑦@些內(nèi)存頁拷貝到交換分區(qū)中。這個過程被稱為page out ,當(dāng)一個進程試圖存取當(dāng)前內(nèi)存中不存在地址的時候會發(fā)生page fault,這時,這個內(nèi)存頁會被拷貝到RAM中。
當(dāng)系統(tǒng)有許多的請求內(nèi)存需要時(例如系統(tǒng)中有許多的大的進程運行),分頁守護進程可能變得十分繁忙,忙于交換內(nèi)存頁的進出,這會導(dǎo)致系統(tǒng)花費太多的時間在分頁過程中,以至于沒有足夠的時間來運行其他的進程。在這種情況下,系統(tǒng)的性能下降的十分快,有時會導(dǎo)致系統(tǒng)沒有任何地反映,在這種情況下,稱為系統(tǒng)顛簸,因為系統(tǒng)的內(nèi)部開銷遠大于生產(chǎn)性的工作。
交換器(swapper)
術(shù)語交換最早可以追溯到早期的unix用來管理物理內(nèi)存的方式,其工作原理是在主內(nèi)存和二級存貯器之間移動整個進程。現(xiàn)代的大多數(shù)虛擬內(nèi)存系統(tǒng)不再交換整個進程,因為這種方式會導(dǎo)致系統(tǒng)消耗大多數(shù)的時間在I/O操作上,而沒有時間作實際的工作。這種方式已經(jīng)被一種非活動性的方案所代替,這種方案允許內(nèi)存頁以一種分頁的機制被推出。分頁是一種更有效的管理虛擬內(nèi)存的機制。
當(dāng)系統(tǒng)開始顛簸的時候,或當(dāng)空閑內(nèi)存的數(shù)量低于另外一個界限的時候,(這個界限被稱為minfree),交換器會被激活,然后交換器會停止進程的活動,這樣就降低了新的內(nèi)存頁被存取的速度。哪些屬于被停止進程的內(nèi)存頁不會被訪問,并且會成為分頁守護進程釋放的內(nèi)存候選對象。當(dāng)交換器檢查到有效的內(nèi)存數(shù)量回升到minfree界限之上,系統(tǒng)不再處于無效狀態(tài),它會重新激活被停止的進程。
交換區(qū)預(yù)留
在進程創(chuàng)建的時候,交換子系統(tǒng)會預(yù)留交換空間,但是不會在磁盤上指定交換空間,除非在內(nèi)存頁需要交換到磁盤上的時候。在進程創(chuàng)建時預(yù)留的交換空間可以防止交換器耗盡交換空間。
當(dāng)系統(tǒng)不能夠為一個新的進程預(yù)留足夠多的交換空間的時候,進程就不能啟動,同樣,如果運行中的進程試圖動態(tài)增加更多的內(nèi)存,更多的交換空間會被預(yù)留。如果這個時候沒有足夠的交換空間,這個進程就會被殺掉。
交換區(qū)預(yù)留可以防止系統(tǒng)耗盡交換空間,它也會在所有的交換空間都被使用的情況下阻止進程的建立。
評估交換區(qū)的需求
在你安裝系統(tǒng)之前,你應(yīng)該了解你需要多少的交換空間。多數(shù)的應(yīng)用程序的正常運行需要一個最小數(shù)量的交換空間。這個數(shù)字通常在應(yīng)用程序的隨機文檔中有說明。
系統(tǒng)管理員應(yīng)該監(jiān)視交換空間的使用情況,并且在需要時對其進行調(diào)整。在下一章中我們會了解如何進行這種調(diào)整。
11.3 交換空間的類型
交換區(qū)的類型
設(shè)備交換分區(qū)
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -