5 TuneDの使用

TuneDユーティリティは、特定の条件下でシステムのパフォーマンスを最適化できるように、システムを監視するためのツールです。このユーティリティは、次の主要構成要素からなります。

  • TuneDプロファイル
  • tune-admコマンド

基本的なTuneD機能は、tunedパッケージによって提供されます。Oracle Linuxが実行されている場所(たとえば、Oracle Cloud InfrastructureにあるOracle Linuxインスタンス上)によっては、このパッケージがOSとともに自動的にインストールされる場合があります。

TuneDがすでにシステムに存在するかどうかを確認するには、次のように入力します。

dnf list tuned
Installed Packages
tuned.noarch     version
...

この機能がシステムにない場合は、次の手順を実行します。

  1. tunedパッケージをインストールします。

    sudo dnf install tuned
  2. tunedサービスを有効にします。

    sudo systemctl enable --now tuned

使用可能だがシステムにインストールされていないその他TuneDパッケージをリストするには、次のように入力します。

sudo dnf list tuned-profiles*

その他のTuneDパッケージが必要な場合は、これらを個別にインストールする必要があります。

TuneDプロファイルについて

TuneDでは、TuneDプロファイルを使用することでシステムの最適化が実行されます。TuneDプロファイルは、様々なユースケースにおいてチューニング・タスクを適用する、事前定義された一連の最適化ルールからなります。

適切なパッケージをインストールした後、次のコマンドで、使用可能なプロファイルをリストできます。

tuned-adm list

このコマンドの出力は、Oracle Linuxが実行されている場所によって異なります。物理システムと仮想システムでは、使用可能なプロファイルとして、次のような内容が表示される可能性があります。

Available profiles:
- accelerator-performance     - Throughput performance based tuning with disabled higher latency STOP states
- balanced                    - General non-specialized tuned profile
- desktop                     - Optimize for the desktop use-case
- hpc-compute                 - Optimize for HPC compute workloads
...

Oracle Cloud Infrastructureにおいて実行されているOracle Linuxインスタンスでは、次のプロファイルがさらにリストに含まれます。

...
- oci-busy-polling            - Enable Busy Polling conditionally in OCI
- oci-cpu-power               - Set processor power management parameters in OCI
- oci-nic                     - Increase combined channels to 16 on NICs with bnxt_en driver on BM shapes in OCI
- oci-rps-xps                 - Enable RPS/XPS conditionally in OCI
...

TuneDでシステムの最適化に使用する主なプロファイルを次に示します。このリストではすべてを示しているわけではありません。

  • balanced: パフォーマンスと消費電力とのバランスをとります。プロファイルでは、可能な場合は自動スケーリングおよび自動チューニングを使用します。考えられるデメリットは、レイテンシの増加です。

  • powersave: 最大の省電力パフォーマンスを実現します。このプロファイルは、パフォーマンスを抑制することで、実際の電力消費を最小限に抑えることができます。

    ノート:

    場合によっては、balancedプロファイルはpowersaveプロファイルより高効率であるため、より適切な選択肢となります。

  • throughput-performance: 省電力メカニズムを無効にして、sysctl設定を有効にすることで、ディスクとネットワークIOのスループット・パフォーマンスを向上させます。

  • latency-performance: 省電力メカニズムを無効にし、sysctl設定を有効にして待機時間を短縮することで、低遅延用に最適化します。

  • network-latency: 低遅延のネットワーク・チューニングを実現します。latency-performanceプロファイルに基づいています。さらに、このプロファイルは、透過的なhuge pagesとNUMAのバランシングを無効にして、複数のネットワーク関連のsysctl設定をチューニングします。

  • network-throughput: スループット・ネットワーク・チューニングの最適化に使用されます。throughput-performanceプロファイルに基づいています。さらに、このプロファイルでは、カーネル・ネットワーク・バッファを増やします。

  • virtual-guest: 仮想ゲスト用に設計されています。throughput-performanceプロファイルに基づいています。このプロファイルは、仮想メモリーのswappinessの値を減らし、ディスクのreadaheadの値を増やします。

  • virtual-host: 仮想ホスト用に設計されています。throughput-performanceプロファイルに基づいています。このプロファイルは、仮想メモリーのswappinessの値を減らし、ディスクのreadaheadの値を増やし、ダーティ・ページのwritebackにより積極的な値を設定します。

  • desktop: デスクトップ環境用に最適化されます。balancedプロファイルに基づいています。さらに、このプロファイルにより、対話型アプリケーションの応答性を高めるためにスケジューラのautogroupsが設定されます。

TuneDプロファイルの構成ファイルについて

