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
- ログされるメッセージの最低優先度を指定します。使用可能な値は降順で、
critical
、error
、warning
、info
、およびdebug
となります。デフォルト値はinfo
です。 logging_disable
- ログされるメッセージの最高優先度を指定します。この優先度、またはそれ以下の優先度を持つメッセージはログされません。使用可能な値は降順で、
critical
、error
、warning
、info
、および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