linux内存管理简介,Linux操作系统的内存管理特性简介 (3)
輸出的第一行(Mem:)顯示出物理內(nèi)存的使用情況。總和(total)列中并沒有顯示出被內(nèi)核使用的內(nèi)存,它通常將近一兆字節(jié)。已用列(used column)顯示出已用內(nèi)存的總和(第二行沒有把緩沖算進(jìn)來(lái))。空閑列(free column)顯示了所有未被使用的空閑內(nèi)存。共享列(shared column)顯示出了被幾個(gè)進(jìn)程共享的內(nèi)存的大小;共享的內(nèi)存越多,情況就越好。緩存列(buffer column)顯示出了當(dāng)前磁盤緩存的大小。已緩沖列(cached column)顯示出了已使用的緩存的大小。
最后一行(Swap:)顯示出了與交換空間相應(yīng)的信息。如果這一行的數(shù)值都是零,表示你的交換空間沒有被擊活。
也可通過(guò)用top命令來(lái)獲得同樣的信息,或者使用proc文件系統(tǒng)中的文件/proc/meminfo 。通常要取得指定交換空間的使用情況是困難的。
可以使用命令swapoff來(lái)移去一個(gè)交換空間。通常沒有必要這樣做,但臨時(shí)交換空間除外。一般,在交換空間中的頁(yè)面首先被換入內(nèi)存;如果此時(shí)沒有足夠的物理內(nèi)存來(lái)容納它們又將被交換出來(lái)(到其他的交換空間中)。如果沒有足夠的虛擬內(nèi)存來(lái)容納所有這些頁(yè)面,Linux就會(huì)波動(dòng)而不正常;但經(jīng)過(guò)一段較長(zhǎng)的時(shí)間Linux會(huì)恢復(fù),但此時(shí)系統(tǒng)已不可用了。在移去一個(gè)交換空間之前,你應(yīng)該檢查(例如,用free)是否有足夠的空閑內(nèi)存。
任何由swapon –a而自動(dòng)被使用的所有交換空間都能夠用swapoff –a命令移去;該命令參考/etc/fstab文件來(lái)確定移去什么。任何手工設(shè)置使用的交換空間將始終可以被使用。
有時(shí),盡管有許多的空閑內(nèi)存,仍然會(huì)有許多的交換空間正被使用。這是有可能發(fā)生的,例如如果在某一時(shí)刻有進(jìn)行交換的必要,但后來(lái)一個(gè)占用很多物理內(nèi)存的大進(jìn)程結(jié)束并釋放內(nèi)存時(shí)。被交換出的數(shù)據(jù)并不會(huì)自動(dòng)地交換進(jìn)內(nèi)存,除非有這個(gè)需要時(shí)。此時(shí)物理內(nèi)存會(huì)在一段時(shí)間內(nèi)保持空閑狀態(tài)。對(duì)此并沒有什么可擔(dān)心的,但是知道了是怎么一回事我們也就放心了。
許多操作系統(tǒng)使用了虛擬內(nèi)存的方法。因?yàn)樗鼈儍H在運(yùn)行時(shí)才需要交換空間,以即決不會(huì)在同一時(shí)間使用交換空間,因此,除了當(dāng)前正在運(yùn)行的操作系統(tǒng)的交換空間,其它的就是一種浪費(fèi)。所以讓它們共享一個(gè)交換空間將會(huì)更有效率。這是可能的,但需要有一定的了解。在HOWTO技巧文檔中含有如何實(shí)現(xiàn)這種做法的一些建議。
有些人會(huì)對(duì)你說(shuō)需要用物理內(nèi)存的兩倍容量來(lái)分配交換空間,但這是不對(duì)的。下面是合適的做法:
。估計(jì)你的總內(nèi)存需求。這是某一時(shí)刻你所需要的最大的內(nèi)存容量,也就是在同一時(shí)刻你想運(yùn)行的所有程序所需內(nèi)存的總和。通過(guò)同時(shí)運(yùn)行所有的程序你可以做到這一點(diǎn)。
例如,如果你要運(yùn)行X,你將給它分配大約8MB內(nèi)存,gcc需要幾兆字節(jié)(有些文件要求異呼尋常的大量的內(nèi)存量,多至幾十兆字節(jié),但通常約4兆字節(jié)應(yīng)該夠了),等等。內(nèi)核本身要用大約1兆字節(jié)、普通的shell以及其它一些工具可能需要幾百千字節(jié)(就說(shuō)總和要1兆字節(jié)吧)。并不需要進(jìn)行精確的計(jì)算,粗率的估計(jì)也就足夠了,但你必須考慮到最壞的情況。
注意,如果會(huì)有幾個(gè)人同時(shí)使用這個(gè)系統(tǒng),他們都將消耗內(nèi)存。然而,如果兩個(gè)人同時(shí)運(yùn)行一個(gè)程序,內(nèi)存消耗的總量并不是翻倍,因?yàn)榇a頁(yè)以及共享的庫(kù)只存在一份。
Free以及ps命令對(duì)估計(jì)所需的內(nèi)存容量是很有幫助的。
對(duì)第一步中的估計(jì)放寬一些。這是因?yàn)閷?duì)程序在內(nèi)存中占用多少的估計(jì)通常是不準(zhǔn)的,因?yàn)槟愫芸赡芡魩讉€(gè)你要運(yùn)行的程序,以及,確信你還要有一些多余的空間用于以防萬(wàn)一。這需幾兆字節(jié)就夠了。(多分配總比少分配交換空間要好,但并不需要過(guò)分這樣以至于使用整個(gè)硬盤,因?yàn)椴挥玫慕粨Q空間是浪費(fèi)的空間;參見后面的有關(guān)增加交換空間。)同樣,因?yàn)樘幚頂?shù)值更好做,你可以將容量值加大到整數(shù)兆字節(jié)。
基于上面的計(jì)算,你就知道了你將需要總和為多少的內(nèi)存。所以,為了分配交換空間,你僅需從所需總內(nèi)存量中減去實(shí)際物理內(nèi)存的容量,你就知道了你需要多少的交換空間。(在某些UNIX版本中,你還需要為物理內(nèi)存的映像分配空間,所以第二步中算出的總量正是你所需要的交換空間的容量,而無(wú)需再做上述中的減法運(yùn)算了。)
如果你計(jì)算出的交換空間容量遠(yuǎn)遠(yuǎn)大于你的物理內(nèi)存(大于兩倍以上),你通常需要再買些內(nèi)存來(lái),否則的話,系統(tǒng)的性能將非常低。
有幾個(gè)交換空間是個(gè)好主意,即使計(jì)算指出你一個(gè)都不需要。Linux系統(tǒng)常常動(dòng)不動(dòng)就使用交換空間,以保持盡可能多的空閑物理內(nèi)存。即使并沒有什么事情需要內(nèi)存,Linux也會(huì)交換出暫時(shí)不用的內(nèi)存頁(yè)面。這可以避免等待交換所需的時(shí)間:當(dāng)磁盤閑著,就可以提前做好交換。
可以將交換空間分散在幾個(gè)硬盤之上。針對(duì)相關(guān)磁盤的速度以及對(duì)磁盤的訪問(wèn)模式,這樣做可以提高性能。你可能想實(shí)驗(yàn)幾個(gè)方案,但是你要認(rèn)識(shí)到這些實(shí)驗(yàn)常常是非常困難的。不要相信其中一個(gè)方案比另一個(gè)好的說(shuō)法,因?yàn)椴⒉豢偸沁@樣的。
總結(jié)
以上是生活随笔為你收集整理的linux内存管理简介,Linux操作系统的内存管理特性简介 (3)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: IOS 开发中 Whose view
- 下一篇: APMCM亚太地区数学建模历年赛题