パフォーマンスチューニングを自動化するtuned

Red Hat Enterprise Linuxの6.0から、パフォーマンスチューニングに必要な設定をまとめておこなう tuned が同梱されています。今回はこのtunedをご紹介します。

レッドハットの森若です。

Red Hat Enterprise Linux のパフォーマンスチューニングを行いたい場合「どんな場合でも利用できるある1つの設定」というものはありません。たとえば以下のようなケースが考えられ、これらはそれぞれ異なる設定をおこなうことになります。

  • 計算スループットが重要で、イベントに対するレイテンシはあまり重要ではない場合
  • 省電力が重要なノートPCでのデスクトップ用途の場合
  • ネットワークのレイテンシを重視する場合

今回はこれらのパフォーマンスチューニング設定を簡易に行うための仕組みである tuned を紹介します。

tuned

tunedはRHEL 6.0から導入されたデーモンで、IOエレベータの設定、メモリ管理の設定、CPUスケジューラの設定、CPUの省電力設定、キャッシュのパラメータなどの各種設定をまとめたものを「プロファイル」として定義し、まとめて設定します。さらに仕組みを提供するだけでなく、典型的ないくつかのプロファイルを同梱しています。

このtunedを活用することで、典型的なケースについては非常に簡単にパフォーマンスチューニングを行うことができます。

tunedのプロファイル

早速tunedに添付されるプロファイルを見てみましょう。RHEL Server 7.4 で以下のようにコマンド 「tuned-adm list」により利用可能なプロファイルと現在設定されているプロファイルが表示されます。

# tuned-adm  list
Available profiles:
- balanced                    - General non-specialized tuned profile
- desktop                     - Optimize for the desktop use-case
- latency-performance         - Optimize for deterministic performance at the cost of increased power consumption
- network-latency             - Optimize for deterministic performance at the cost of increased power consumption, focused on low latency network performance
- network-throughput          - Optimize for streaming network throughput, generally only necessary on older CPUs or 40G+ networks
- powersave                   - Optimize for low power consumption
- throughput-performance      - Broadly applicable tuning that provides excellent performance across a variety of common server workloads
- virtual-guest               - Optimize for running inside a virtual guest
- virtual-host                - Optimize for running KVM guests
Current active profile: virtual-guest

それぞれのプロファイルについては man 7 tuned-profiles に概要が記載されていますが、 /usr/lib/tuned/プロファイル名/tuned.conf に設定が含まれていますので詳細はこれらのファイルを参照するのが手早いです。

表示ではわかりませんが balanced, latency-performance, throughput-performance, powersave の4種類が基本的な(方針の違う)プロファイルとして定義されており、その他のプロファイルはこれらを継承して少し変更する形で実装されています。

プロファイルの指定

tunedのプロファイル指定は、 「tuned-adm profile プロファイル名」で行います。指定すると即座に反映され、その後は再起動してもtuned起動時にプロファイルが適用されます。何もしていなければデフォルトでtunedは有効で起動されます。

現在有効なプロファイルを確認するには、 「tuned-adm active」とすると表示されます。同じものが「tuned-adm list」の最終行にも出力されます。

# tuned-adm profile latency-performance
# tuned-adm active
Current active profile: latency-performance

カスタムプロファイル作成時のヒント

独自にプロファイルを作成する場合は  /etc/tuned/プロファイル名/tuned.conf に必要な設定を記載することになります。include文にて既存のプロファイルをベースとすることもできます。

組織内で標準的に利用するtunedプロファイルを必要なパターンにあわせて定義しておけば、ファイルを数個設置してtuned-admで指定するだけで作業が完了しますので、初期設定作業が大幅に簡素化できます。

tuned.conf内で扱える設定は多岐に渡り、sysctlの指定、sysfsへの指定、ethtoolの指定、各種周辺装置の省電力設定、linux kernelの起動オプション(反映には再起動が必要)などがあります。さらにプロファイル適用時と適用終了時に実行するスクリプトも指定できますので、多くの場合はtunedのプロファイル内にパフォーマンスチューニング設定を集約することができます。

関連ドキュメント