From: Neo Jia <cjia@nvidia.com>
To: Jike Song <jike.song@intel.com>
Cc: Alex Williamson <alex.williamson@redhat.com>,
"Tian, Kevin" <kevin.tian@intel.com>,
Kirti Wankhede <kwankhede@nvidia.com>,
"pbonzini@redhat.com" <pbonzini@redhat.com>,
"kraxel@redhat.com" <kraxel@redhat.com>,
"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
"Ruan, Shuai" <shuai.ruan@intel.com>,
"Lv, Zhiyuan" <zhiyuan.lv@intel.com>
Subject: Re: [RFC PATCH v3 3/3] VFIO Type1 IOMMU change: to support with iommu and without iommu
Date: Fri, 13 May 2016 08:48:53 -0700 [thread overview]
Message-ID: <20160513154853.GA11236@nvidia.com> (raw)
In-Reply-To: <5735A269.5080909@intel.com>
On Fri, May 13, 2016 at 05:46:17PM +0800, Jike Song wrote:
> On 05/13/2016 04:12 AM, Neo Jia wrote:
> > On Thu, May 12, 2016 at 01:05:52PM -0600, Alex Williamson wrote:
> >>
> >> If you're trying to equate the scale of what we need to track vs what
> >> type1 currently tracks, they're significantly different. Possible
> >> things we need to track include the pfn, the iova, and possibly a
> >> reference count or some sort of pinned page map. In the pin-all model
> >> we can assume that every page is pinned on map and unpinned on unmap,
> >> so a reference count or map is unnecessary. We can also assume that we
> >> can always regenerate the pfn with get_user_pages() from the vaddr, so
> >> we don't need to track that.
> >
> > Hi Alex,
> >
> > Thanks for pointing this out, we will not track those in our next rev and
> > get_user_pages will be used from the vaddr as you suggested to handle the
> > single VM with both passthru + mediated device case.
> >
>
> Just a gut feeling:
>
> Calling GUP every time for a particular vaddr, means locking mm->mmap_sem
> every time for a particular process. If the VM has dozens of VCPU, which
> is not rare, the semaphore is likely to be the bottleneck.
Hi Jike,
We do need to hold the lock of mm->mmap_sem for the VMM/QEMU process, but I
don't quite follow the reasoning with "dozens of vcpus", one situation that I
can think of is that we have other thread competing with the mmap_sem for the
VMM/QEMU process within KVM kernel such as hva_to_pfn, after a quick search it
seems only mostly gets used by iotcl "KVM_ASSIGN_PCI_DEVICE".
We will definitely conduct performance analysis with large configuration on
servers with E5-2697 v4. :-)
Thanks,
Neo
>
>
> --
> Thanks,
> Jike
>
WARNING: multiple messages have this Message-ID (diff)
From: Neo Jia <cjia@nvidia.com>
To: Jike Song <jike.song@intel.com>
Cc: Alex Williamson <alex.williamson@redhat.com>,
"Tian, Kevin" <kevin.tian@intel.com>,
Kirti Wankhede <kwankhede@nvidia.com>,
"pbonzini@redhat.com" <pbonzini@redhat.com>,
"kraxel@redhat.com" <kraxel@redhat.com>,
"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
"Ruan, Shuai" <shuai.ruan@intel.com>,
"Lv, Zhiyuan" <zhiyuan.lv@intel.com>
Subject: Re: [Qemu-devel] [RFC PATCH v3 3/3] VFIO Type1 IOMMU change: to support with iommu and without iommu
Date: Fri, 13 May 2016 08:48:53 -0700 [thread overview]
Message-ID: <20160513154853.GA11236@nvidia.com> (raw)
In-Reply-To: <5735A269.5080909@intel.com>
On Fri, May 13, 2016 at 05:46:17PM +0800, Jike Song wrote:
> On 05/13/2016 04:12 AM, Neo Jia wrote:
> > On Thu, May 12, 2016 at 01:05:52PM -0600, Alex Williamson wrote:
> >>
> >> If you're trying to equate the scale of what we need to track vs what
> >> type1 currently tracks, they're significantly different. Possible
> >> things we need to track include the pfn, the iova, and possibly a
> >> reference count or some sort of pinned page map. In the pin-all model
> >> we can assume that every page is pinned on map and unpinned on unmap,
> >> so a reference count or map is unnecessary. We can also assume that we
> >> can always regenerate the pfn with get_user_pages() from the vaddr, so
> >> we don't need to track that.
> >
> > Hi Alex,
> >
> > Thanks for pointing this out, we will not track those in our next rev and
> > get_user_pages will be used from the vaddr as you suggested to handle the
> > single VM with both passthru + mediated device case.
> >
>
> Just a gut feeling:
>
> Calling GUP every time for a particular vaddr, means locking mm->mmap_sem
> every time for a particular process. If the VM has dozens of VCPU, which
> is not rare, the semaphore is likely to be the bottleneck.
Hi Jike,
We do need to hold the lock of mm->mmap_sem for the VMM/QEMU process, but I
don't quite follow the reasoning with "dozens of vcpus", one situation that I
can think of is that we have other thread competing with the mmap_sem for the
VMM/QEMU process within KVM kernel such as hva_to_pfn, after a quick search it
seems only mostly gets used by iotcl "KVM_ASSIGN_PCI_DEVICE".
We will definitely conduct performance analysis with large configuration on
servers with E5-2697 v4. :-)
Thanks,
Neo
>
>
> --
> Thanks,
> Jike
>
next prev parent reply other threads:[~2016-05-13 15:48 UTC|newest]
Thread overview: 150+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-05-02 18:40 [RFC PATCH v3 0/3] Add vGPU support Kirti Wankhede
2016-05-02 18:40 ` [Qemu-devel] " Kirti Wankhede
2016-05-02 18:40 ` [RFC PATCH v3 1/3] vGPU Core driver Kirti Wankhede
2016-05-02 18:40 ` [Qemu-devel] " Kirti Wankhede
2016-05-03 22:43 ` Alex Williamson
2016-05-03 22:43 ` [Qemu-devel] " Alex Williamson
2016-05-04 2:45 ` Tian, Kevin
2016-05-04 2:45 ` [Qemu-devel] " Tian, Kevin
2016-05-04 16:57 ` Alex Williamson
2016-05-04 16:57 ` [Qemu-devel] " Alex Williamson
2016-05-05 8:58 ` Tian, Kevin
2016-05-05 8:58 ` [Qemu-devel] " Tian, Kevin
2016-05-04 2:58 ` Tian, Kevin
2016-05-04 2:58 ` [Qemu-devel] " Tian, Kevin
2016-05-12 8:22 ` Tian, Kevin
2016-05-12 8:22 ` [Qemu-devel] " Tian, Kevin
2016-05-04 13:31 ` Kirti Wankhede
2016-05-04 13:31 ` [Qemu-devel] " Kirti Wankhede
2016-05-05 9:06 ` Tian, Kevin
2016-05-05 9:06 ` [Qemu-devel] " Tian, Kevin
2016-05-05 10:44 ` Kirti Wankhede
2016-05-05 10:44 ` [Qemu-devel] " Kirti Wankhede
2016-05-05 12:07 ` Tian, Kevin
2016-05-05 12:07 ` [Qemu-devel] " Tian, Kevin
2016-05-05 12:57 ` Kirti Wankhede
2016-05-05 12:57 ` [Qemu-devel] " Kirti Wankhede
2016-05-11 6:37 ` Tian, Kevin
2016-05-11 6:37 ` [Qemu-devel] " Tian, Kevin
2016-05-06 12:14 ` Jike Song
2016-05-06 12:14 ` [Qemu-devel] " Jike Song
2016-05-06 16:16 ` Kirti Wankhede
2016-05-06 16:16 ` [Qemu-devel] " Kirti Wankhede
2016-05-09 12:12 ` Jike Song
2016-05-09 12:12 ` [Qemu-devel] " Jike Song
2016-05-02 18:40 ` [RFC PATCH v3 2/3] VFIO driver for vGPU device Kirti Wankhede
2016-05-02 18:40 ` [Qemu-devel] " Kirti Wankhede
2016-05-03 22:43 ` Alex Williamson
2016-05-03 22:43 ` [Qemu-devel] " Alex Williamson
2016-05-04 3:23 ` Tian, Kevin
2016-05-04 3:23 ` [Qemu-devel] " Tian, Kevin
2016-05-04 17:06 ` Alex Williamson
2016-05-04 17:06 ` [Qemu-devel] " Alex Williamson
2016-05-04 21:14 ` Neo Jia
2016-05-04 21:14 ` [Qemu-devel] " Neo Jia
2016-05-05 4:42 ` Kirti Wankhede
2016-05-05 4:42 ` [Qemu-devel] " Kirti Wankhede
2016-05-05 9:24 ` Tian, Kevin
2016-05-05 9:24 ` [Qemu-devel] " Tian, Kevin
2016-05-05 20:27 ` Neo Jia
2016-05-05 20:27 ` [Qemu-devel] " Neo Jia
2016-05-11 6:45 ` Tian, Kevin
2016-05-11 6:45 ` [Qemu-devel] " Tian, Kevin
2016-05-11 20:10 ` Alex Williamson
2016-05-11 20:10 ` [Qemu-devel] " Alex Williamson
2016-05-12 0:59 ` Tian, Kevin
2016-05-12 0:59 ` [Qemu-devel] " Tian, Kevin
2016-05-04 16:25 ` Kirti Wankhede
2016-05-04 16:25 ` Kirti Wankhede
2016-05-02 18:40 ` [RFC PATCH v3 3/3] VFIO Type1 IOMMU change: to support with iommu and without iommu Kirti Wankhede
2016-05-02 18:40 ` [Qemu-devel] " Kirti Wankhede
2016-05-03 10:40 ` Jike Song
2016-05-03 10:40 ` [Qemu-devel] " Jike Song
2016-05-03 22:43 ` Alex Williamson
2016-05-03 22:43 ` [Qemu-devel] " Alex Williamson
2016-05-04 3:39 ` Tian, Kevin
2016-05-04 3:39 ` [Qemu-devel] " Tian, Kevin
2016-05-05 6:55 ` Jike Song
2016-05-05 6:55 ` [Qemu-devel] " Jike Song
2016-05-05 9:27 ` Tian, Kevin
2016-05-05 9:27 ` [Qemu-devel] " Tian, Kevin
2016-05-10 7:52 ` Jike Song
2016-05-10 7:52 ` [Qemu-devel] " Jike Song
2016-05-10 16:02 ` Neo Jia
2016-05-10 16:02 ` [Qemu-devel] " Neo Jia
2016-05-11 9:15 ` Jike Song
2016-05-11 9:15 ` [Qemu-devel] " Jike Song
2016-05-11 22:06 ` Alex Williamson
2016-05-11 22:06 ` [Qemu-devel] " Alex Williamson
2016-05-12 4:11 ` Jike Song
2016-05-12 4:11 ` [Qemu-devel] " Jike Song
2016-05-12 19:49 ` Neo Jia
2016-05-12 19:49 ` [Qemu-devel] " Neo Jia
2016-05-13 2:41 ` Tian, Kevin
2016-05-13 2:41 ` [Qemu-devel] " Tian, Kevin
2016-05-13 6:22 ` Jike Song
2016-05-13 6:22 ` [Qemu-devel] " Jike Song
2016-05-13 6:43 ` Neo Jia
2016-05-13 6:43 ` [Qemu-devel] " Neo Jia
2016-05-13 7:30 ` Jike Song
2016-05-13 7:30 ` [Qemu-devel] " Jike Song
2016-05-13 7:42 ` Neo Jia
2016-05-13 7:42 ` [Qemu-devel] " Neo Jia
2016-05-13 7:45 ` Tian, Kevin
2016-05-13 7:45 ` [Qemu-devel] " Tian, Kevin
2016-05-13 8:31 ` Neo Jia
2016-05-13 8:31 ` [Qemu-devel] " Neo Jia
2016-05-13 9:23 ` Jike Song
2016-05-13 9:23 ` [Qemu-devel] " Jike Song
2016-05-13 15:50 ` Neo Jia
2016-05-13 15:50 ` [Qemu-devel] " Neo Jia
2016-05-16 6:57 ` Jike Song
2016-05-16 6:57 ` [Qemu-devel] " Jike Song
2016-05-13 6:08 ` Jike Song
2016-05-13 6:08 ` [Qemu-devel] " Jike Song
2016-05-13 6:41 ` Neo Jia
2016-05-13 6:41 ` [Qemu-devel] " Neo Jia
2016-05-13 7:13 ` Tian, Kevin
2016-05-13 7:13 ` [Qemu-devel] " Tian, Kevin
2016-05-13 7:38 ` Neo Jia
2016-05-13 7:38 ` [Qemu-devel] " Neo Jia
2016-05-13 8:02 ` Tian, Kevin
2016-05-13 8:02 ` [Qemu-devel] " Tian, Kevin
2016-05-13 8:41 ` Neo Jia
2016-05-13 8:41 ` [Qemu-devel] " Neo Jia
2016-05-12 8:00 ` Tian, Kevin
2016-05-12 8:00 ` [Qemu-devel] " Tian, Kevin
2016-05-12 19:05 ` Alex Williamson
2016-05-12 19:05 ` [Qemu-devel] " Alex Williamson
2016-05-12 20:12 ` Neo Jia
2016-05-12 20:12 ` [Qemu-devel] " Neo Jia
2016-05-13 9:46 ` Jike Song
2016-05-13 9:46 ` [Qemu-devel] " Jike Song
2016-05-13 15:48 ` Neo Jia [this message]
2016-05-13 15:48 ` Neo Jia
2016-05-16 2:27 ` Jike Song
2016-05-16 2:27 ` [Qemu-devel] " Jike Song
2016-05-13 3:55 ` Tian, Kevin
2016-05-13 3:55 ` [Qemu-devel] " Tian, Kevin
2016-05-13 16:16 ` Alex Williamson
2016-05-13 16:16 ` [Qemu-devel] " Alex Williamson
2016-05-13 7:10 ` Dong Jia
2016-05-13 7:24 ` Neo Jia
2016-05-13 8:39 ` Dong Jia
2016-05-13 8:39 ` [Qemu-devel] " Dong Jia
2016-05-13 9:05 ` Neo Jia
2016-05-19 7:28 ` Dong Jia
2016-05-20 3:21 ` Tian, Kevin
2016-05-20 3:21 ` Tian, Kevin
2016-06-06 6:59 ` Dong Jia
2016-06-07 2:47 ` Tian, Kevin
2016-06-07 2:47 ` Tian, Kevin
2016-06-07 7:04 ` Dong Jia
2016-05-05 7:51 ` Kirti Wankhede
2016-05-05 7:51 ` [Qemu-devel] " Kirti Wankhede
2016-05-04 1:05 ` [RFC PATCH v3 0/3] Add vGPU support Tian, Kevin
2016-05-04 1:05 ` [Qemu-devel] " Tian, Kevin
2016-05-04 6:17 ` Neo Jia
2016-05-04 6:17 ` [Qemu-devel] " Neo Jia
2016-05-04 17:07 ` Alex Williamson
2016-05-04 17:07 ` [Qemu-devel] " Alex Williamson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160513154853.GA11236@nvidia.com \
--to=cjia@nvidia.com \
--cc=alex.williamson@redhat.com \
--cc=jike.song@intel.com \
--cc=kevin.tian@intel.com \
--cc=kraxel@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=kwankhede@nvidia.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=shuai.ruan@intel.com \
--cc=zhiyuan.lv@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.