ストレージ読み取りキャッシュ

読み取りキャッシュでは、外部ディスクからの最初の読み取り後、データがホストの空きメモリにキャッシュされるので、仮想マシンのディスクパフォーマンスが向上します。単一のベース仮想マシンから多数の仮想マシンが複製されている状況では、ディスクからの読み取りブロック数が大幅に削減されるため、パフォーマンスが向上します。たとえば、Citrix Virtual DesktopsのMachine Creation Service(MCS)環境では、

データがメモリにキャッシュされるため、ディスクから複数回読み取る場合には常にパフォーマンスが向上します。最も顕著な例は、負荷の高いI/O処理によりサービス速度が低下している場合です。たとえば、次のような場合です:

  • 多数のエンドユーザーが、非常に短時間の間に一斉に起動する場合(ブートストーム)
  • 多数の仮想マシンが同時刻にマルウェアスキャンを実行するようにスケジュール指定されている場合(アンチウイルスストーム)。

適切なライセンスの種類がある場合は、読み取りキャッシュはデフォルトで有効です。

注:

ストレージ読み取りキャッシュ機能は、XenServer Enterprise Editionユーザーが使用できます。

ストレージ読み取りキャッシュ機能は、Citrix Virtual DesktopおよびCitrix Virtual Apps権限によりXenServerにアクセスするユーザーも使用できます。

読み取りキャッシュを有効または無効にする

NFSやEXT3ストレージリポジトリなど、ファイルベースのストレージリポジトリの場合、読み取りキャッシュはデフォルトでオンになっています。ほかのストレージリポジトリの場合はすべてデフォルトでオフです。

特定のストレージリポジトリで読み取りキャッシュを無効にするには、次のコマンドを実行します:

xe sr-param-set uuid=sr-uuid other-config:o_direct=true

制限事項

  • 読み取りキャッシュは、NFSおよびEXT3ストレージリポジトリの場合にのみ使用できます。そのほかの種類のストレージリポジトリでは使用できません。

  • 読み取りキャッシュは、読み取り専用のVDIおよび親VDIに対してのみ適用されます。これらのVDIは、「高速複製」またはディスクスナップショットから作成された仮想マシン上に存在します。最もパフォーマンスが向上するのは、多数の仮想マシンが単一の「ゴールドイメージ」から複製されている場合です。

  • パフォーマンスが向上する度合いは、ホストのコントロールドメイン(dom0)で使用可能な空きメモリ量に応じて異なります。dom0のメモリ量を増やすと、読み取りキャッシュに割り当てられるメモリ量も増加します。dom0のメモリ量の設定について詳しくは、CTX134951を参照してください。

IntelliCacheとの比較

IntelliCacheおよびメモリベースの読み取りキャッシュは、ある意味において相補的です。IntelliCacheは、別の階層でキャッシュするだけではなく、読み取りおよび書き込みの両方をキャッシュします。IntelliCacheは、ネットワークからの読み取りをローカルディスクにキャッシュします。インメモリ読み取りキャッシュは、ネットワークまたはディスクからの読み取りをホストメモリにキャッシュします。インメモリ読み取りキャッシュの利点は、メモリの方がSolid-State Disk(SSD)よりも速度が10倍速いということです。このため、ブートストームや負荷の高いI/O処理の状況でも、パフォーマンスが向上します。

読み取りキャッシュとIntelliCacheは、同時に有効にすることができます。この場合、ネットワークからの読み取りをIntelliCacheがローカルディスクにキャッシュし、そのローカルディスクからの読み取りを、読み取りキャッシュがメモリにキャッシュします。

読み取りキャッシュサイズを設定する

読み取りキャッシュのパフォーマンスを最適化するには、XenServerのコントロールドメイン(dom0)のメモリ量を増やします。

重要:

最適化のために、読み取りキャッシュサイズは、プール内のすべてのホストで個別に設定する必要があります。読み取りキャッシュサイズに変更を加える場合は、プール内のすべてのホストに対して設定する必要があります。

XenServerホストのローカルシェルを開き、ルートユーザーとしてログオンします。

読み取りキャッシュサイズを設定するには、次のコマンドを実行します:

/opt/xensource/libexec/xen-cmdline --set-xen dom0_mem=nnM,max:nnM

初期値と最大値は、同じ値に設定します。たとえば、dom0メモリを2,048MBに設定するには、次のように入力します:

/opt/xensource/libexec/xen-cmdline --set-xen dom0_mem=20480M,max:20480M

重要:

読み取りキャッシュサイズを変更したら、すべてのホストを再起動します。

現在のdom0のメモリ割り当てを表示する

現在のdom0のメモリ設定を表示するには、次のように入力します:

free -m

free -mの出力は、現在のdom0のメモリ設定を示しています。この値は、さまざまなオーバーヘッドにより想定された値よりも小さくなっている場合があります。次の表は、dom0を752MBに設定した場合のホストの出力例です。

  合計 使用 空き 共有 バッファ キャッシュ
Mem 594 486 108 0 149 78
-/+ buffers/cache   258 336      
Swap 511 49 462      

使用可能な値の範囲:

XenServerコントロールドメイン(dom0)は64ビットであるので、大きい値を使用できます(たとえば、32768MB)。Citrixは初期値を752MB以上に設定することをお勧めします。それより小さい値の場合、ホストが起動に失敗することがあります。

XenCenter の表示に関する注意事項

ホストの全メモリがXenハイパーバイザー、dom0、仮想マシン、および空きメモリから構成されていることを認識する必要があります。通常、dom0と仮想マシンのメモリのサイズは固定されていますが、Xenハイパーバイザーが使用するメモリ量は可変です。使用されるメモリの量は、さまざまな要素によって異なります。これらの要素には、常時ホストで実行中の仮想マシン数と、これらの仮想マシンの設定方法が含まれます。Xenが使用するメモリ量は制限できません。メモリ量を制限すると、Xenでメモリが不足し、ホストに空きメモリが存在する場合でも、別の仮想マシンが起動できなくなる可能性があります。

ホストに割り当てられているメモリ量を表示するには、XenCenterでホストを選択してから [メモリ] タブをクリックします。

XenServerフィールドに、dom0に割り当てられているメモリおよびXenメモリの合計容量が表示されます。このため、表示されるメモリ量は、管理者が指定した容量よりも大きくなることがあります。また、管理者がdom0に固定サイズを設定した場合でも、仮想マシンの起動および停止時にメモリサイズが変動することがあります。