2.5. Tuned および ktune

Tuned はシステムコンポーネントの使用を監視して、その監視情報を基にして動的にシステム設定をチューニングするデーモンです。動的なチューニングでは、所定のシステムの稼働時間中に各種システムコンポーネントを異なる方法で使用する方法を考慮します。例えば、ハードドライブは起動時とログイン時に大いに使用されますが、主に OpenOffice や 電子メールクライアントのようなアプリケーションを使う時にはほとんど使用されません。同様に CPU とネットワークデバイスは、異なる時期に異なる方法で使用されます。Tuned はこうしたコンポーネントの動作を監視して、それらの使用の変化に対応します。
実際の例として、標準的なオフィスにあるワークステーションを考慮してみましょう。ほとんどの時間帯でイーサネットのネットワークインターフェースがほぼ使用されていない状態とします。ほんの数件の電子メールの着信や発信がある程度、またはウェブページが数ページ読み込まれる程度だとします。この程度の負荷の場合、ネットワークインターフェースはデフォルト設定のように常にフルスピードで動作する必要はありません。Tuned には、ネットワークデバイスを監視してチューニングを行なうプラグインがあり、ネットワークインターフェースの利用率が低くなると、それを検出して自動的にそのインターフェースの速度を落とすことで電力の使用を節約します。例えば、DVD 画像をダウンロードしたり、重い添付ファイルが付いた電子メールを開いたためにインターフェースでの動作が長期に渡って劇的に増加すると、tuned はこれを検出して、動作のレベルが非常に高い間は最善のパフォーマンスを提供できるようインターフェース速度を最大に設定します。この原理は CPU やハードディスクなどの他のプラグインにも使用されています。
ネットワークデバイスは、デフォルトではこのように動作するようには設定されていません。速度変更が反映され、ユーザーの使用感に直接、目に見えるほどの影響を与えるまでには数秒かかるためです。CPU やハードドライブのチューニング用プラグインにも同様のことが言えます。ハードドライブが減速すると、再び加速するには数秒はかかるため、この間はシステムからの応答なしと見られてしまいます。この時間差は CPU プラグインの場合がもっとも短時間となりますが、ユーザーにはほとんど感知できない長さとはいえ、少なくとも測定可能な範囲となります。
tuned と並行して、今回は ktune も提供しています。Ktune は、特定の使用を目的としてマシンのパフォーマンスを最適化するフレームワークおよびサービスとして Red Hat Enterprise Linux 5.3 で導入されました。それ以降、ktune は改良を重ねて、現在では一般的なチューニングのフレームワークの固定した部分として使用できるようになりました。ktune は、「Tuned-adm」 で説明されているような定義済みの各種のプロファイルで主に使用します。
以下のコマンドを使用して tuned パッケージと関連の systemtap スクリプトをインストールします。
yum install tuned
tuned パッケージをインストールすると、/etc/tuned.conf にサンプルの設定ファイルが設定され、デフォルトのプロファイルがアクティベートされます。
以下を実行して tuned を開始します。
service tuned start
マシンを起動する度に tuned が開始されるよう以下を実行します。
chkconfig tuned on
Tuned には、手動で実行する場合に使用できる追加オプションがあります。オプションは以下の通りです。
-d, --daemon
フォアグラウンドではなく、デーモンとして tuned を開始します。
-c, --conffile
ファイル名とパスを指定して設定ファイルを使用します。例えば、--conffile=/etc/tuned2.conf です。デフォルトでは /etc/tuned.conf となります。
-D, --debug
ロギングの最高レベルを使用します。

2.5.1. tuned.conf ファイル

tuned.conf ファイルには、tuned の構成を設定する機能があります。デフォルトでは、ファイルは /etc/tuned.conf に置かれていますが、tuned--conffile オプションを付けて開始すると異なる名前と場所を指定することができます。
設定ファイルには、tuned の一般的なパラメータを定義する [main] セクションを常に含める必要があります。ファイルには各プラグイン用のセクションがあります。
[main] セクションには、以下のオプションがあります。
interval
tuned がシステムを監視してチューニングする間隔を秒単位で表示します。デフォルト値は 10 です。
verbose
出力を詳細に表示するかどうか指定します。デフォルト値は False です。
logging
ログされるメッセージの最低優先度を指定します。使用可能な値は降順で、criticalerrorwarninginfo、および debug となります。デフォルト値は info です。
logging_disable
ログされるメッセージの最高優先度を指定します。この優先度、またはそれ以下の優先度を持つメッセージはログされません。使用可能な値は降順で、criticalerrorwarninginfo、および debug となります。値 notset はこのオプションを無効にします。
プラグインにはそれぞれセクションがあり、プラグインの名前は角括弧で指定されています。例えば: [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