libvirt / cgroups による CPU アフィニティのリセット

libvirt / cgroups による CPU アフィニティのリセット

VM を起動すると、ArchLinux ホスト上のすべてのプロセスの CPU コア アフィニティがすべてのコアにリセットされます。VM が停止した場合も同じことが起こります。

私の VM は CPU ピンニングを使用していますが、これは数か月前までは発生していませんでした。virt-manager と virsh を使用して VM を起動しようとしましたが、どちらもこの方法で実行されます。

私は cgroups について読んできましたが、それがアフィニティ設定に影響を与えるとは書かれていません。

現在の libvirt バージョン: 1:7.5.0-1

ゲーム用 VM の CPU 分離、コア シールドなどに関するトピックはたくさんありますが、通常のコア アフィニティがリセットされる理由がわかりません。原因を調べる方法はありますか? 通常、タスクセットを使用してアフィニティを設定します。これは新しい機能のはずですが、見つけることができません。

答え1

確かにそれは cgroups でした!

正確には cgroups2 です。この「バグ」は、私のディストリビューションである Arch Linux が cgroups を変更したときに発生したものと思われます。

「/etc/libvirt/qemu.conf設定ファイルを介して、マウントされている場合でもコントローラーの使用を明示的にオフにすることができます。」によると、https://libvirt.org/cgroups.html#legacyレイアウトしかし、これは私にとってはまったく機能しませんでした。とにかく、cgroup を使用して cpuset を作成しただけです (なぜかはわかりません)。

ただし、cpusets なしで (または cgroup なしで) カーネルをビルドできるため、問題は解決しました。補足:これを安全に実行できます。構成されたすべてのコア ピンニングは正常に保持されます。

libvirt の設定がどのように機能するかについて、より良い解決策や洞察をお持ちの場合は、ぜひお知らせください。

関連情報