ツナ缶雑記

ぐうたらSEのブログです。主にマイクロソフト系技術を中心に扱います。たまに技術と関係ないことも書きます。

Hyper-V 使うなら Ryzen はやっぱりだめだった話

f:id:masatsuna:20210826023816p:plain

年末に Ryzen 9 5900X で自作 PC を組んで、いろいろ遊び倒してきました。 ゲームは全然やってないんですが、主にアプリケーション開発に活用しています。 やっぱり早いって素敵、という感想です。 お気に入りかどうかという意味ではすごく気に入っています。


Ryzen の残念な点

前々からわかっていたことなのですが、 Windows OS と Ryzen CPUは、それほど相性の良い組み合わせではありません。 特に 仮想化まわりの機能IntelAMD では差があります。 プログラム開発用途で使っていて、今回この問題を再認識したのでご紹介しておきます。

RyzenHyper-V入れ子にできない

私はプログラム開発を Hyper-V 上の仮想マシンで行っています。 プログラム開発を行うと、知らぬ間にレジストリに値が追加されていたり、環境変数が無意味に増えていたり、環境が汚れやすくなります。 最初のうちはいいのですけど、だんだんそういうゴミがたまっていって、ある日競合したりして、めんどくさいことになるわけです。 それに新しい OS が出たり、新しい言語が出たりしたとき、ちょっと試すのに仮想マシンは最適です。 そんなこともあり、開発環境は Hyper-V 上の仮想マシン、というのが私のやり方として定着しました。 仮想マシンにしておけば、いらなくなった瞬間に破棄できますし、新たなマシンを作るのも簡単です。

昨今のプログラム開発と言えば、 Docker の出番が非常に増えています。 Windows 上で Docker を使う場合は、 Docker Desktop というツールをインストールし、 WSL2 を使えるようにする、というのが現状の基本的なやり口です。

これらのツールを動かすためには、 BIOS レベルで設定を行わなければなりません。 Ryzen の場合は、以下の記事でも紹介したとおり、 SVM Mode を有効にしなければなりません。

tsuna-can.hateblo.jp

ですが、この設定は、あくまで物理マシンの BIOS の話をしています。

私がやりたいのは、 Hyper-V 上に作成した仮想マシン内で Docker Desktop を動かすことです。 それを行うためには、 Hyper-V のホスト側で「仮想 CPU の仮想化」ができるようにしなければなりません。 しかし、これができるのは Intel CPU だけなんですよね。 詳細は以下の記事に解説されています。

docs.microsoft.com

Ryzen CPU では私のやりたいことはできないぞ、というオチでした。

まとめ

今回は「できない」話をしてしまいました。 Ryzen のシェアもあがってきたので、 Windows にももう少し頑張ってもらえるとユーザーとしてはありがたいのですが。。。

2021/10/19 更新

AMD プロセッサでも Windows 11 または Windows Server 2022 から、 Hyper-V入れ子ができるようになります。 これで Ryzen のデメリットがまたひとつなくなりますね。

tsuna-can.hateblo.jp