CSV メモリ内読み取りキャッシュを使用する
適用対象: 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 メモリ内読み取りキャッシュは、記憶域プール キャッシュとは異なっています。
計画に関する考慮事項
メモリ内読み取りキャッシュは、仮想デスクトップ インフラストラクチャ (VDI) などの読み取り集中型ワークロードに最も効果的です。 逆に、ワークロードの書き込みが非常に多い場合は、キャッシュによって値よりも多くのオーバーヘッドが発生する可能性があるため、無効にする必要があります。
CSV メモリ内読み取りキャッシュには、最大 80% の合計物理メモリを使用できます。 VM に十分なメモリを残すように注意してください。
手記
DISKSPD や VM Fleet などの特定のマイクロベンチマーク ツールでは、CSV インメモリ読み取りキャッシュが有効になっていると、それがない場合よりも悪い結果が生じる可能性があります。 既定では、VM Fleet は VM ごとに 10 GiB VHDX を 1 つ作成し、100 個の VM に対して合計約 1 TiB を作成し、読み取りと書き込みを一様にランダム 実行します。 実際のワークロードとは異なり、読み取りは予測可能または反復的なパターンに従わないので、メモリ内キャッシュは効果的ではなく、オーバーヘッドが発生します。
メモリ内読み取りキャッシュの構成
CSV メモリ内読み取りキャッシュは、同じ機能を備えた Azure Stack HCI、Windows Server 2019、および Windows Server 2016 で使用できます。 Azure Stack HCI と Windows Server 2019 では、既定では 1 ギビバイト (GiB) が割り当てられています。 Windows Server 2016 では、既定ではオフになっています。
OS バージョン | 既定の CSV キャッシュ サイズ |
---|---|
Azure Stack HCI | 1 GiB |
Windows Server 2019 | 1 GiB |
Windows Server 2016 | 0 (無効) |
Windows Admin Center を使用してキャッシュを構成する
Windows Admin Center を使用してキャッシュを構成するには、次の操作を行います。
- Windows Admin Center でクラスターに接続し、左側の [ツール] ペインから [設定] を選択します。
- [の設定] ペインで、[Storage の下] にある [メモリ内キャッシュ] を選択します。
- 右側のウィンドウでは、チェック ボックスをオンまたはオフにしてキャッシュを有効または無効にします。また、キャッシュに割り当てるサーバーあたりの最大メモリ数を指定することもできます。
- 完了したら、[保存]を選択します。
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
}
次の手順
関連情報については、以下も参照してください。
- 記憶域プール キャッシュの について
- フェールオーバー クラスター でクラスター共有ボリュームを使用する