Article ID: 115056, created on Dec 1, 2015, last review on Jun 17, 2016

  • Applies to:
  • Virtuozzo 6.0
  • Virtuozzo containers for Linux 4.7

症状

バックアップの作成、バックアップのブラウズ、バックアップの復元など、バックアップ関連のオぺレーション中に、ハードウェアノードのロードアベレージが非常に高くなります。

原因

  1. ほとんどの場合、これは想定された挙動です。
  2. 場合によっては、ハードウェアノードでの CPU オーバーコミットを示す場合や、ハードウェアノード自体でプロセス実行のスケジューリングの優先度が非常に低くなっている場合があります。

解決策

  1. vzabackup ツールまたは GUI パネル経由でのコンテナのバックアップ作成時に、システムは Acronis モジュールを使用してコンテナのプライベート領域のデータを取得します。このオぺレーションには、ファイルシステムのスナップショットを準備し、バックアップの実行中にファイルに加えられた変更を収集するトラッカーを初期化するステップが含まれます。

    このステップでは、バックアップ内のデータの破壊を防止するためにコンテナのプロセスを凍結する必要があります。通常、ほとんどの場合、このステップはあまり時間がかからず、数分程度で終了するはずですが、 稀に、コンテナのプライベート領域のサイズ、"/vz" を格納するパーティションのサイズ、システムの空き/使用可能メモリの容量によっては、このステップに非常に時間がかかる可能性があり、巨大なコンテナでは 1 時間かかる場合もあります。

    コンテナのプロセスが凍結状態で実行されていないと、これらのプロセスはネットワーク要求を処理しないため、サービスがダウンして応答不能になっているようにみえます。ただし、このステージが完了すると、すべてのプロセスが再開し、データの損失なく機能を続けます。

    技術的に言うと、プロセスはスリープ状態であり、カーネルがプロセスの実行を再開するのを待っています。これは割り込み不可能なスリープ(D)という状態です。この状態は、実行中状態(R)とともにロードアベレージ(LA)値に加算されます。そのため、たとえばコンテナにプロセスが 300 件ある場合、このサーバのロードアベレージ値は 300 以上に増加します。

    バックアップの作成中に、ノードで以下のコマンドを実行します。

    ~# vzps axfww -o veid,pid,ppid,rsz,vsz,state,wchan=WIDE-WCHAN-COLUMN,cmd -E CTID
    

    (ここで CTID とは、バックアップするコンテナの ID です)。 wchan 列は refrigerator をポイントします。つまり、作成されたバックアップの整合性を維持するためにコンテナは凍結状態になっています。

  2. この問題の原因が CPU オーバーコミットではないことを確認するには、ハードウェアノードとコンテナの CPU 優先度をチェックしてください。

    ~# vzcpucheck -v
    

    ノードがオーバーコミットされている場合、以下のようなメッセージが表示されます。

    Warning: hardware node is overcommited

    ハードウェアノードのプロセスに、より高い CPU 優先度を設定します。

    ~# vzctl set 0 --save --cpuunits VALUE
    

    注: VALUE は、相対的な数値です。ニーズやその他のコンテナの優先値に応じて設定してください。

    詳しくは、以下の KB 記事を参照してください。

    112588 CPU limits design in Parallels Server Bare Metal 5 and Parallels Virtuozzo Containers for Linux

    変更を永久的に適用し、再起動後も優先度を維持するためには、/etc/vz/vz.confVE0CPUUNITS の値を調整します。

    ~# grep CPU /etc/vz/vz.conf
    VE0CPUUNITS=25000
    

    注: CPUUNITS は、「schedprio = 500000 / CPUUNITS」という等式を用いて CGroups のスケジューラ優先度に変換されます。これによって最小値と最大値の制限が定義され、コンテナの CPUUNITS の推奨値の範囲が 1000 ~ 10000 に定義されます。

2897d76d56d2010f4e3a28f864d69223 d02f9caf3e11b191a38179103495106f e8e50b42231236b82df27684e7ec0beb 0c05f0c76fec3dd785e9feafce1099a9 0dd5b9380c7d4884d77587f3eb0fa8ef c62e8726973f80975db0531f1ed5c6a2

Email subscription for changes to this article