適用対象: Azure Stack HCI バージョン 22H2 および 21H2。Windows Server 2022、Windows Server 2019、Windows Server 2016
このトピックでは、システム メモリを使用して、頻繁な読み取りをキャッシュすることで Azure Stack HCI と Windows Server のパフォーマンスを向上させる方法について説明します。 書き込みをメモリにキャッシュすることはできません。
Azure Stack HCI と Windows Server は、クラスター共有ボリューム (CSV) のメモリ内読み取りキャッシュと互換性があります。 システム メモリを使用して読み取りをキャッシュすると、バッファーのない I/O を使用して VHD または VHDX ファイルにアクセスする Hyper-V などのアプリケーションのパフォーマンスを向上させることができます。 (バッファーなし I/O は、Windows キャッシュ マネージャーによってキャッシュされないすべての操作です)。
メモリ内キャッシュはサーバーローカルであるため、データの局所性が向上します。 最近の読み取りは、仮想マシン (VM) が実行されているのと同じホスト上のメモリにキャッシュされるため、読み取りがネットワーク経由で実行される頻度が減ります。 これにより、待機時間が短くなり、ストレージのパフォーマンスが向上します。
CSV メモリ内読み取りキャッシュは、記憶域プール キャッシュとは異なっています。
Planning considerations
メモリ内読み取りキャッシュは、仮想デスクトップ インフラストラクチャ (VDI) などの読み取り集中型ワークロードに最も効果的です。 逆に、ワークロードの書き込みが非常に多い場合は、キャッシュによって値よりも多くのオーバーヘッドが発生する可能性があるため、無効にする必要があります。
CSV メモリ内読み取りキャッシュには、最大 80% の合計物理メモリを使用できます。 VM に十分なメモリを残すように注意してください。
Note
Certain microbenchmarking tools like DISKSPD and VM Fleet may produce worse results with the CSV in-memory read cache enabled than without it. By default VM Fleet creates one 10 GiB VHDX per VM – approximately 1 TiB total for 100 VMs – and then performs uniformly random reads and writes to them. 実際のワークロードとは異なり、読み取りは予測可能または反復的なパターンに従わないので、メモリ内キャッシュは効果的ではなく、オーバーヘッドが発生します。
メモリ内読み取りキャッシュの構成
CSV メモリ内読み取りキャッシュは、同じ機能を備えた Azure Stack HCI、Windows Server 2019、および Windows Server 2016 で使用できます。 Azure Stack HCI と Windows Server 2019 では、既定では 1 ギビバイト (GiB) が割り当てられています。 Windows Server 2016 では、既定ではオフになっています。
OS version | 既定の CSV キャッシュ サイズ |
---|---|
Azure Stack HCI | 1 GiB |
Windows Server 2019 | 1 GiB |
Windows Server 2016 | 0 (disabled) |
Windows Admin Center を使用してキャッシュを構成する
Windows Admin Center を使用してキャッシュを構成するには、次の操作を行います。
- In Windows Admin Center, connect to a cluster, and then select Settings from the Tools pane on the left.
- Select In-memory cache under Storage on the Settings pane.
- 右側のウィンドウでは、チェック ボックスをオンまたはオフにしてキャッシュを有効または無効にします。また、キャッシュに割り当てるサーバーあたりの最大メモリ数を指定することもできます。
- When done, select Save.
PowerShell を使用してキャッシュを構成する
PowerShell を使用して割り当てられているメモリの量を確認するには、管理者として次を実行します。
(Get-Cluster).BlockCacheSize
返される値は、サーバーごとにメビバイト (MiB) 単位です。 たとえば、1024
は 1 GiB を表します。
割り当てられるメモリの量を変更するには、PowerShell を使用してこの値を変更します。 たとえば、サーバーごとに 2 GiB を割り当てるには、次を実行します。
(Get-Cluster).BlockCacheSize = 2048
変更をすぐに有効にするには、CSV ボリュームを一時停止してから再開するか、サーバー間で移動します。 たとえば、次の PowerShell フラグメントを使用して、各 CSV を別のサーバー ノードに移動し、もう一度戻します。
Get-ClusterSharedVolume | ForEach {
$Owner = $_.OwnerNode
$_ | Move-ClusterSharedVolume
$_ | Move-ClusterSharedVolume -Node $Owner
}
Next steps
関連情報については、以下も参照してください。
- 記憶域プール キャッシュの について
- フェールオーバー クラスター でクラスター共有ボリュームを使用する