QEMU:virtio_net 驅動程式的網路效能緩慢

QEMU:virtio_net 驅動程式的網路效能緩慢

我正在為主機和來賓運行帶有 Linux 的 KVM/QEMU 7.2.0(x86_64 上的核心 6.1.6)。對於虛擬網絡,我在主機上使用橋接設備,來賓將其 NIC 作為tap設備連接到該主機:

-netdev {"type":"tap","vhost":true,"id":"hostnet0"}
-device {"driver":"virtio-net-pci","netdev":"hostnet0","id":"net0"}

就 QEMU 而言,虛擬訪客網路介面virtio-net-pci應該具有最佳效能。然而,virtio-net-pci在來賓中僅提供約 0.3 MB/s 的接收速度,而作為比較,切換驅動程式可e1000e提供約 400 MB/s 的接收速度。

透過反覆試驗,我發現如果我在來賓虛擬機器中設定模組napi_weight=1參數virtio_net,效能就會恢復正常。

在閱讀了 NAPI 之後,我開始了解該napi_weight參數用於在接收資料包的基於中斷和基於輪詢的服務之間進行切換。通常,該參數預設為NAPI_POLL_WEIGHT常數,即 64。似乎可以解決問題。只是感覺不對,即我認為我不應該在開箱即用的virtio_net情況下顯式設定此參數。e1000如果我要使用此參數,我還擔心潛在的高 CPU 使用率。

有人知道它背後可能是什麼以及我可以嘗試什麼嗎?

相關內容