首頁 > 軟體

教你如何優化Linux執行速度

2020-06-16 17:20:58

現在已經有越來越多的人開始使用桌面Linux發行版了,也經常會聽到有人抱怨各種桌面Linux的執行速度比他們想象的慢。實際上,在使用桌面Linux系統時,你必須記住一個關鍵的問題:

桌面端Linux的快慢主要取決於系統響應速度,而不是硬體設定。

在使用伺服器端Linux時,你確實可以通過提高硬體效能獲取更快的系統執行速度,這是Linux得以在伺服器端壓倒眾多競爭對手的最重要原因,通過優化調整硬體設定獲得最佳的系統效能

但在桌面端情況就不一樣了,比如在把一個20GB的大檔案複製到U盤,或者解壓一個大檔案的時候,你會很奇怪為什麼Linux比Windows和MacOS表現的還要差勁。一般來說,絕大多數桌面端Linux使用者在感到系統執行不夠快的時候,首先就會想到和設定伺服器一樣新增硬體設定,然而這麼做是不對的。

真正的瓶頸在哪裡?

CPU一般不是瓶頸所在,除非你做的是密集計算任務,比如視訊壓縮、資料科學、遺傳學和神經網路分析等。

GPU也很少產生瓶頸,除非你拿計算機玩大型遊戲或超高精度渲染效果圖,大多數時候你並不會真的需要一個7000美元的專用GTX 1080顯示卡。

如果測試一下CPU和GPU的使用情況,你就會發現它們大部分時間都是空閒的,沒錯,絕大多數時間計算機的核心都不會滿載執行。

真正的瓶頸出現在記憶體與硬碟的I/O(輸入/輸出)這裡。

RAM與SWAP

只要一開啟光鮮亮麗的Chromium瀏覽器,你肯定會在幾分鐘之內開啟十幾個網頁標籤或者更多,這會在不知不覺中發生。

然而這樣會超級快速的吃完8GB的記憶體。每當出現這種情況時,作業系統就開始把資料分載到硬碟的快取中,此時你就會發現機器的速度嚴重下降。

所以你可能要做的第一件事就是安裝一個擴充套件,比如Chrome的記憶體優化外掛Great Suspender。它會暫時關閉掉所有標籤的網頁響應,除了現在你正在閱讀的這個,而當你切換到另一個標籤時,它就會過載這個標籤的網頁。Great Suspender的目的是節省記憶體,效果很好。

 (記憶體優化外掛Great Suspender)

這個擴充套件可以幫你節省幾個G的記憶體,對於平均設定記憶體為8GB的Linux系統來說,這可不是個小事。

另外需要考慮的是Linux的預設定會將應用資料平均分派到swap來利用檔案系統的快取。所以如果你解壓一個大檔案,一些資料就會進入到RAM快取,應用資料也會進入硬碟,而在解壓完成後,重新切換到應用程式時往往出現無法響應的問題。

所以你需要設定一下作業系統,讓應用程式的狀態充分儲存在RAM中。在控制台中進行如下操作:

sudo tee -a /etc/sysctl.d/99-sysctl.conf

vm.swappiness=1

vm.vfs_cache_pressure=50

EOF

在儲存方面,有時你會發現一些使用舊核心的記憶體比如U盤或SD卡拖慢了機器的速度,這時可以進行如下操作:

sudo tee -a /etc/sysctl.d/99-sysctl.conf

vm.dirty_background_bytes=16777216

vm.dirty_bytes=50331648

EOF

如果不想立刻重新啟動,可以在終端上執行如下命令:

sudo sysctl -w vm.swappiness=1

sudo sysctl -w vm.vfs_cache_pressure=50

sudo sysctl -w vm.dirty_background_bytes=16777216 

sudo sysctl -w vm.dirty_bytes=50331648

對RAM和SWAP的調整不宜做的太過,比如千萬不要禁用檔案系統紀錄檔,因為這樣會增加資料遭受破壞的風險。

優化排程程式

Linux中設定了過程排程程式(Process Scheduler)和I/O排程程式(I/O Scheduler)。過程排程程式負責管理核心的預處理級別與不同計算任務之間的切換。而I/O排程程式則幫助不同的過程比如從硬碟讀取和寫入記憶體等共用I/O資源。

桌面端Linux中使用的排程程式一直在更新,最通用的過程排程程式是Completely Fair Scheduler (CFS) ,它在許多版本中是預設設定,其後還有更新發布的Staircase,BFS和MuQSS等。同樣的,I/O排程程式也在不斷進步,除了通用的Completely Fair Queueing (CFQ)之外,還有更新的Noop Scheduler和BFQ等。

你可以應用這些最新的排程程式來優化系統,最好的辦法是安裝Linux Zen 核心,Liquorix版本。它用MuQSS 排程程式替換了CFS,用BFQ替換了CFQ,同時還加入了更多的響應性調整比如QoS over TCP,用來避免TCP堵塞。

