summary refs log tree commit diff
path: root/src/linux.rs
diff options
context:
space:
mode:
authorXiong Zhang <xiong.y.zhang@intel.corp-partner.google.com>2020-02-13 19:36:49 +0800
committerCommit Bot <commit-bot@chromium.org>2020-04-04 05:57:05 +0000
commit4cbcc26f5c34d8254a9f98e065a923abb194ba8b (patch)
tree5f68084f0bbca71efbabb5996b79813d7eccd04b /src/linux.rs
parent664cc3ca49cb58d5bf7d936686fd211d6dd728bf (diff)
downloadcrosvm-4cbcc26f5c34d8254a9f98e065a923abb194ba8b.tar
crosvm-4cbcc26f5c34d8254a9f98e065a923abb194ba8b.tar.gz
crosvm-4cbcc26f5c34d8254a9f98e065a923abb194ba8b.tar.bz2
crosvm-4cbcc26f5c34d8254a9f98e065a923abb194ba8b.tar.lz
crosvm-4cbcc26f5c34d8254a9f98e065a923abb194ba8b.tar.xz
crosvm-4cbcc26f5c34d8254a9f98e065a923abb194ba8b.tar.zst
crosvm-4cbcc26f5c34d8254a9f98e065a923abb194ba8b.zip
Virtio-net: Add multi queues in multi threads
In order to support 2 vq pairs for virtio-net, this patch create 2
sockets in one tap interface,  2 vq pairs(rx/tx) and 2 threads in
device model, So one vq pair has one thread and one socket in tap
corresponding.

On my SkyLake desktop with crosvm and ubuntu 18.04 guest:
If run one iperf server on host and one iperf client in guest, 2 vq
pairs has the same netwrok bandwidth as 1 vq pair, the bandwidth is
5.99Gbits/sec

If run two iperf server on host and two iperf client in guest,
In 1 vq pair mode, two iperf cliens bandwidth are 3.19Gbits/sec and
3.18Gbits/sec.
In 2 vq pairs mode, two iperf clients bandwidth are 4.87Gbits/sec and
4.86Gbits/sec.
So 2 vq pairs improve net bandwidth 52.7% compared with 1 vq pair in
this case.

BUG=chromium:1064482
TEST=Run iperf test in guest

Change-Id: I1fa14d7e24085552dc828a89a883d4a2ada34789
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/2099754
Tested-by: kokoro <noreply+kokoro@google.com>
Commit-Queue: Xiong  Zhang <xiong.y.zhang@intel.corp-partner.google.com>
Reviewed-by: Stephen Barber <smbarber@chromium.org>
Diffstat (limited to 'src/linux.rs')
-rw-r--r--src/linux.rs2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/linux.rs b/src/linux.rs
index 3370c1e..6eb1ef7 100644
--- a/src/linux.rs
+++ b/src/linux.rs
@@ -593,7 +593,7 @@ fn create_tap_net_device(cfg: &Config, tap_fd: RawFd) -> DeviceResult {
             .map_err(Error::CreateTapDevice)?
     };
 
-    let dev = virtio::Net::from(tap).map_err(Error::NetDeviceNew)?;
+    let dev = virtio::Net::from(tap, 1).map_err(Error::NetDeviceNew)?;
 
     Ok(VirtioDeviceStub {
         dev: Box::new(dev),