ちょいちょい調べなおすのでメモを。
Windows Server 2008 R2 までは、ホスト用に確保されるメモリについては、「384 + (30 * Physical Memory GB)」で固定となっていました。
この計算式は、HYPER-V 2008 R2 SP1 Best Practices (In Easy Checklist Form) に記載されており、設定を変更するためには、レジストリに設定を投入する必要がありました。
- To determine minimum host memory reserve, follow these guidelines:
- Use the following calculation:
- 384 + (30 * Physical Memory)
- For example: 384 + (30*48) = 1824MB min reserve recommendation on host with 48GB memory
- To set memory reserve, change the following:
- Registry Key:
- HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\MemoryReserve
- REG_DWORD
- Value is set in Decimal, and is in megabytes (e.g. 4096)
- Requires a reboot to take effect
- 2-4 GB Minimum on average
Windows Server 2012 以降は Hyper-V Dynamic Memory Overview で記載されていますが、メモリ予約の計算が改善されたことで、MemoryReserve のレジストリの設定は非推奨 (機能はするようですが) となり、基本的に手動での調整はせず管理は OS に任せることが推奨となりました。
前述のチェックリストの Windows Server 2012 / R2 版が Windows Server 2012 Hyper-V Best Practices (In Easy Checklist Form) / Windows Server 2012 R2 Hyper-V Best Practices (In Easy Checklist Form) となりますが、このリストからも MemoryReserver についての記載は省略されています。
仮想マシンに割り当てることができるメモリサイズについては、Windows Server 2012 R2 で実行されている仮想マシンが起動しない に記載されている「Hyper-V Dynamic Memory Balancer\Available Memory」のパフォーマンスモニターから確認することができます。
64GB のメモリ環境で OS を起動した直後では次のようになっており、59.16 GB、ゲスト OS で割り当てることが可能です。
2008R2 までの計算式では 64 GB の環境では「384 + (30*64) = 2,304 MB」となりますが、これより多いサイズ、ホスト用の予約として確保されているようですね。
検証環境でメモリを最大限使用する場合、このパフォーマンスモニターの項目を確認することで、メモリを最大限割り当てることができるかと。