プロファイルは自動的に次の場所に格納されます。

  • /usr/lib/tunedには、事前定義済プロファイルが含まれています。
  • /etc/tunedには、デフォルトでインストールされる他のファイルに加えて、カスタム・プロファイルが含まれます。

TuneDプロファイルにより、システムのリソースおよび構成要素に関してどのように最適化を実行するかを指示します。これらのプロファイルは事前定義されており、省電力プロファイルパフォーマンス向上プロファイルという2つの一般的なカテゴリに分けられます。

たとえば、/usr/lib/tuned/desktopプロファイルはデスクトップ関連のリソースを最適化し、/usr/lib/tuned/powersaveはシステムの消費電力を最適化します。

プロファイルは、そのプロファイル用に設定された最適化ルールを使用することで動作します。各プロファイルのルールは、対応するtuned.confファイルに含まれています。したがって、desktopプロファイルではそのルールは/usr/lib/tuned/desktop/tuned.conf内で定義され、powersaveプロファイル用のルールは/usr/lib/tuned/powersave/tuned.conf内で定義されます。

例として、desktopプロファイルの構成ファイルの内容を次に示します。

less /usr/lib/tuned/desktop/tuned.conf
#
# tuned configuration
#

[main]
summary=Optimize for the desktop use-case
include=balanced

[sysctl]
kernel.sched_autogroup_enabled=1

これらの構成ファイルでは、そのプロファイル用のルールを変更することや、プロファイルによる特定のデバイスの最適化方法をカスタマイズすることができます。また、TuneDを、デバイス使用方法が変更されると現行設定の調整がトリガーされるように構成することもできます。構成ファイルの定義を調整することで、特定のシステムにおける最適化をカスタマイズおよび改善できます。

カスタム・プロファイルを作成するには、/usr/lib/tuned/profileディレクトリを/etc/tunedディレクトリにコピーします。次に、プロファイルのtuned.confを変更します。

プロファイル構成の詳細は、マニュアル・ページのtuned.conf(5)を参照してください。

tuned-admコマンドの使用

TuneDユーティリティの機能を利用するには、tuned-admコマンドを使用します。次のタスクでは、Oracle LinuxでTuneDプロファイルとtunedサービスを管理する方法について説明します。

詳細は、マニュアル・ページのtuned-adm(8)tuned(8)を参照してください。

システム内の使用可能なプロファイルとアクティブなプロファイルのリスト

システム内のプロファイルをリストするには、次のように入力します。

sudo tuned-adm list

表示されるプロファイルの数は、Oracle Linuxシステムを使用しているかOracle Cloud InfrastructureにあるOracle Linuxインスタンスを使用しているかで異なります。

この出力では、必ず最後に、現在使用中のプロファイルが表示されます。Oracle Cloud InfrastructureにあるOracle Linuxインスタンスでは、たとえば、最終行は次のようになります。

...
Current active profile: oci-rps-xps oci-busy-polling oci-cpu-power oci-nic

物理システムまたは仮想マシンでは、デフォルトのアクティブ・プロファイルが異なる場合があります。

使用可能なすべてのプロファイルをリストせずに、システムまたはインスタンスでどのプロファイルがアクティブになっているかを直接問い合せるには、次のように入力します。

sudo tuned-adm active

プロファイルに従ってシステムが最適化されていることの確認

アクティブなプロファイル内で定義されている設定のとおりにシステムが最適化されているかどうかを確認できます。次の手順を実行します。

  1. verifyサブコマンドを実行します。
    sudo tuned-adm verify
    Verfication succeeded, current system settings match the preset profile.
    See TuneD log file ('/var/log/tuned/tuned.log') for details.
  2. オプションで、TuneDログの内容を調べてより詳細な情報を確認します。
    less /var/log/tuned/tuned.log

推奨プロファイルの問合せ

/etc/tuned/tuned-main.conf内でrecommendパラメータが有効になっている場合は、TuneDにより、さらに適した最適化プロファイルが提案されます。次に例を示します:

sudo tuned-adm recommend
balanced

プロファイルの選択とアクティブ化

システムまたはインスタンスでtunedを有効にすると、デフォルトのTuneDプロファイルが自動的にアクティブになります。ただし、別のプロファイルを選択してそれをアクティブ化すると、そのプロファイルに基づいてシステムの最適化が実行されるようになります。次の構文を使用します。

sudo tuned-adm profile profile1 [profile2 profile3 ...]

アクティブ・プロファイルの変更には、次の方法をお薦めします。

  1. 現在アクティブなプロファイルを確認します。
    sudo tuned-adm active
    balanced
  2. オプションで、システム内の使用可能なプロファイルをリストします。
    sudo tuned-adm list
  3. アクティブ化する別のプロファイルを選択します。
    sudo tuned-adm profile powersave
  4. 変更内容を確認します。
    sudo tuned-adm active
    powersave

