Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

第4章 コントロールグループの適用例

この章では、cgroup 機能を利用するアプリケーションの例を示します。

4.1. データベース I/O の優先順位付け

専用の仮想ゲスト内でデータベースサーバーの各インスタンスを実行すると、優先度に基づいてデータベースごとにリソースを割り当てることができます。次の例を考えてみましょう。システムは、2 つの KVM ゲスト内で 2 つのデータベースサーバーを実行しています。データベースの 1 つは優先度の高いデータベースで、もう 1 つは優先度の低いデータベースです。両方のデータベースサーバーを同時に実行すると、I/O スループットが低下し、両方のデータベースからの要求を均等に処理できます。図4.1「リソース割り当てなしの I/O スループット」はこのシナリオを示しています。優先度の低いデータベースが開始されると (時間 45 頃)、I/O スループットは両方のデータベースサーバーで同じになります。

図4.1 リソース割り当てなしの I/O スループット

リソース割り当てなしの I/O スループット
優先度の高いデータベースサーバーに優先順位を付けるには、予約済み I/O 操作の数が多い cgroup に割り当てることができます。一方、優先度の低いデータベースサーバーは、予約済み I/O 操作の数が少ない cgroup に割り当てることができます。これを行うには、次の手順に従います。手順4.1「I/O スループットの優先順位付け」、これらはすべてホストシステムで実行されます。

手順4.1 I/O スループットの優先順位付け

  1. 両方のサービスでリソースアカウンティングがオンになっていることを確認します。
    ~]# systemctl set-property db1.service BlockIOAccounting=true
    ~]# systemctl set-property db2.service BlockIOAccounting=true
  2. 高優先度サービスと低優先度サービスの比率を 10:1 に設定します。これらのサービスユニットで実行されているプロセスは、使用可能なリソースのみを使用します。
    ~]# systemctl set-property db1.service BlockIOWeight=1000
    ~]# systemctl set-property db2.service BlockIOWeight=100
図4.2「リソース割り当てによる I/O スループット」 は、優先度の低いデータベースを制限し、優先度の高いデータベースを優先した結果を示しています。データベースサーバーが適切な cgroup に移動されるとすぐに (時間 75 前後)、I/O スループットは両方のサーバー間で 10:1 の比率で分割されます。

図4.2 リソース割り当てによる I/O スループット

リソース割り当てによる I/O スループット
または、ブロックデバイス I/O スロットリングを優先度の低いデータベースに使用して、読み取りおよび書き込み操作の数を制限することもできます。詳細については、blkio コントローラーの説明を参照してください。コントローラー固有のカーネルドキュメント .