如果你用的是Arch Linux,要做的非常簡單:

sudo pacman -Sy linux-zen

sudo grub-mkconfig -o /boot/grub/grub.cfg

如果是Ubuntu,那就需要參考一下Liquorix的安裝說明,因為如果CPU不同,安裝方式也略有不同,對於64位元的機器一般這樣安裝:

sudo apt-get install liquorix-keyring

apt-get install linux-image-liquorix-amd64 linux-headers-liquorix-amd64

是因為GNOME 3太慢嗎?

GNOME 3.22不僅讓桌面Linux變得漂亮,內建的應用也帶來了使用上的方便。當然,使用上的便捷是以犧牲響應速度為代價的。高階機器會受益,而老舊的機器就會遭罪,因為那些在後端執行的額外功能。

那麼怎樣才能在老舊機器上更好的應用GNOME 3呢?

同樣的,首先必須要搞清楚發生了什麼。必須要做的第一件事是安裝htop 和 iotop。htop用來觀察後台執行的情況,找到是哪些進程吃掉了你的CPU或RAM。而iotop用來觀察哪些進程阻塞了檔案和網路操作時的I/O佇列。

在我的系統裡,我發現了兩個主要的“罪犯”:Dropbox 和 Tracker。接下來就來解決這兩個問題。

Dropbox在安裝時是可選的,但大多數人都會選擇安裝,Dropbox第一次安裝時要下載所有的檔案,過程極其緩慢,所以要記住最好在星期五的晚上去安裝它。

安裝之後,編輯 /usr/share/applications/dropbox.desktop這個檔案,把Exec=dropbox這行替換為下面這行:

Exec=ionice -c 3 -n 7 dropbox start -i && cpulimit -b -e dropbox -l 10

好了,這樣就可以讓Dropbox佔用最少的CPU時間,而且只有在系統空閒時才擁有I/O許可權。

然後是Tracker,這個工具的目的是索引檔案以便於通過GNOME應用(例如Nautilus File Manager)來快速搜尋到檔案。

首次安裝新的GNOME環境時第一次建立索引是非常耗費時間的,所以最好還是在週五的晚上進行,和Dropbox同時安裝。

然後把它調整為只在系統空閒時才執行。執行 Alt-F2,鍵入tracker-preferences,然後這樣設定它:

在同一個面板中,把它設定為忽略log目錄和*.log檔案模式。

如果你的機器用的是慢速的機械硬碟,最好盡量關閉掉那些在後台占用I/O的應用進程,這樣才能使機器的反應變得敏捷。

GNOME還有其它後台服務,例如下面這些:

gnome-session

gnome-shell

gnome-settings-daemon

gnome-online-accounts

evolution-data-server

gjs-console

這些都會根據你所安裝的應用變化,GNOME Shell和GJS很占資源,但是你無法關閉它們,因為這些都是GNOME的核心,所以唯一能做的事情就是避免安裝太多的GNOME擴充套件。

經常有人說GNOME甚至KDE是引起桌面Linux速度變慢的罪魁禍首,但是如果你的目標是為了節省資源,那麼完全不需要按照他們所說去選擇XFCE或是LXQt。實際情況是I/O才是問題的關鍵,對GNOME進行適當調整就可以了。最應該注意的還是網路瀏覽器的使用,只需要五六個網頁標籤就能吃掉你一大半的RAM,這就是我為什麼首先建議安裝Great Suspender的原因。

總結

簡短地說,要記住以下幾件事:

  • 在使用前端應用尤其是網路應用時,調整swap和快取的壓力設定,避免出現頁面錯誤,在效能與反應速度之間只能尋求妥協

  • 安裝Linux-Zen或Liquorix核心(根據你使用的發行版),獲取更好的MuQSS過程排程程式和BFQ I/O排程程式。如果使用的是SSD硬碟,檢查一下是否使用的是NOOP或Deadline I/O排程程式,這是針對SSD硬碟的更好的設定。

  • 設定Dropbox和Tracker,讓它們只在系統空閒時執行,也可以安裝Ananicy和rejoice來做進一步優化。

  • 由於效能問題,不要選擇Desktop Manager,因為如果你使用Chromium上網或是其它Web應用,問題就已經無可避免了。不要驚慌,放心使用GNOME 3.22,做一些適當的後台I/O調整就行了。

  • 如果可以的話,買一塊好的SSD硬碟。如果機器是PCI Express X4插槽的話,那麼買一塊M.2 SSD硬碟更好,比如三星950 EVO M.2。如果擁有超過8GB的記憶體(最好16GB)和一塊非常快的SSD硬碟,那麼許多效能問題就會迎刃而解。

本文永久更新連結地址http://www.linuxidc.com/Linux/2017-02/141138.htm


IT145.com E-mail:sddin#qq.com