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