Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp523293ybt; Wed, 1 Jul 2020 04:12:48 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz9C8Uepq7CuOit4CcexYVg5P0XfXpM5mhX2qBkCZuYC5gdXeki3tuHz99OJ1EoOiReKcwF X-Received: by 2002:aa7:db57:: with SMTP id n23mr27939128edt.235.1593601968122; Wed, 01 Jul 2020 04:12:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1593601968; cv=none; d=google.com; s=arc-20160816; b=lgtseWNVjFk300XZHg4mKAAlZpLwMe9K9vvzHUNz1Ivo0bCGQV0ueGmE4dPBqTbbVC yzP8rt5/Ijnlh0mDn0Io8EmV9EzZFKNLfFKJckHCn0gipWvs7Axm6+a32JCJSl8fxCFp u0MFiwj7NguUnTpsmLR8Nm3uuEueXWqPk8wxVdBsBizNfMlUtx+ewXAk0DOrrh+wydKp XD1UkaIBKsP136Q5afuyAeAIG3eEAt2gcp5FkJzZwAW+YFa3z+Moln3wTcz2ECstaDOe nlbqChNagNaDf0+ZK3TgGU+5GptQVkV7+Jsoeta4zsZIMW2Pn709JrlK7VJVQbN1WUzU cmEQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:in-reply-to:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :dkim-signature; bh=Yexujkd7auN9ITgPnwA4kXggvTeorMC1CWNzXOrWnvM=; b=wX7I8FLvt4hn6xDN7PJeMKqkY9zIdvkTxbdai6FDHLiISAcTEu+YiJmvIWjPwOTz3N vBFDNfD8Q4FNBYueHD1a1TuiUjj7kOSz0tN6VKX3KzaN/XPxisbTibv33awrom02HndA oUQivhWZ99P4sKujl3iwMl2MM+ks0oj++New8DifTwDsQBqEzfRcgzNANKch6PXDAotv GlrLU/m7ZW7SlC/sWN+F2CqA/J4wpU0G5Rrs5734xlr+OHB6igMMwYTRrrQTTDKcT2Gx aOWoL8YzfpyGJfKchJkxo67f4xwcOzVXlDek+huPHtducOgUazNF0ywpxPJWNwd2EQPN 0HMQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=hx51FY+I; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id dm9si4772261ejc.624.2020.07.01.04.12.24; Wed, 01 Jul 2020 04:12:48 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=hx51FY+I; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730213AbgGALMK (ORCPT + 99 others); Wed, 1 Jul 2020 07:12:10 -0400 Received: from us-smtp-delivery-1.mimecast.com ([205.139.110.120]:25929 "EHLO us-smtp-1.mimecast.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1730159AbgGALMI (ORCPT ); Wed, 1 Jul 2020 07:12:08 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1593601925; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=Yexujkd7auN9ITgPnwA4kXggvTeorMC1CWNzXOrWnvM=; b=hx51FY+InFYWb/b2mFr5WLS/uXogj8g60xIVikBVxUDik2o3QdsQ5tR5UrEmSPQ+ZI4iU5 zaYmKu/8wywh2GkGQ/fKYXoo8C2WRILj7TwMYMVbBFjMhT6i82G5actO6Smhx2RwyszOTb wWgHQ0IqXbCxy0NVkUi9Cvj4pqAmemk= Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-406-bul42xRlPjebAR0KU5xTpg-1; Wed, 01 Jul 2020 07:12:03 -0400 X-MC-Unique: bul42xRlPjebAR0KU5xTpg-1 Received: by mail-wr1-f72.google.com with SMTP id i14so19957195wru.17 for ; Wed, 01 Jul 2020 04:12:03 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to; bh=Yexujkd7auN9ITgPnwA4kXggvTeorMC1CWNzXOrWnvM=; b=rCul0QlB4nfz64ojv0ezybTUiDlO8oi8ts1awmzxqpwDXCwGLSoF+qYc/Bb/lS/d3R iTt8RXftie2y1r/1jVjPGNlzvr0026MHZotYSuSAydiHlZI80BZDDOcYNovft0FqBJOq cu+7oOMM8kYP+Q85Jk/5IG/TRRdXblV+0nhbhRfOMR/TtKHqQjdbVv6bcqtTtVVmVF6m q/WOnzy4qIY/hllqUImttEe/5OXyVMdxCZtZtQ54tmKCdcri/wf83KuvsmEQSOBQuaGe EzXy0+pLPZm8J+sc0vb/Sj+ZyQ+uliMXdqNh7ZYUsdDGzdThEeZtiCbCt8XySx9IJFjx Lz8g== X-Gm-Message-State: AOAM532BgacuA65UM2zx/+P78430TIbaSDl2zaSDzrI6jrqF9fgQBGTB 4cpwFljqPTJEg7IM4rPDplx7ifhe+ifA0WGEomv4Wo638cK+pYvyXxkkC7Hkz9PowS9M1/j4Ogg GYBR2Xn+j8koCyrPVj7sv0hfS X-Received: by 2002:a1c:398b:: with SMTP id g133mr25236177wma.76.1593601922427; Wed, 01 Jul 2020 04:12:02 -0700 (PDT) X-Received: by 2002:a1c:398b:: with SMTP id g133mr25236149wma.76.1593601922091; Wed, 01 Jul 2020 04:12:02 -0700 (PDT) Received: from redhat.com (bzq-79-182-31-92.red.bezeqint.net. [79.182.31.92]) by smtp.gmail.com with ESMTPSA id 140sm1930942wmb.15.2020.07.01.04.11.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 01 Jul 2020 04:12:01 -0700 (PDT) Date: Wed, 1 Jul 2020 07:11:57 -0400 From: "Michael S. Tsirkin" To: Eugenio Perez Martin Cc: Konrad Rzeszutek Wilk , linux-kernel@vger.kernel.org, kvm list , virtualization@lists.linux-foundation.org, netdev@vger.kernel.org, Jason Wang Subject: Re: [PATCH RFC v8 02/11] vhost: use batched get_vq_desc version Message-ID: <20200701071041-mutt-send-email-mst@kernel.org> References: <20200611113404.17810-1-mst@redhat.com> <20200611113404.17810-3-mst@redhat.com> <20200611152257.GA1798@char.us.oracle.com> <20200622114622-mutt-send-email-mst@kernel.org> <20200622122546-mutt-send-email-mst@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Jul 01, 2020 at 12:43:09PM +0200, Eugenio Perez Martin wrote: > On Tue, Jun 23, 2020 at 6:15 PM Eugenio Perez Martin > wrote: > > > > On Mon, Jun 22, 2020 at 6:29 PM Michael S. Tsirkin wrote: > > > > > > On Mon, Jun 22, 2020 at 06:11:21PM +0200, Eugenio Perez Martin wrote: > > > > On Mon, Jun 22, 2020 at 5:55 PM Michael S. Tsirkin wrote: > > > > > > > > > > On Fri, Jun 19, 2020 at 08:07:57PM +0200, Eugenio Perez Martin wrote: > > > > > > On Mon, Jun 15, 2020 at 2:28 PM Eugenio Perez Martin > > > > > > wrote: > > > > > > > > > > > > > > On Thu, Jun 11, 2020 at 5:22 PM Konrad Rzeszutek Wilk > > > > > > > wrote: > > > > > > > > > > > > > > > > On Thu, Jun 11, 2020 at 07:34:19AM -0400, Michael S. Tsirkin wrote: > > > > > > > > > As testing shows no performance change, switch to that now. > > > > > > > > > > > > > > > > What kind of testing? 100GiB? Low latency? > > > > > > > > > > > > > > > > > > > > > > Hi Konrad. > > > > > > > > > > > > > > I tested this version of the patch: > > > > > > > https://lkml.org/lkml/2019/10/13/42 > > > > > > > > > > > > > > It was tested for throughput with DPDK's testpmd (as described in > > > > > > > http://doc.dpdk.org/guides/howto/virtio_user_as_exceptional_path.html) > > > > > > > and kernel pktgen. No latency tests were performed by me. Maybe it is > > > > > > > interesting to perform a latency test or just a different set of tests > > > > > > > over a recent version. > > > > > > > > > > > > > > Thanks! > > > > > > > > > > > > I have repeated the tests with v9, and results are a little bit different: > > > > > > * If I test opening it with testpmd, I see no change between versions > > > > > > > > > > > > > > > OK that is testpmd on guest, right? And vhost-net on the host? > > > > > > > > > > > > > Hi Michael. > > > > > > > > No, sorry, as described in > > > > http://doc.dpdk.org/guides/howto/virtio_user_as_exceptional_path.html. > > > > But I could add to test it in the guest too. > > > > > > > > These kinds of raw packets "bursts" do not show performance > > > > differences, but I could test deeper if you think it would be worth > > > > it. > > > > > > Oh ok, so this is without guest, with virtio-user. > > > It might be worth checking dpdk within guest too just > > > as another data point. > > > > > > > Ok, I will do it! > > > > > > > > * If I forward packets between two vhost-net interfaces in the guest > > > > > > using a linux bridge in the host: > > > > > > > > > > And here I guess you mean virtio-net in the guest kernel? > > > > > > > > Yes, sorry: Two virtio-net interfaces connected with a linux bridge in > > > > the host. More precisely: > > > > * Adding one of the interfaces to another namespace, assigning it an > > > > IP, and starting netserver there. > > > > * Assign another IP in the range manually to the other virtual net > > > > interface, and start the desired test there. > > > > > > > > If you think it would be better to perform then differently please let me know. > > > > > > > > > Not sure why you bother with namespaces since you said you are > > > using L2 bridging. I guess it's unimportant. > > > > > > > Sorry, I think I should have provided more context about that. > > > > The only reason to use namespaces is to force the traffic of these > > netperf tests to go through the external bridge. To test netperf > > different possibilities than the testpmd (or pktgen or others "blast > > of frames unconditionally" tests). > > > > This way, I make sure that is the same version of everything in the > > guest, and is a little bit easier to manage cpu affinity, start and > > stop testing... > > > > I could use a different VM for sending and receiving, but I find this > > way a faster one and it should not introduce a lot of noise. I can > > test with two VM if you think that this use of network namespace > > introduces too much noise. > > > > Thanks! > > > > > > > > > > > > > - netperf UDP_STREAM shows a performance increase of 1.8, almost > > > > > > doubling performance. This gets lower as frame size increase. > > Regarding UDP_STREAM: > * with event_idx=on: The performance difference is reduced a lot if > applied affinity properly (manually assigning CPU on host/guest and > setting IRQs on guest), making them perform equally with and without > the patch again. Maybe the batching makes the scheduler perform > better. > > > > > > > - rests of the test goes noticeably worse: UDP_RR goes from ~6347 > > > > > > transactions/sec to 5830 > > * Regarding UDP_RR, TCP_STREAM, and TCP_RR, proper CPU pinning makes > them perform similarly again, only a very small performance drop > observed. It could be just noise. > ** All of them perform better than vanilla if event_idx=off, not sure > why. I can try to repeat them if you suspect that can be a test > failure. > > * With testpmd and event_idx=off, if I send from the VM to host, I see > a performance increment especially in small packets. The buf api also > increases performance compared with only batching: Sending the minimum > packet size in testpmd makes pps go from 356kpps to 473 kpps. Sending > 1024 length UDP-PDU makes it go from 570kpps to 64 kpps. > > Something strange I observe in these tests: I get more pps the bigger > the transmitted buffer size is. Not sure why. > > ** Sending from the host to the VM does not make a big change with the > patches in small packets scenario (minimum, 64 bytes, about 645 > without the patch, ~625 with batch and batch+buf api). If the packets > are bigger, I can see a performance increase: with 256 bits, it goes > from 590kpps to about 600kpps, and in case of 1500 bytes payload it > gets from 348kpps to 528kpps, so it is clearly an improvement. > > * with testpmd and event_idx=on, batching+buf api perform similarly in > both directions. > > All of testpmd tests were performed with no linux bridge, just a > host's tap interface ( in xml), with a > testpmd txonly and another in rxonly forward mode, and using the > receiving side packets/bytes data. Guest's rps, xps and interrupts, > and host's vhost threads affinity were also tuned in each test to > schedule both testpmd and vhost in different processors. > > I will send the v10 RFC with the small changes requested by Stefan and Jason. > > Thanks! > OK so there's a chance you are seeing effects of an aggressive power management. which tuned profile are you using? It might be helpful to disable PM/frequency scaling. > > > > > > > > > > > > > > > OK so it seems plausible that we still have a bug where an interrupt > > > > > is delayed. That is the main difference between pmd and virtio. > > > > > Let's try disabling event index, and see what happens - that's > > > > > the trickiest part of interrupts. > > > > > > > > > > > > > Got it, will get back with the results. > > > > > > > > Thank you very much! > > > > > > > > > > > > > > > > > > > > - TCP_STREAM goes from ~10.7 gbps to ~7Gbps > > > > > > - TCP_RR from 6223.64 transactions/sec to 5739.44 > > > > > > > >