注意:

TuneDでは、複数のプロファイルをアクティブ化できます。プロファイル・ルールが競合している場合は、TuneDにより、このコマンドで指定した最後のプロファイルの設定が適用されます。

複数のプロファイルがマージされている場合、TuneDでは、その組合せが論理的であるかどうかを判断できません。そのため、共通コンポーネントまたはリソースのパフォーマンスに関連する、これらのプロファイル内のパラメータが、逆の方法にチューニングされる危険性があります。複数のプロファイルのマージによって、より適切な最適化が実現されるとはかぎりません。

Oracle Cloud InfrastructureにあるOracle Linuxインスタンスは例外であり、この場合は、TuneDのインストール時に複数のoci-*プロファイルが自動的にアクティブ化されます。

TuneDの無効化

TuneDを一時的に無効にするには、TuneDサービスをオフに切り替えます。このサービスをオフに切り替えると、アクティブなプロファイルが削除され、システムでのすべてのチューニング操作が効率的に停止されます。チューニングを再開するには、プロファイルをアクティブ化します。以降の手順では、システム・チューニングを停止する方法を示します。

  1. 必要に応じて、現在アクティブなプロファイルをメモしておきます。
    sudo tuned-adm active
  2. TuneDをオフに切り替えます。
    sudo tuned-adm off
  3. システム・チューニングのステータスを確認します。
    sudo tuned-adm active
    No current active profile.

システム・チューニングを再開するには、次を実行します。

  1. 再アクティブ化するプロファイルを決定します。
    • 現在のシステム環境またはインスタンス用に事前定義されているデフォルト・プロファイルを特定して使用するには、次のように入力します。
      sudo tuned-adm recommend
    • デフォルト・プロファイル以外のプロファイルを選択するには、使用可能なプロファイルを表示します。次のように入力します。
      sudo tuned-adm list
    • TuneDをオフにする前にアクティブだったのと同じプロファイルを再使用するには、前にTuneDサービスの無効化の手順で書き留めたメモを見ます。
  2. 選択したプロファイルをアクティブ化します。
    sudo tuned-adm profile profile

システム・チューニングを完全に無効にするには、tunedサービスを停止します。

sudo systemctl disable --now tuned

TuneDユーティリティへのグローバル設定の適用

/etc/tuned/tuned-main.confでは、定義されたグローバル設定によってtunedサービス全体が制御されます。このファイルの抜粋を次に示します。

# Global tuned configuration file.

# Whether to use daemon. Without daemon it just applies tuning. It is
# not recommended, because many functions don't work without daemon,
# e.g. there will be no D-Bus, no rollback of settings, no hotplug,
# no dynamic tuning, ...
daemon = 1

# Dynamicaly tune devices, if disabled only static tuning will be used.
dynamic_tuning = 0

# How long to sleep before checking for events (in seconds)
# higher number means lower overhead but longer response time.
sleep_interval = 1

# Update interval for dynamic tunings (in seconds).
# It must be multiply of the sleep_interval.
update_interval = 10

# Recommend functionality, if disabled "recommend" command will be not
# available in CLI, daemon will not parse recommend.conf but will return
# one hardcoded profile (by default "balanced").
recommend_command = 1
...

次に、/etc/tuned/tuned-main.conf内のパラメータの構成例を示します:

  • 静的にするか動的にするかの選択

    dynamic_tuningパラメータを使用すると、システム・チューニングを静的にするか動的にするかを選択できます。

    デフォルトでは、システム内で静的チューニングが動作します。静的チューニングでは、sysctlおよびsysfsコマンドの事前定義してある設定が適用されるか、構成ツールがアクティブ化された時点でこれらのツールの設定内容が適用されます。その後、さらにチューニングが実行されることはありません。

    動的チューニングは、それとは異なり、継続的に実行されます。システムが稼働している間はずっと、TuneDにより、周期的にそのシステムが監視されます。TuneDにより、特定の間隔で収集された情報に基づいて、そのシステムが最適化されます。TuneDでコンポーネントが監視および最適化される間隔は、uptime_intervalの値によって決まります。この値はデフォルトでは10秒に設定されています。

  • デーモン・モードにするかデーモンなしモードにするかの選択

    daemonパラメータを使用すると、システム・チューニングのモードを設定できます。

    デーモンが実行されている場合、デフォルトでは、TuneDの機能はアクティブになります。TuneDをデーモンが無効になった状態で動作するように切り替えた場合、TuneDは、プロファイル設定を適用してから終了します。このモードの使用はお薦めしていません。これは、デーモンを無効にすると一部のTuneD機能(DBusとの互換性、ホットプラグ、設定のロールバックなど)がなくなるためです。