Red Hat Training

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

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

本章では、cgroup の機能を活用した適用例について説明します。

4.1. データベース I/O の優先度設定

独自の専用仮想ゲスト内でデータベースサーバーの各インスタンスを実行することにより、優先度に基づいてデータベースごとにリソースを割り当てることができます。次の例を検討してください。システムが 2 台の KVM ゲスト内で 2 つのデータベースを実行しています。一方のデータベースは優先度が高く、もう一方は優先度の低いデータベースです。両方のデータベースサーバーが同時に稼働すると、I/O スループットが低減し、両データベースからの要求に同等に対応します。図4.1「リソース割り当てを使用しない I/O スループット」 は、このシナリオを示しています。— 優先度の低いデータベースが起動すると (時間軸 45 前後)、I/O スループットが両データベースサーバーで同じになります。
リソース割り当てを使用しない I/O スループット

図4.1 リソース割り当てを使用しない 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 の比率で両サーバー間で分配されます。
I/O スループットとリソース割り当て

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

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