如何降低Linux 內(nèi)存開銷
物理內(nèi)存不足可能會(huì)嚴(yán)重影響 Linux® 的性能。在本文中,我們將學(xué)習(xí)如何精確地度量 Linux 系統(tǒng)所使用的內(nèi)存量。還將以 Ubuntu 系統(tǒng)為例學(xué)習(xí)有關(guān)降低內(nèi)存需求的實(shí)踐建議。
Linux 廣受追捧的一個(gè)優(yōu)點(diǎn)是它比 Microsoft® Windows® 的效率更高,因此在不太前沿的硬件上也能很好地執(zhí)行。對(duì)于依然使用 Windows 98 時(shí)代的機(jī)器的人來說,最新最卓越的軟件(特別是安全補(bǔ)?。┮呀?jīng)不再支持這些機(jī)器,因此這種性能優(yōu)勢(shì)使 Linux 成為頗具吸引力的升級(jí)產(chǎn)品。
然而,問題的真相在于雖然 Linux 內(nèi)核仍然可以配置成合理的大小和效率,但由于新計(jì)算機(jī)的處理能力大大加強(qiáng),很多 Linux 桌面環(huán)境(例如 KDE 和 GNOME)都增加了許多特性。因此,在較老的硬件上默認(rèn)安裝大多數(shù)發(fā)行版時(shí),提供的性能都不是一流的。很多現(xiàn)代應(yīng)用程序也是如此,例如,F(xiàn)irefox 之類的 Web 瀏覽器和 OpenOffice 之類的辦公套件均功能完備,但是嘗試在只有 128MB RAM 的機(jī)器上運(yùn)行這些程序,可能會(huì)成為非常痛苦的體驗(yàn)!
該怎么辦?丟掉所有舊的硬件然后升級(jí)?還是安裝 1995 年左右的 Linux 發(fā)行版?(如果您決定走這條路,我記得使用 Linux-FT 是一種很好的體驗(yàn)。)
不要擔(dān)心:多年以前,Linux 社區(qū)中的人就已經(jīng)認(rèn)識(shí)到這個(gè)問題,Linux 內(nèi)核和發(fā)行版的一大特性(有人喜歡說 這個(gè) 偉大特性)在于其能夠定制。本文將介紹如何對(duì) Linux 系統(tǒng)進(jìn)行裁減,以便在小容量的硬件上獲得更好的性能。
內(nèi)存的作用
在大多數(shù)情況下,桌面操作系統(tǒng)性能的一個(gè)最重要因素就是系統(tǒng)可用的內(nèi)存量。雖然擁有快速的處理器效果不錯(cuò),但是如果沒有足夠的物理內(nèi)存保證一直很好地利用處理器,系統(tǒng)可能會(huì)花費(fèi)大量時(shí)間用于在物理內(nèi)存和交換空間之間的交換數(shù)據(jù)(這種情況稱為 磁盤抖動(dòng)),而 CPU 的大部分時(shí)間都是空閑的。因此對(duì)于老式的系統(tǒng)來說,額外添加內(nèi)存通常是提高性能的最簡(jiǎn)單方法。然而,有很多原因決定了這種方法不太可能,例如缺少空閑插槽,對(duì)于一些系統(tǒng)(尤其是筆記本或基于 RAMBUS 的系統(tǒng))來說,則是缺少買得起的 RAM,以及不希望在一臺(tái)過期的系統(tǒng)上花更多錢這個(gè)容易理解的心理。
如果無法或不愿意升級(jí) RAM,接下來最好減少系統(tǒng)上的 RAM 需求。本文將展示為 Linux 機(jī)器打造內(nèi)存天堂 5 個(gè)簡(jiǎn)單步驟。
步驟 1:選擇正確的桌面環(huán)境
惟一需要做的重要選擇就是要安裝的 Linux 發(fā)行版和桌面環(huán)境(DE)。盡管這是截然不同的選擇,但是發(fā)行版的選擇可能影響 DE 的選擇。雖然沒有任何東西能夠阻擋您在系統(tǒng)上安裝軟件,例如在 Ubuntu 上安裝 Fluxbox;但是您會(huì)發(fā)現(xiàn)如果簡(jiǎn)單地使用發(fā)行版所附帶的默認(rèn) DE,一切就會(huì)輕松很多。
在本文方案中,目標(biāo)是尋找面向桌面的簡(jiǎn)單發(fā)行版,以便于新用戶使用。我從 Ubuntu 6.10 開始入手,它和 GNOME 2.16 一起推出。
對(duì)于基本系統(tǒng)來說,我選擇了一臺(tái)配有 800MHz 處理器和 256MB RAM 的老機(jī)器。我將執(zhí)行了兩次測(cè)試,一次使用全部 256MB RAM 正常引導(dǎo),一次在內(nèi)核行上附加了 mem=128M,這會(huì)強(qiáng)制內(nèi)核只識(shí)別 128MB 物理內(nèi)存。這樣就可以有效地試驗(yàn) 256MB 和 128MB 的機(jī)器,而不必實(shí)際使用另一臺(tái)物理機(jī)器(也不必反復(fù)從機(jī)器中插拔內(nèi)存)。這個(gè)內(nèi)核行選項(xiàng)能夠足夠近似地模擬 128 MB 的機(jī)器的行為;注意,如果真的只有 128MB 內(nèi)存,可能會(huì)遇到其他問題,舉例來說,要使用 Ubuntu,必須使用一個(gè)不同于普通機(jī)器磁盤的安裝盤,它是專門為少于 192MB RAM 的機(jī)器準(zhǔn)備的。
為了了解基本水平的內(nèi)存使用情況,引導(dǎo)該系統(tǒng),登錄到桌面系統(tǒng),并啟動(dòng)一個(gè)終端(在本文后面的內(nèi)容中,我將這種設(shè)置稱為 基本使用水平(base level));然后使用 free 命令來檢查系統(tǒng)中的空閑內(nèi)存量,結(jié)果如清單 1 所示。
清單 1. Ubuntu 在 256MB 機(jī)器上的基本使用水平
ubuntu # free
total used free shared buffers cached
Mem: 255988 231704 24284 0 6432 139292
-/+ buffers/cache: 85980 170008
Swap: 746980 0 746980
第一行說明 256MB RAM 中有 231MB “正在使用”。下一行告訴我們盡管有 231MB 內(nèi)存正在使用,但是應(yīng)用程序只使用了其中的 86MB;緩沖區(qū)和高速緩存使用了其余的內(nèi)存。
要評(píng)價(jià)性能,該清單中最重要的部分是 Swap 一行;它告訴我們當(dāng)前沒有使用任何交換空間,這說明目前沒有真正遇到內(nèi)存問題。系統(tǒng)現(xiàn)在可以全部裝入物理內(nèi)存,而不必借助慢速的基于磁盤的交換空間。
然后,為了了解系統(tǒng)的日常使用情況,啟動(dòng)一個(gè) Web 瀏覽器(Firefox 2.0),然后用其打開 developerWorks,將即時(shí)消息客戶機(jī)(Gaim)連接到 MSN,并使用文件管理器來瀏覽文件夾,又在 OpenOffice 中打開一個(gè)相當(dāng)大的 Microsoft Word 格式的文檔。(在本文剩余的部分中,將這種設(shè)置稱為 輕量級(jí)使用水平(light usage level)。)
一旦成功加載這些之后, free 命令將如清單 2 所示。
清單 2. Ubuntu 在 256MB 機(jī)器上的輕量級(jí)使用水平
ubuntu # free
total used free shared buffers cached
Mem: 255988 252196 3792 0 21276 87500
-/+ buffers/cache: 143420 112568
Swap: 746980 18676 728304
可以看到內(nèi)存部分稍有變化?,F(xiàn)在應(yīng)用程序使用了 143MB 的物理內(nèi)存,其余的內(nèi)存均被緩沖區(qū)占用;另外,系統(tǒng)現(xiàn)在使用了 18MB 的交換空間。在這種輕量級(jí)的辦公任務(wù)情況下,系統(tǒng)的可用性通常看起來很不錯(cuò),但是已經(jīng)沒有太多發(fā)展空間了,可能無法進(jìn)行需要資源更多的操作,例如編輯巨大的數(shù)字照片或視頻文件,因?yàn)橄到y(tǒng)很快就會(huì)在處理時(shí)發(fā)生停歇。
為了了解系統(tǒng)在只有 128MB 時(shí)的執(zhí)行情況,我重新引導(dǎo)了系統(tǒng),并在內(nèi)核行后面附加了 mem=128M 選項(xiàng),就像前面介紹的一樣。在與清單 1 同樣的基本使用水平上,使用 128MB RAM 得到的結(jié)果如清單 3 所示。
清單 3. Ubuntu 在 128MB 機(jī)器上的基本使用水平
ubuntu # free
total used free shared buffers cached
Mem: 126100 121464 4636 0 1636 37000
-/+ buffers/cache: 82828 43272
Swap: 746980 17924 729056
可以看到現(xiàn)在只使用了 128MB 內(nèi)存,已經(jīng)開始使用交換空間了,并且現(xiàn)在實(shí)際上還沒有開始執(zhí)行任何操作。
啟動(dòng)同一組應(yīng)用程序產(chǎn)生的結(jié)果如清單 4 所示。
清單 4. Ubuntu 在 128MB 機(jī)器上的輕量級(jí)使用水平
ubuntu # free
total used free shared buffers cached
Mem: 126100 123608 2492 0 392 51208
-/+ buffers/cache: 72008 54092
Swap: 746980 98452 648528
從這些數(shù)字中可以預(yù)測(cè)出,現(xiàn)在該機(jī)器在正常使用時(shí)的響應(yīng)能力非常低,對(duì)于這些簡(jiǎn)單任務(wù)來說基本上還可以使用,但是會(huì)非常頻繁地訪問磁盤,我肯定不喜歡使用它作為自己的主要機(jī)器。可以看到應(yīng)用程序需要的內(nèi)存總量大約是 170MB,但內(nèi)存中只裝入了 72MB,因此 98MB 被轉(zhuǎn)移到交換空間。這有助于解釋系統(tǒng)響應(yīng)能力降低的原因!
下一組測(cè)試,我決定使用 Xubuntu,這是與 Ubuntu 有關(guān)項(xiàng)目的發(fā)行套件。這個(gè)發(fā)行版與 Ubuntu 非常類似,但使用了 Xfce 4.4 Beta 2 DE,而不是 GNOME。與更為流行的 GNOME 和 KDE 項(xiàng)目不同(它們強(qiáng)調(diào)的是實(shí)現(xiàn)最佳功能),Xfce 被設(shè)計(jì)成輕量級(jí)的,因此有望更好地滿足過期硬件的要求。我們將使用這個(gè)發(fā)行版執(zhí)行與 Ubuntu 相同的測(cè)試。
在清單 5 中可以看出基本 DE 大約少使用了 25MB 的應(yīng)用程序內(nèi)存,并且緩沖區(qū)和緩存所使用的內(nèi)存顯著少于 Ubuntu(這可能意味著文件操作較少)。
清單 5. Xubuntu 在 256MB 機(jī)器上的基本使用水平
xubuntu # free
total used free shared buffers cached
Mem: 255988 170964 85024 0 6004 104700
-/+ buffers/cache: 60260 195728
Swap: 746980 0 746980
在清單 6 中,再次啟動(dòng)那套測(cè)試應(yīng)用程序(Web 瀏覽器、IM 客戶機(jī)和文字處理器)??梢钥吹綄?duì)于相同的應(yīng)用程序組合,所需的內(nèi)存比 Ubuntu 大約減少了 20MB(其中 126MB 位于物理內(nèi)存,17MB 位于交換空間,總共是 143 MB;在 Ubuntu 上是 143MB 加 18MB,總共是 161MB)。
清單 6. Xubuntu 在 256MB 機(jī)器上的輕量級(jí)使用水平
xubuntu # free
total used free shared buffers cached
Mem: 255988 252180 3808 0 1972 124008
-/+ buffers/cache: 126200 129788
Swap: 746980 16956 730024
清單 7 給出了只有 128MB RAM 時(shí)的基本使用水平。這次這個(gè)內(nèi)存有限的系統(tǒng)表現(xiàn)良好,沒有使用交換空間。
清單 7. Xubuntu 在 128MB 機(jī)器上的基本使用水平
xubuntu # free
total used free shared buffers cached
Mem: 126100 123228 2872 0 4252 60484
-/+ buffers/cache: 58492 67608
Swap: 746980 0 746980
在清單 8 中,再次啟動(dòng)測(cè)試應(yīng)用程序。雖然與 Ubuntu 相比,這個(gè)系統(tǒng)的表現(xiàn)更好,但是它依然使用了大量的交換空間,這個(gè)機(jī)器依然有些緩慢(只稍微比 Ubuntu 好一些)。
清單 8. Xubuntu 在 128MB 機(jī)器上的輕量級(jí)使用水平
xubuntu # free
total used free shared buffers cached
Mem: 126100 123980 2120 0 468 56276
-/+ buffers/cache: 67236 58864
Swap: 746980 64516 682464
從這些數(shù)字可以看出,Xubuntu 在整個(gè)過程中使用的內(nèi)存通常更少;因此如果您的系統(tǒng)只有 128MB(或更少內(nèi)存),這可能是較好的選擇。
Linux 發(fā)行版的一個(gè)重要特征是它們通常不需要花費(fèi)任何費(fèi)用,因此很容易下載多個(gè)發(fā)行版,然后逐一試用一段時(shí)間,從而確定喜歡使用的發(fā)行版,及其在硬件上的執(zhí)行情況。如果硬件非常有限,可能希望考察一下 Damn Small Linux 之類的發(fā)行版,它宣稱可以在只有 16MB RAM 的 486DX 處理器的系統(tǒng)上運(yùn)行。
由于我的 256MB 系統(tǒng)上還有一點(diǎn)可用空間,所以通常喜歡使用 KDE,因此我嘗試了 Ubuntu 的另一個(gè)派生版本 Kubuntu,它是基于 KDE 的,在內(nèi)存使用方面大致介于 Xubuntu 和 Ubuntu 之間。作為參考,清單 9 展示了 Kubuntu 的基本使用水平。
清單 9. Kubuntu 在 256MB 機(jī)器上的基本使用水平
kubuntu # free
total used free shared buffers cached
Mem: 255988 244736 11252 0 7612 160008
-/+ buffers/cache: 77116 178872
Swap: 746980 0 746980
步驟 2:選擇適當(dāng)?shù)膽?yīng)用程序
選定了發(fā)行版之后,接下來的事情是選擇要使用的應(yīng)用程序組合。不同應(yīng)用程序的內(nèi)存需求可能差異很大;有時(shí)需要在規(guī)模和功能之間進(jìn)行權(quán)衡,但是在另外一些情況下,即使功能相同的應(yīng)用程序?qū)?nèi)存的需求也可能存在巨大差異。
為了度量本文的內(nèi)存使用情況,我們將使用 exmap 工具。該工具比 ps 或 top 更精確,因?yàn)樗紤]了多個(gè)應(yīng)用程序使用的共享庫。例如,如果兩個(gè)應(yīng)用程序使用了相同的共享庫,各占 1MB 內(nèi)存,ps 會(huì)顯示這兩個(gè)應(yīng)用程序均額外使用了 1MB 內(nèi)存,exmap 則能更準(zhǔn)確地顯示每個(gè)應(yīng)用程序都只使用了 500 KB 內(nèi)存。這種精確性對(duì)于評(píng)價(jià) KDE 和 GNOME 之類的桌面環(huán)境非常重要,因?yàn)樵谶@些情況下應(yīng)用程序之間會(huì)大量使用共享庫。
對(duì)于在下面幾部分討論的每個(gè)應(yīng)用程序,我測(cè)量了 exmap 所生成的 resident 和 effective resident 值。resident 值表示進(jìn)程使用的物理內(nèi)存總量,包括其他進(jìn)程使用的共享庫;該值通常與 ps 或 top 輸出的值相同。effective resident 值是將共享庫占用的內(nèi)存平均分配給各個(gè)共享進(jìn)程得到的;從指定進(jìn)程所消耗的系統(tǒng)內(nèi)存角度來看,該值更加精確。
還需要注意,在確定進(jìn)程的全部?jī)?nèi)存開銷時(shí),還應(yīng)該考慮 mapped 和 effective mapped 的值,它是進(jìn)程中位于交換空間中的那些部分。mapped 值與 resident 值類似,但是它針對(duì)交換空間中的頁面,而不是物理內(nèi)存中的頁面。因此要查看不考慮共享庫時(shí)的數(shù)據(jù),可以將 resident 和 mapped 值加在一起;要查看考慮對(duì)共享庫時(shí)的數(shù)據(jù),就需要將 effective resident 和 effective mapped 值加在一起。在制作該表時(shí),并沒有 記錄這些值,這是因?yàn)閷?duì)于我們的測(cè)試來說,交換空間中并沒有什么進(jìn)程,因此,對(duì)于這些列,exmap 命令輸出結(jié)果的值均為 0。
Web 瀏覽器
對(duì)于表 1 中的各個(gè)瀏覽器,均啟動(dòng)了這個(gè)程序,并打開了 developerWorks 主頁,然后等待它們?nèi)匡@示出來。結(jié)果如表 1 所示。
表 1. Web 瀏覽器的內(nèi)存使用情況比較
應(yīng)用程序 Effective resident 內(nèi)存(KB) Resident 內(nèi)存(KB)
Firefox 27708 35068
Opera 20477 27816
Konqueror 13479 29748
Dillo 2776 6888
Lynx 1101 1540
從該表可以看出,這些瀏覽器的內(nèi)存使用情況存在很大差異,內(nèi)存需求最高的瀏覽器(Firefox)使用的內(nèi)存比需求最低的瀏覽器(Lynx)多了大約 27 倍。這并不是非常公平的比較,因?yàn)?Lynx 并不能實(shí)現(xiàn)同樣的功能(舉例來說,它甚至不能顯示圖形),但這說明,可以根據(jù)需求極大地降低內(nèi)存的使用情況。盡管表 1 中列出的前 3 個(gè)瀏覽器的功能與第一個(gè)瀏覽器的功能多少有些相同,但 Opera 使用的內(nèi)存大約只有 Firefox 的 2/3,Konqueror 使用的內(nèi)存比 Firefox 少一半。
對(duì)于要求不太高的使用需求來說,Dillo 是介于功能完善的瀏覽器和只有少量開銷的 Lynx 之間的折中方案。Dillo 提供了一個(gè) GUI;但在默認(rèn)狀態(tài)下其功能相當(dāng)有限,沒有其他插件時(shí)甚至不支持 SSL!
還需要注意我們對(duì)共享內(nèi)存的使用也進(jìn)行了比較,Konqueror 的執(zhí)行情況比 Firefox 更好,它使用的內(nèi)存大約少 14MB;然而,如果查看一下總體使用情況,Konqueror 也仍然高于 Firefox,但差距不大,大約只有 5MB。這是因?yàn)?Konqueror 大量地使用了 KDE 共享庫,使用 KDE 桌面時(shí),這些庫被加載到各種應(yīng)用程序。然而,如果沒有使用任何其他 KDE 應(yīng)用程序,Opera 將是比 KDE 更佳的選擇。稍后我們將更加詳細(xì)地討論這個(gè)問題。
文字處理器
為了測(cè)試文字處理器,我加載了首次對(duì)表 2 中列出的文字處理器進(jìn)行測(cè)試時(shí)使用的同一個(gè) Microsoft Word 格式的文檔。
表 2. 文字處理器的內(nèi)存使用情況比較
應(yīng)用程序 Effective resident 內(nèi)存(KB) Resident 內(nèi)存(KB)
OpenOffice Writer 70114 81960
AbiWord 58029 65224
KWord(來自 KOffice) 46512 60096
從這些數(shù)字可以明顯看出,OpenOffice Writer 使用的內(nèi)存比 KWord 或 AbiWord 都要多。KWord 使用的內(nèi)存僅次于 OpenOffice,它在正確地顯示 Microsoft Word 格式的文檔方面做得最好。盡管 AbiWord 也可以成功地打開該文檔,但在正確顯示文檔時(shí)會(huì)遇到一些問題,因此如果對(duì)您來說與 Microsoft Office 的協(xié)作非常重要,最好選擇 OpenOffice。
即時(shí)消息客戶機(jī)
為了測(cè)試即時(shí)消息,我使用表 3 給出的 IM 客戶機(jī)分別登錄到 MSN Messenger 帳號(hào)中。
表 3. IM 客戶機(jī)的內(nèi)存使用情況比較
應(yīng)用程序 Effective resident 內(nèi)存(KB) Resident 內(nèi)存(KB)
aMSN 18455 20344
Gaim 13456 21464
Kopete 10988 24176
KMess 7154 19660
此處,Kmess 最適合我,并且它是合理的選擇,因?yàn)槲抑粚?duì)連接到 MSN 感興趣。如果需要使用其他服務(wù),那么 Kopete 似乎是最好的選擇。不過要注意,如果使用不同的 IM 協(xié)議,應(yīng)用程序使用的內(nèi)存可能會(huì)增加;另外,Kmess 是集成的 KDE 應(yīng)用程序,如果沒有使用 KDE,Gaim 可能更適合您。
分析、選擇并不斷重復(fù)
現(xiàn)在您已經(jīng)了解如何分析應(yīng)用程序的內(nèi)存使用情況;可以對(duì)自己感興趣的所有應(yīng)用程序類型簡(jiǎn)單地重復(fù)這個(gè)過程,體驗(yàn)各種可用選擇,直到找到內(nèi)存需求最低又能滿足功能需求的選擇為止。
在上面的 Web 瀏覽器一節(jié)中,您可能會(huì)注意到:在使用應(yīng)用程序時(shí),最節(jié)省內(nèi)存的通常是與桌面環(huán)境緊密集成的應(yīng)用程序。這是因?yàn)檫@些應(yīng)用程序通常大量使用嵌入到 DE 中的共享庫,并且這些共享庫可能早已加載到系統(tǒng)中。舉例來說,Konqueror 是 KDE 的文件管理器和 Web 瀏覽器;因此,它在 KDE 系統(tǒng)上運(yùn)行時(shí)使用的內(nèi)存明顯少于 Firefox,這是因?yàn)樗拇蟛糠止δ芤呀?jīng)通過其他應(yīng)用程序加載到該系統(tǒng)。類似地,如果希望使用 RSS 聚合器,Akregator 可能是很好的選擇,因?yàn)樗瑯臃浅?赡苁褂孟嗤膸臁?
因此,如果您注重內(nèi)存使用情況,則在自己的 系統(tǒng)上執(zhí)行這些測(cè)試非常重要,這是因?yàn)楹茈y通過查看他人的基準(zhǔn)測(cè)試結(jié)果來了解哪個(gè)應(yīng)用程序在您的系統(tǒng)上使用的內(nèi)存較少。
這個(gè)事實(shí)對(duì)于選擇 DE 也有影響。舉例來說,如果真正希望使用 Konqueror,則使用 KDE 作為 DE 可能最為有效。類似地,如果您是 GNOME 用戶,在使用您感興趣的簡(jiǎn)短 KDE 應(yīng)用程序之前需要三思,因?yàn)樗赡軙?huì)使用整個(gè)主機(jī)來加載庫,但只有自己會(huì)使用這些庫。
步驟 3:刪除不希望使用的服務(wù)和設(shè)置
選定發(fā)行版、桌面環(huán)境和應(yīng)用程序組合之后,哪些工作還可以降低使用的內(nèi)存呢?要回答這個(gè)問題,需要對(duì)系統(tǒng)進(jìn)行深入挖掘和配置。借助 exmap,可以分析出系統(tǒng)上正在運(yùn)行的內(nèi)容,然后嘗試刪除不需要的內(nèi)容,并按照自己的需要對(duì)系統(tǒng)進(jìn)行配置。
較好的著手點(diǎn)是系統(tǒng)引導(dǎo)時(shí)自動(dòng)啟動(dòng)的服務(wù),但這樣做需要非常小心,才不至于刪除系統(tǒng)運(yùn)行時(shí)需要的任何內(nèi)容。需要研究具體的發(fā)布版需要哪些內(nèi)容,以及服務(wù)的配置方式,因?yàn)楦鱾€(gè)發(fā)行版的這些內(nèi)容可能有所不同。有些發(fā)行版比其他發(fā)行版差,因?yàn)樗J(rèn)啟動(dòng)很多不需要的服務(wù),例如 Web 服務(wù)器等,這會(huì)占用大量?jī)?nèi)存。
除了系統(tǒng)服務(wù)之外,您可能還希望了解 DE 的配置情況,因?yàn)樗部赡軉?dòng)不需要的服務(wù)。
我的 Kubuntu 系統(tǒng)看起來并沒有啟動(dòng)太多不必要的服務(wù),但是快速查看一下進(jìn)程列表,就會(huì)發(fā)現(xiàn)一些明顯能夠刪除的內(nèi)容:
HPLIP(4.4MB):HP 打印機(jī)和掃描器所使用的服務(wù)。由于這臺(tái)機(jī)器上并沒有連接此類設(shè)備,所以并不需要該服務(wù)。
cupsd(1.1MB):打印機(jī)后臺(tái)處理進(jìn)程。由于這臺(tái)機(jī)器并沒有連接打印機(jī),所以并不需要該服務(wù)。
kbluetoothd(3.2MB):KDE Bluetooth 后臺(tái)處理進(jìn)程。由于這臺(tái)機(jī)器上并沒有 Bluetooth 連接,所以并不需要該服務(wù)。
klipper(1.7MB):KDE 剪切板工具。我沒有考慮使用這個(gè)工具,因此將其禁用。
KMix(4.1MB):KDE 音頻合成器。并不是所有時(shí)間都需要運(yùn)行它,因?yàn)槲彝ㄟ^外部喇叭來調(diào)節(jié)音量。
只需花 5 分鐘進(jìn)行配置,就能節(jié)省 14MB 左右的內(nèi)存,與最初大約節(jié)省 77MB 相比,這是不錯(cuò)的著手點(diǎn)。
深入了解您的 DE 和其他大型應(yīng)用程序的設(shè)置非常值得,因?yàn)橛行┰O(shè)置可能會(huì)影響所使用的內(nèi)存量。舉例來說,通過減少虛擬桌面的個(gè)數(shù),也許可以節(jié)省一些內(nèi)存,使用較大的位圖作為背景時(shí)尤其如此。關(guān)閉一些奇異的顯示特效也可能有所幫助。
步驟 4:期望要適當(dāng)
在使用舊硬件時(shí),應(yīng)該考慮到該機(jī)器的局限,并正確地進(jìn)行操作。舉例來說,如果希望編輯一組照片,請(qǐng)不要同時(shí)打開所有照片。這樣只會(huì)不必要地消耗內(nèi)存。如果依次打開,并且編輯之后立即將其關(guān)閉,就會(huì)簡(jiǎn)單很多。類似地,如果您正在嘗試捕獲并編輯一些視頻,請(qǐng)考慮單獨(dú)捕獲每一個(gè)屏幕,而不要一次捕獲所有屏幕;如果正在創(chuàng)建包含圖形展示的大型文檔,則在編輯完文本之前不要添加圖片。
步驟 5:優(yōu)化系統(tǒng)
最后一個(gè)步驟是查看系統(tǒng)中的內(nèi)存大戶,并找出是否可以從某處節(jié)省一些內(nèi)存。有很多節(jié)省內(nèi)存的機(jī)會(huì),但性能就會(huì)有所下降,對(duì)于大多數(shù)人來說,對(duì)性能產(chǎn)生的負(fù)面影響和所需的工作量,使得這樣做非常不值得。不過,可以考慮下面一些操作:
只使用硬件特有的驅(qū)動(dòng)程序重新編譯內(nèi)核。大部分主流發(fā)行版都適合于大量硬件,因此它們通常支持您沒有使用的很多硬件。這可以產(chǎn)生一定的優(yōu)勢(shì),盡管以模塊形式存在的硬件支持在不需要時(shí)不會(huì)加載到系統(tǒng)中。
重新編譯特定的應(yīng)用程序或庫,這樣就可以對(duì)大小進(jìn)行優(yōu)化,使其專門用于正在使用的特定 CPU,從而也可以節(jié)省一些內(nèi)存。Gentoo 發(fā)行版在這個(gè)方面做得非常好,您可以使用自己選擇的確切編譯標(biāo)記輕松地重新編譯某些或所有系統(tǒng)組件。遺憾的是,這個(gè)過程在老機(jī)器上執(zhí)行時(shí)可能非常漫長。
刪除應(yīng)用程序或庫的某些特性,然后對(duì)其重新編譯也可以降低一些內(nèi)存需求。借助 Gentoo 又是很好的主意,因?yàn)樗?USE 標(biāo)記的概念,允許在禁用應(yīng)用程序的特性之后,輕松構(gòu)建系統(tǒng)。這樣可以極大地減少應(yīng)用程序的大小,應(yīng)用程序發(fā)布時(shí)通常都支持大量的文件格式、編碼等,這通常需要加載一些庫來提供實(shí)際支持。如果您知道自己永遠(yuǎn)都不會(huì)閱讀(比如說)JPEG 文件,就可以在 Gentoo 中說明這一點(diǎn)(通過 USE="-jpeg"),這樣任何處理圖形的應(yīng)用程序編譯后都不支持 JPEG,從而可以降低內(nèi)存負(fù)載。
最近推出的 2.6 內(nèi)核有一個(gè) swappiness 參數(shù),它可以在運(yùn)行時(shí)進(jìn)行調(diào)優(yōu)。這個(gè)參數(shù)決定了,將應(yīng)用程序移動(dòng)到交換空間而不是移動(dòng)到正在減少的高速緩存和緩沖區(qū)中的可能性,在前面的測(cè)試中可以看到,將應(yīng)用程序交換出去,而保留大塊物理內(nèi)存以進(jìn)行緩存的情況很常見。通過降低交換出去的可能性,緩存可能減少,這樣就可以在內(nèi)存中保留更多應(yīng)用程序。但是,這種移動(dòng)是否真正會(huì)使機(jī)器運(yùn)行得更快,取決于正在運(yùn)行的應(yīng)用程序。如果在應(yīng)用程序之間頻繁地?fù)Q入換出,那么機(jī)器的響應(yīng)能力可能會(huì)提高,因?yàn)樗鼈兾挥趦?nèi)存中的概率增加了;然而,如果有一個(gè)任務(wù)會(huì)執(zhí)行大量磁盤讀寫操作,這樣做可能速度很慢。通常,降低 swappiness 可以提高交互式應(yīng)用程序的響應(yīng)能力,但是會(huì)降低系統(tǒng)的總體吞吐量。
結(jié)束語
本文的思想可以使您的老機(jī)器重新煥發(fā)青春(以及其他一些安全性),并在老式硬件上更好地使用 Linux。測(cè)量結(jié)果顯示,一臺(tái) 800-MHz/256-MB 的機(jī)器可以很好地運(yùn)行一個(gè)相當(dāng)好用的 Linux 桌面,以滿足輕量級(jí)的日常辦公和家用需求,如發(fā)送 e-mail、瀏覽 Web、文字處理等工作。稍作調(diào)整并進(jìn)行實(shí)驗(yàn),即使 128MB 的機(jī)器也可以成為令人滿意的桌面計(jì)算機(jī)。
盡管本文重點(diǎn)講述在相當(dāng)有限的硬件上實(shí)現(xiàn)功能良好的桌面,也可以對(duì)其他 Linux 應(yīng)用采用相同的原理。不管最新的超大機(jī)器上有多少內(nèi)存,很快就會(huì)發(fā)現(xiàn)新應(yīng)用程序已占滿了這些內(nèi)存。通過應(yīng)用這些技術(shù),可以稍微提高過載服務(wù)器的性能,并深入了解應(yīng)用程序的內(nèi)存使用情況。