テナントリソースの垂直管理とは、主にテナントリソースプールのリソース仕様を調整することで、テナントのサービス能力を調整することです。テナントリソースプールの仕様を調整する方法には、2つあります:リソース設定の変更とリソース設定の切り替えです。
リソース構成の変更
リソースプールのリソース構成を変更すると、CPUやメモリなどの値を直接調整することで、そのリソースプール上のテナントのリソース仕様およびサービス能力に直接影響します。
リソースプールpool1とpool2が作成され、両方のリソース構成がuc1であると仮定します。リソースプールのリソース構成を変更することで、リソース構成uc1のMAX_CPUを6に、MEMORY_SIZEを36Gに調整できます。他のオプションは変更しません。サンプルステートメントは以下のとおりです:
obclient> CREATE RESOURCE UNIT uc1 MAX_CPU 5, MIN_CPU 4, MEMORY_SIZE '36G', MAX_IOPS 10000, MIN_IOPS 10000, LOG_DISK_SIZE = '108G';
obclient>CREATE RESOURCE POOL pool1 UNIT 'uc1', UNIT_NUM 2, ZONE_LIST ('z1', 'z2');
obclient>CREATE RESOURCE POOL pool2 UNIT 'uc1', UNIT_NUM 1, ZONE_LIST ('z3');
obclient>CREATE TENANT tt resource_pool_list=('pool1','pool2');
obclient>ALTER RESOURCE UNIT uc1 MAX_CPU 6, MEMORY_SIZE '36G';
リソース構成の各オプションを調整することで、対応するゾーン上のテナントのリソースプールのリソース仕様を調整し、結果としてテナントのサービス能力に影響を与えることができます。
リソース構成の切り替え
リソースプールのリソース構成を切り替えると、リソースプール内の各リソースユニットのリソース仕様を調整し、それによってテナントのリソースプール上のリソース仕様およびサービス能力を調整します。
リソースプールrp1の以前のリソース構成がuc1であると仮定すると、リソースプールのリソース構成を切り替えてrp1のリソース構成をuc1からuc2に変更するサンプルステートメントは以下のとおりです:
obclient> ALTER RESOURCE POOL rp1 UNIT 'uc2';
例と使用制限
通常、リソース設定の変更や切り替えによって、テナントのサービス能力を調整することができます。これは、テナントレベルでは実際にはテナントリソースユニットの仕様を調整することになります。リソース仕様の変更には、一般的にリソース仕様の増量と減量の2つのシナリオがあります。
リソース仕様の増量
リソース仕様の増量は主に、テナントのリソース拡張シナリオで使用され、CPUとMemoryそれぞれに対してリソース拡張を行うことができます。
例:
例1
リソース設定
u_c0を作成し、リソースプールpool1を作成します。pool1はu_c0を自身のリソース設定として使用します。obclient> CREATE RESOURCE UNIT u_c0 MAX_CPU 5, MIN_CPU 4, MEMORY_SIZE '36G', MAX_IOPS 10000, MIN_IOPS 10000, LOG_DISK_SIZE = '108G'; obclient> CREATE RESOURCE POOL pool1 unit='u_c0', unit_num=3, zone_list=('z1','z2','z3');u_c0のMIN_CPU、MAX_CPU、MEMORY_SIZEを増量します。obclient> ALTER RESOURCE UNIT u_c0 MAX_CPU 10, MIN_CPU 8, MEMORY_SIZE '72G';この調整は、リソースプール
pool1のリソース仕様を増量し、対応するテナントのサービス能力を向上させることを目的としています。
例2
リソース設定
u_c0とu_c1の2つを作成し、リソースプールpool1を作成します。pool1はu_c0を自身のリソース設定として使用します。obclient> CREATE RESOURCE UNIT u_c0 MAX_CPU 5, MIN_CPU 4, MEMORY_SIZE '36G', MAX_IOPS 10000, MIN_IOPS 10000, LOG_DISK_SIZE = '108G'; obclient> CREATE RESOURCE UNIT u_c1 MAX_CPU 10, MIN_CPU 8, MEMORY_SIZE '72G', MAX_IOPS 10000, MIN_IOPS 10000, LOG_DISK_SIZE = '216G'; obclient> CREATE RESOURCE POOL pool1 unit='u_c0', unit_num=3, zone_list=('z1','z2','z3');pool1のリソース設定をu_c1に調整します。obclient> ALTER RESOURCE POOL pool1 unit='u_c1';この調整は、リソースプール
pool1のリソース仕様を増量し、対応するテナントのサービス能力を向上させることを目的としています。
注意:リソース仕様を増量する際、リソース設定の変更または切り替えによらず、調整後の総リソース量は以下の要件を満たす必要があります:
Sum(min_cpu) <= CPU_CAPACITY;
Sum(memory_size) <= MEM_CAPACITY;
Sum(max_cpu) <= CPU_CAPACITY * resource_hard_limit;
そうでない場合、システムはエラーを報告し、拡張失敗を示します。
リソース仕様の減量
上記のリソース仕様の増量の例に基づいて、システムはリソースプールのリソース仕様を減量することもサポートしています。リソース仕様を減量することで、マシンのリソース仕様が十分に確保されますが、依然として制限が存在します。この制限は主にリソース仕様の減量時のMEMORY_SIZEオプションに現れます。あるテナントが特定の物理マシン上で実際に使用したメモリ量をMEM_USEDとして記録している場合、そのリソース仕様を減量する際には、テナントにサービスを提供する各物理マシンにおいて、リソース設定のMEMORY_SIZEがその物理マシン上でのテナントの現在の実際の使用メモリ以上である必要があります。調整時にMEMORY_SIZEの値がMEM_USEDより小さい場合、今回のリソース仕様の調整は失敗し、データのダンプを行ってメモリを解放した後、再度リソースプールの設定仕様を減量する試みを行う必要があります。