Article ID: 112740, created on Feb 21, 2013, last review on Sep 30, 2014

  • Applies to:
  • Virtuozzo
  • Virtuozzo containers for Linux
  • Virtuozzo hypervisor

一般情報

Parallels Virtuozzo Containers(PVC)for Linux、Parallels Server Bare Metal(PSBM)、および Parallels Cloud Server(PCS)には、複数のリソース管理方法があります。この記事では、各方法の概要と、必要に応じて最も便利な方法で適切な製品バージョンを選択する方法について説明します。

読み進める前に、いくつかの用語の意味を説明しておきます。

メモリ割り当て - malloc(3) などの標準ツールを使用して仮想メモリを予約するプロセスです。

メモリ消費(または利用) - 割り当てられたメモリ内にデータを保管するプロセスです。

一般に、割り当てられたすべてのメモリが実際に使用されるとは限らず、マシンで使用可能なメモリより遙かに多くのメモリを割り当てることができます。

Parallels Virtuozzo Containers for Linux、Parallels Server Bare Metal、および Parallels Cloud Server は、メモリ割り当てとメモリ消費の両方を管理することができます。

すべてのコンテナのメモリ消費リミットの合計が、物理的に使用可能なメモリ量(RAM+スワップ)を超えている状況を、「販売超過」(またはオーバーブッキング、オーバーコミットメントなど)と呼びます。

メモリ消費リミットは、メモリ消費の合計が物理的に使用可能なメモリ量を超えない値に設定することをお勧めします。

Parallels Virtuozzo Containers for Linux 4.7、Parallels Server Bare Metal 5、および Parallels Cloud Server 6.0 から、VM_OVERCOMMIT というコンテナ構成パラメータが追加されています。これは、割当が許可されるメモリ量と消費が許可されるメモリ量の実際の差異を示すものです。

以前のバージョンには、メモリ割当とメモリ消費のリミットを簡単に設定できるこのようなツールがありませんでした。

以降、オーバーコミットとは、メモリ割当とメモリ消費のリミットの差異を指します。

メモリ管理方法

  • UBC(User Beancounters)

    Parallels Virtuozzo Containers と OpenVZ に最初に導入されたリソース管理システムは UBC でした。UBC では、コンテナのリソース割当と消費のリミットを細かく調整することができます。

    このシステムの主なメリットは、コンテナ内にインストールされた個々のアプリケーションセットのニーズに応じてコンテナを微調整できることです。

    主なデメリットは、このシステムが Linux カーネルの観点で機能するため、ユーザが直感的に理解できないということです。また、メモリやその他のリソースの割当と消費のパラメータを制御するためには、リミットを慎重にセットアップする必要があります。

    すべての UBC パラメータの説明は、以下の KB 記事を参照してください。

    112807 Parallels Virtuozzo Containers for Linux の UBC リソース

  • SLM(サービスレベル管理)

    SLM システムは、Parallels Virtuozzo Containers for Linux 3.0.および Parallels Server 4 Bare Metal)で導入され、Parallels Virtuozzo Containers for Linux 4.7、Parallels Server Bare Metal 5、Parallels Cloud Server 6.0 で廃止になりました。SLM は、UBC システムよりリソース管理をシンプルにするために開発されました。slmmemorylimit という 1 つのパラメータを計算するだけで管理することができます。SLM と UBC の主な違いは、SLM にはリミットが 1 つしかないため(slmmemorylimit)、コンテナのメモリリソースを簡単に構成することができるという点です。このパラメータには average および instant というリミット値があり、UBC のbarrierlimit とは根本的に異なります。

    average パラメータは、コンテナで許可されるメモリ消費量を定義します。UBC の oomguarpages と似ていますが、完全に同じではありません。

    instant パラメータは、コンテナで許可される最大メモリ消費量を定義します。コンテナはリミットを超えてメモリを使用することはできません(ただし、このリミットを超えてメモリを割り当てることはできます)。

    SLM は 15 秒間隔でサーバのメモリ構成を確認("tick")し、現在のノードの全体的な状態に基づいて、構成されたアクションを実行します。メモリの利用が以前の状態に基づく average リミットを上回る場合、実システムでカーネルが固有のニーズのために空きスペースを必要とする場合と同様に、コンテナのプロセスは強制終了されます。プロセス選択用のアルゴリズムは Linux OOM killer と同じです。

    コンテナは、割当済みメモリを、instant メモリリミットを超えて使用することはできません。利用がこのリミットに達し、よりメモリを必要とする要求がある場合、SLM は利用が average リミットを下回るまでプロセスを強制終了します。

    プロセスの強制終了が頻繁に発生しないように、特にデータベースエンジンなどの長期間のサービスがあるコンテナに対しては、average リミットと instant リミットを同じ値に設定することを推奨します。

    SLM システムの主なメリットには、リソースの制限がシンプルである点や、UBC リソースと併せてコンテナを微調整することができる点などがあります。

    SLM システムの主なデメリットには、average リミットと instant リミットの挙動がわかりにくい点や、物理リソースが不足したときの挙動が予測できない点などがあります。

  • vSwap

    SLM と UBC の長所と短所を考慮して、vSwap という新しい方法が Parallels Virtuozzo Containers for Linux 4.7、Parallels Server Bare Metal 5、Parallels Cloud Server 6.0 から導入されました。

    旧バージョンの PVCfL からのアップグレード中に、システムで SLM が vSwap に置き換えられます。

    CT スタートアップ中に、SLM および UBC のコンテナリミットが読み取られ、内部 vSwap リミットに変換されます。vSwap 設定を手動で行わない限り、config ファイルは変更されません。

    vSwap によって、コンテナの RAM とスワップのリミットを簡単に構成し、メモリオーバーコミットをセットアップすることができます。他のパラメータは Parallels Virtuozzo Containers for Linux によってオンザフライで計算されます。

    ただし、より細かく微調整する必要がある場合は、UBC 設定も構成することができます。コンテナ構成パラメータは、オンザフライで計算された値をオーバーライドします。

追加情報

詳細は、以下の情報を参照してください。

1354 What are User Beancounters?

112807 Parallels Virtuozzo Containers for Linux の UBC リソース

Parallels Virtuozzo Containers 4.7 for Linux User's Guide

Administrator's Guide to Managing UBC Resources

Parallels Virtuozzo Containers 4.6 for Linux User's Guide

OpenVZ wiki

0dd5b9380c7d4884d77587f3eb0fa8ef 2897d76d56d2010f4e3a28f864d69223 e8e50b42231236b82df27684e7ec0beb d02f9caf3e11b191a38179103495106f a26b38f94253cdfbf1028d72cf3a498b

Email subscription for changes to this article