CSV インメモリ読み取りキャッシュでの記憶域スペースダイレクトの使用Using Storage Spaces Direct with the CSV in-memory read cache

適用先:Windows Server 2016、Windows Server 2019Applies To: Windows Server 2016, Windows Server 2019

このトピックでは、システムメモリを使用して記憶域スペースダイレクトのパフォーマンスを向上させる方法について説明します。This topic describes how to use system memory to boost the performance of Storage Spaces Direct.

記憶域スペースダイレクトは、メモリ内の読み取りキャッシュクラスターの共有ボリューム (CSV) と互換性があります。Storage Spaces Direct is compatible with the Cluster Shared Volume (CSV) in-memory read cache. システムメモリを使用して読み取りをキャッシュすると、Hyper-v などのアプリケーションのパフォーマンスを向上させることができます。 Hyper-v では、バッファーを使用しない i/o を使用して VHD または VHDX ファイルにアクセスします。Using system memory to cache reads can improve performance for applications like Hyper-V, which uses unbuffered I/O to access VHD or VHDX files. (バッファリングされていない IOs とは、Windows キャッシュマネージャーによってキャッシュされない操作のことです)。(Unbuffered IOs are any operations that are not cached by the Windows Cache Manager.)

メモリ内キャッシュはサーバーローカルであるため、ハイパー集約記憶域スペースダイレクト配置のデータの局所性が向上します。最近の読み取りは、仮想マシンが実行されているのと同じホスト上のメモリにキャッシュされるので、ネットワーク経由での読み取り回数を減らすことができます。Because the in-memory cache is server-local, it improves data locality for hyper-converged Storage Spaces Direct deployments: recent reads are cached in memory on the same host where the virtual machine is running, reducing how often reads go over the network. これにより、待機時間が短くなり、ストレージのパフォーマンスが向上します。This results in lower latency and better storage performance.

計画時の注意事項Planning considerations

インメモリ読み取りキャッシュは、仮想デスクトップインフラストラクチャ (VDI) などの読み取り負荷の高いワークロードで最も効果的です。The in-memory read cache is most effective for read-intensive workloads, such as Virtual Desktop Infrastructure (VDI). 逆に、ワークロードの書き込みが非常に多い場合は、キャッシュのオーバーヘッドが値より多くなり、無効にする必要があります。Conversely, if the workload is extremely write-intensive, the cache may introduce more overhead than value and should be disabled.

CSV インメモリ読み取りキャッシュでは、合計物理メモリの最大 80% を使用できます。You can use up to 80% of total physical memory for the CSV in-memory read cache.

ヒント

コンピューティングとストレージが同じサーバー上で実行されるハイパー収束デプロイの場合は、仮想マシン用に十分なメモリを確保するように注意してください。For hyper-converged deployments, where compute and storage run on the same servers, be careful to leave enough memory for your virtual machines. 収束スケールアウトファイルサーバー (SoFS) のデプロイでは、メモリの競合が少ないため、この設定は適用されません。For converged Scale-Out File Server (SoFS) deployments, with less contention for memory, this doesn't apply.

注意

DISKSPD やVMなどの一部のマイクロベンチマークツールでは、CSV インメモリ読み取りキャッシュが有効になっていない場合に比べて、より悪い結果が生じる可能性があります。Certain microbenchmarking tools like DISKSPD and VM Fleet may produce worse results with the CSV in-memory read cache enabled than without it. 既定では、VM は仮想マシンごとに 1 10 の GiB VHDX を作成し、100 Vm では約 1 TiB の合計を作成した後、一様にランダムな読み取りと書き込みを実行します。By default VM Fleet creates one 10 GiB VHDX per virtual machine – approximately 1 TiB total for 100 VMs – and then performs uniformly random reads and writes to them. 実際のワークロードとは異なり、読み取りは予測可能パターンまたは反復パターンに従わないので、メモリ内キャッシュは有効ではなく、オーバーヘッドが発生します。Unlike real workloads, the reads don't follow any predictable or repetitive pattern, so the in-memory cache is not effective and just incurs overhead.

インメモリ読み取りキャッシュの構成Configuring the in-memory read cache

CSV インメモリ読み取りキャッシュは、Windows Server 2016 と Windows Server 2019 の両方で同じ機能を使用して利用できます。The CSV in-memory read cache is available in both Windows Server 2016 and Windows Server 2019 with the same functionality. Windows Server 2016 では、既定で無効になっています。In Windows Server 2016, it's off by default. Windows Server 2019 では、既定で 1 GB が割り当てられています。In Windows Server 2019, it's on by default with 1 GB allocated.

OS バージョンOS version 既定の CSV キャッシュサイズDefault CSV cache size
Windows Server 2016Windows Server 2016 0 (無効)0 (disabled)
Windows Server 2019Windows Server 2019 1 GiB1 GiB

PowerShell を使用して割り当てられているメモリの量を確認するには、次のように実行します。To see how much memory is allocated using PowerShell, run:

(Get-Cluster).BlockCacheSize

返される値は、サーバーごとに mebibytes (MiB) です。The value returned is in mebibytes (MiB) per server. たとえば、1024 は1ギビバイト (GiB) を表します。For example, 1024 represents 1 gibibyte (GiB).

割り当てられるメモリの量を変更するには、PowerShell を使用してこの値を変更します。To change how much memory is allocated, modify this value using PowerShell. たとえば、サーバーごとに2つの GiB を割り当てるには、次のように実行します。For example, to allocate 2 GiB per server, run:

(Get-Cluster).BlockCacheSize = 2048

変更がすぐに有効になるようにするには、一時停止し、CSV ボリュームを再開するか、サーバー間で移動します。For changes to take effect immediately, pause then resume your CSV volumes, or move them between servers. たとえば、次の PowerShell フラグメントを使用して、各 CSV を別のサーバーノードに移動してから再び復元します。For example, use this PowerShell fragment to move each CSV to another server node and back again:

Get-ClusterSharedVolume | ForEach {
    $Owner = $_.OwnerNode
    $_ | Move-ClusterSharedVolume
    $_ | Move-ClusterSharedVolume -Node $Owner
}

関連項目See also