XenServer

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

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

データがディスクから複数回読み取られるたびに、メモリにキャッシュされるため、パフォーマンスの向上が見られます。この変化は、I/O負荷の高い状況で発生するサービス低下において最も顕著です。例えば、次のような状況です。

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

適切なライセンスタイプをお持ちの場合、読み取りキャッシュはデフォルトで有効になっています。

注:

ストレージ読み取りキャッシュは、XenServer® Premium Editionのお客様にご利用いただけます。

読み取りキャッシュの有効化と無効化

NFS、EXT3/EXT4、SMB、GFS2 SRタイプなどのファイルベースのSRでは、読み取りキャッシュはデフォルトで有効になっています。その他のすべてのSRでは、読み取りキャッシュは無効になっています。

NFS、EXT3/EXT4、またはSMB SRで読み取りキャッシュを無効にすることができます。GFS2 SRでは、読み取りキャッシュを無効にすることはできません。

xe CLIを使用して特定のSRの読み取りキャッシュを無効にするには、次のコマンドを実行します。

xe sr-param-set uuid=sr-uuid other-config:o_direct=true
<!--NeedCopy-->

XenCenter®を使用して特定のSRの読み取りキャッシュを無効にするには、SRのプロパティダイアログに移動します。読み取りキャッシュタブで、読み取りキャッシュを有効または無効にすることを選択できます。

詳細については、SRプロパティの変更を参照してください。

制限事項

  • 読み取りキャッシュは、NFS、EXT3/EXT4、SMB、およびGFS2 SRでのみ利用可能です。他のSRタイプでは利用できません。

  • 読み取りキャッシュは、読み取り専用VDIおよびVDI親にのみ適用されます。これらのVDIは、VMが「Fast Clone」またはディスクスナップショットから作成される場合に存在します。多くのVMが単一の「ゴールデン」イメージからクローンされる場合に、最大のパフォーマンス向上が見られます。

  • パフォーマンスの向上は、ホストのコントロール ドメイン (dom0) で利用可能な空きメモリ量に依存します。dom0メモリの量を増やすと、読み取りキャッシュにより多くのメモリを割り当てることができます。dom0メモリの設定方法については、コントロール ドメインに割り当てられるメモリ量の変更を参照してください。

  • メモリ読み取りキャッシュがオンの場合、キャッシュミスによりI/Oがシリアル化されます。これは、読み取りキャッシュがオフの場合よりもコストがかかる場合があります。読み取りキャッシュがオフの場合、I/Oは並列化できるためです。キャッシュミスの影響を減らすには、利用可能なdom0メモリの量を増やすか、SRの読み取りキャッシュを無効にします。

IntelliCache™との比較

IntelliCacheとメモリベースの読み取りキャッシュは、いくつかの点で補完的です。IntelliCacheは異なる階層でキャッシュするだけでなく、読み取りに加えて書き込みもキャッシュします。IntelliCacheはネットワークからの読み取りをローカルディスクにキャッシュします。インメモリ読み取りキャッシュは、ネットワークまたはディスクからの読み取りをホストメモリにキャッシュします。インメモリ読み取りキャッシュの利点は、メモリがソリッドステートディスク (SSD) よりも依然として桁違いに高速であることです。ブートストームやその他の重いI/O状況でのパフォーマンスが向上します。

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

読み取りキャッシュサイズの設定

XenServerのコントロール ドメイン (dom0) により多くのメモリを割り当てることで、読み取りキャッシュのパフォーマンスは最適化できます。

重要:

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

XenServerホストで、ローカルシェルを開き、rootとしてログインします。

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

/opt/xensource/libexec/xen-cmdline --set-xen dom0_mem=nnM,max:nnM
<!--NeedCopy-->

初期値と最大値の両方を同じ値に設定します。たとえば、dom0メモリを20,480 MiBに設定するには:

/opt/xensource/libexec/xen-cmdline --set-xen dom0_mem=20480M,max:20480M
<!--NeedCopy-->

重要:

リードキャッシュサイズを変更した後、すべてのホストを再起動してください。

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

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

free -m
<!--NeedCopy-->

free -m の出力は、現在のdom0メモリ設定を示しています。さまざまなオーバーヘッドのため、値は予想よりも少なくなる場合があります。以下の例の表は、dom0が2.6 GiBに設定されたホストからの出力を示しています。

|                     | Total  | Used | Free  | Shared | Buffer/cache | Available |
|---------------------|--------|------|-------|--------|--------------|-----------|
| Mem:                | 2450   | 339  | 1556  | 9      | 554          | 2019      |
| Swap:               | 1023   | 0    | 1023  |        |              |           |
<!--NeedCopy-->

使用できる値の範囲?

XenServerコントロール ドメイン (dom0) は64ビットであるため、たとえば32,768 MiBのような大きな値を使用できます。ただし、dom0メモリを1 GiB未満に減らさないことをお勧めします。

XenCenterの表示に関する注意

ホスト全体のメモリは、Xen®ハイパーバイザー、dom0、VM、および空きメモリで構成されていると考えることができます。dom0とVMのメモリは通常固定サイズですが、Xenハイパーバイザーは可変量のメモリを使用します。使用されるメモリ量はさまざまな要因に依存します。これらの要因には、任意の時点でホスト上で実行されているVMの数と、それらのVMがどのように構成されているかが含まれます。Xenが使用するメモリ量を制限することはできません。メモリ量を制限すると、Xenがメモリ不足になり、ホストに空きメモリがある場合でも新しいVMが起動できなくなる可能性があります。

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

XenServerフィールドには、dom0に割り当てられたメモリとXenメモリ合計が表示されます。したがって、表示されるメモリ量は、管理者が指定した量よりも高くなる可能性があります。管理者がdom0に固定サイズを設定している場合でも、VMの起動および停止時にメモリサイズが変動する可能性があります。

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