linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Alex Williamson <alex.williamson@redhat.com>
To: "Gao, Ping A" <ping.a.gao@intel.com>
Cc: kwankhede@nvidia.com, kvm@vger.kernel.org,
	linux-kernel@vger.kernel.org, "Tian,
	Kevin" <kevin.tian@intel.com>,
	Zhenyu Wang <zhenyuw@linux.intel.com>,
	Jike Song <jike.song@intel.com>,
	libvir-list@redhat.com, zhi.a.wang@intel.com
Subject: Re: [RFC]Add new mdev interface for QoS
Date: Tue, 1 Aug 2017 16:26:25 -0600	[thread overview]
Message-ID: <20170801162625.6264dbd6@w520.home> (raw)
In-Reply-To: <f2032dbc-6d4e-a354-9fb6-aef0ec3283a9@intel.com>

On Tue, 1 Aug 2017 13:54:27 +0800
"Gao, Ping A" <ping.a.gao@intel.com> wrote:

> On 2017/7/28 0:00, Gao, Ping A wrote:
> > On 2017/7/27 0:43, Alex Williamson wrote:  
> >> [cc +libvir-list]
> >>
> >> On Wed, 26 Jul 2017 21:16:59 +0800
> >> "Gao, Ping A" <ping.a.gao@intel.com> wrote:
> >>  
> >>> The vfio-mdev provide the capability to let different guest share the
> >>> same physical device through mediate sharing, as result it bring a
> >>> requirement about how to control the device sharing, we need a QoS
> >>> related interface for mdev to management virtual device resource.
> >>>
> >>> E.g. In practical use, vGPUs assigned to different quests almost has
> >>> different performance requirements, some guests may need higher priority
> >>> for real time usage, some other may need more portion of the GPU
> >>> resource to get higher 3D performance, corresponding we can define some
> >>> interfaces like weight/cap for overall budget control, priority for
> >>> single submission control.
> >>>
> >>> So I suggest to add some common attributes which are vendor agnostic in
> >>> mdev core sysfs for QoS purpose.  
> >> I think what you're asking for is just some standardization of a QoS
> >> attribute_group which a vendor can optionally include within the
> >> existing mdev_parent_ops.mdev_attr_groups.  The mdev core will
> >> transparently enable this, but it really only provides the standard,
> >> all of the support code is left for the vendor.  I'm fine with that,
> >> but of course the trouble with and sort of standardization is arriving
> >> at an agreed upon standard.  Are there QoS knobs that are generic
> >> across any mdev device type?  Are there others that are more specific
> >> to vGPU?  Are there existing examples of this that we can steal their
> >> specification?  
> > Yes, you are right, standardization QoS knobs are exactly what I wanted.
> > Only when it become a part of the mdev framework and libvirt, then QoS
> > such critical feature can be leveraged by cloud usage. HW vendor only
> > need to focus on the implementation of the corresponding QoS algorithm
> > in their back-end driver.
> >
> > Vfio-mdev framework provide the capability to share the device that lack
> > of HW virtualization support to guests, no matter the device type,
> > mediated sharing actually is a time sharing multiplex method, from this
> > point of view, QoS can be take as a generic way about how to control the
> > time assignment for virtual mdev device that occupy HW. As result we can
> > define QoS knob generic across any device type by this way. Even if HW
> > has build in with some kind of QoS support, I think it's not a problem
> > for back-end driver to convert mdev standard QoS definition to their
> > specification to reach the same performance expectation. Seems there are
> > no examples for us to follow, we need define it from scratch.
> >
> > I proposal universal QoS control interfaces like below:
> >
> > Cap: The cap limits the maximum percentage of time a mdev device can own
> > physical device. e.g. cap=60, means mdev device cannot take over 60% of
> > total physical resource.
> >
> > Weight: The weight define proportional control of the mdev device
> > resource between guests, it’s orthogonal with Cap, to target load
> > balancing. E.g. if guest 1 should take double mdev device resource
> > compare with guest 2, need set weight ratio to 2:1.
> >
> > Priority: The guest who has higher priority will get execution first,
> > target to some real time usage and speeding interactive response.
> >
> > Above QoS interfaces cover both overall budget control and single
> > submission control. I will sent out detail design later once get aligned.  
> 
> Hi Alex,
> Any comments about the interface mentioned above?

Not really.

Kirti, are there any QoS knobs that would be interesting
for NVIDIA devices?

Implementing libvirt support at the same time might be an interesting
exercise if we don't have a second user in the kernel to validate
against.  We could at least have two communities reviewing the feature
then.  Thanks,

Alex

  reply	other threads:[~2017-08-01 22:26 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-07-26 13:16 [RFC]Add new mdev interface for QoS Gao, Ping A
2017-07-26 16:43 ` Alex Williamson
2017-07-27 16:00   ` Gao, Ping A
2017-08-01  5:54     ` Gao, Ping A
2017-08-01 22:26       ` Alex Williamson [this message]
2017-08-02  2:50         ` Tian, Kevin
2017-08-02 10:19         ` Kirti Wankhede
2017-08-02 12:59           ` Gao, Ping A
2017-08-02 15:46             ` Kirti Wankhede
2017-08-02 16:58               ` Alex Williamson
2017-08-03 12:26                 ` Gao, Ping A
2017-08-03 21:11                   ` Alex Williamson
2017-08-07  7:41                     ` Gao, Ping A
2017-08-08  6:42                       ` Kirti Wankhede
2017-08-08 12:48                         ` Gao, Ping A
2017-07-27 16:17   ` [libvirt] " Daniel P. Berrange
2017-07-27 18:01     ` Alex Williamson
2017-07-28  8:10       ` Daniel P. Berrange

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=20170801162625.6264dbd6@w520.home \
    --to=alex.williamson@redhat.com \
    --cc=jike.song@intel.com \
    --cc=kevin.tian@intel.com \
    --cc=kvm@vger.kernel.org \
    --cc=kwankhede@nvidia.com \
    --cc=libvir-list@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=ping.a.gao@intel.com \
    --cc=zhenyuw@linux.intel.com \
    --cc=zhi.a.wang@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).