2.5. tuned 與 ktune

Tuned daemon 會監控系統元件,並根據監控結果,動態調整系統設定。動態微調負責多種系統元件在系統各種執行時間的行為模式。舉例來說,硬碟在開機與登入時的用量最高,但稍後在使用者使用 OpenOffice 或電子郵件軟體時,就幾乎沒有用到。相同地,CPU 與網路裝置會在不同的時間,有不同的用量。Tuned 會監控這些元件的活動,並對這些活動的改變做出回應。
我們以典型的辦公室環境為例:大部分時間乙太網路卡都處於閒置狀態。偶爾只有幾封電子郵件進出網路,或載入網頁。這種負載並不需要網路卡以預設的全速運行。Tuned 有網路裝置的監控與微調外掛程式,偵測網路的低活動時期,自動降低網路卡的速度,這可以節省能源。如果網路卡的活動突然增加了一段時間,例如下載 DVD 映像檔或一封附加了大型檔案的電子郵件,那麼 tuned 會偵測出來,並將網路卡的速度設為最大值,好為這些活動提供最高效能。這個原則也適用於 CPU 與硬碟等其它外掛程式。
預設上,網路裝置並沒有配置成這個樣子,因為改變速度需要幾秒鐘的時間,因此會對使用者造成直接、可見的衝擊。類似的考量也及於 CPU 與硬碟的外掛程式。當硬碟的轉速下降時,要再全速運轉需要幾秒的時間,在這其間系統會出現顯著的反應時間不足。對 CPU 外掛程式來說,延遲時間的影響是最小的,雖然使用者可能不會察覺,但還是在衡量得到的範圍內。
除了 tuned 以外,我們還提供了 ktuneKtune 首次出現於 Red Hat Enterprise Linux 5.3,這架構與服務可以在特定的使用情況下,對電腦的效能進行最佳化。之後 ktune 更為精進,可以用作一般微調架構的固定班底。如 節 2.5.2, “Tuned-adm” 所述,它主要是用在多種事先定義的 profile 上。
請以此指令安裝 tuned 套件、以及相關的 systemtap 程序檔:
yum install tuned
安裝 tuned 套件時,也會在 /etc/tuned.conf 中設定一組範例配置檔,並啟動預設的 profile。
執行以下指令以啟動 tuned
service tuned start
要在每次開機時啟動 tuned,請執行:
chkconfig tuned on
Tuned 本身有額外的選項,讓使用者手動執行時使用。可用的選項有:
-d, --daemon
以 daemon 方式啟動 tuned,而不是在前景執行。
-c, --conffile
使用指定了路徑與檔案的配置檔,例如 --conffile=/etc/tuned2.conf。預設值是 /etc/tuned.conf
-D, --debug
使用最高等級的日誌紀錄。

2.5.1. tuned.conf 檔案

tuned.conf 檔案包含了 tuned 所使用的配置設定。預設上,這檔案位於 /etc/tuned.conf,但使用者可以指定不同的位置與名稱,方法是使用 --conffile 選項啟動 tuned.conf
這個配置檔案一定得包含 [main] 一節,定義 tuned 的通用參數。這檔案的每個外掛程式都會有自己專用的一節。
[main] 一節包含了以下選項:
interval
tuned 監控、微調系統的間隔,單位為秒。預設值為 10
verbose
是否提供詳盡的輸出結果。預設值為 False(否)。
logging
指定寫入日誌的訊息之最低優先順序。以降冪排列,可用的值有 criticalerrorwarninginfo、與 debug。預設值是 info
logging_disable
指定寫入日誌的訊息之最高優先順序,低於這個優先順序的訊息都不會被紀錄。以降冪排列,可用的值有 criticalerrorwarninginfo、與 debugnotset 會停用這個選項。
每個外掛程式都有自己的一節,以中括號括住外掛程式的名稱;例如 [CPUTuning]。每個外掛程式都可以使用自己的選項,但以下會套用至所有外掛程式:
enabled
啟用外掛程式與否。預設值為 True(是)。
verbose
訊息輸出是否詳盡與否。如果此外掛程式沒有設定,這個值會引用自 [main]
logging
指定寫入日誌的訊息之最低優先順序。如果此外掛程式沒有設定,這個值會引用自 [main]
配置檔案的範例如下:
[main]
interval=10
pidfile=/var/run/tuned.pid
logging=info
logging_disable=notset

# Disk monitoring section

[DiskMonitor]
enabled=True
logging=debug

# Disk tuning section

[DiskTuning]
enabled=True
hdparm=False
alpm=False
logging=debug

# Net monitoring section

[NetMonitor]
enabled=True
logging=debug

# Net tuning section

[NetTuning]
enabled=True
logging=debug

# CPU monitoring section

[CPUMonitor]
# Enabled or disable the plugin. Default is True. Any other value
# disables it.
enabled=True

# CPU tuning section

[CPUTuning]
# Enabled or disable the plugin. Default is True. Any other value
# disables it.
enabled=True