linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Hillf Danton <hdanton@sina.com>
Cc: Jason Wang <jasowang@redhat.com>, Eli Cohen <elic@nvidia.com>,
	virtualization <virtualization@lists.linux-foundation.org>,
	linux-kernel <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 1/2] vdpa: mlx5: prevent cvq work from hogging CPU
Date: Thu, 24 Mar 2022 02:17:06 -0400	[thread overview]
Message-ID: <20220324021428-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <20220324060419.3682-1-hdanton@sina.com>

On Thu, Mar 24, 2022 at 02:04:19PM +0800, Hillf Danton wrote:
> On Thu, 24 Mar 2022 10:34:09 +0800 Jason Wang wrote:
> > On Thu, Mar 24, 2022 at 8:54 AM Hillf Danton <hdanton@sina.com> wrote:
> > >
> > > On Tue, 22 Mar 2022 09:59:14 +0800 Jason Wang wrote:
> > > >
> > > > Yes, there will be no "infinite" loop, but since the loop is triggered
> > > > by userspace. It looks to me it will delay the flush/drain of the
> > > > workqueue forever which is still suboptimal.
> > >
> > > Usually it is barely possible to shoot two birds using a stone.
> > >
> > > Given the "forever", I am inclined to not running faster, hehe, though
> > > another cobble is to add another line in the loop checking if mvdev is
> > > unregistered, and for example make mvdev->cvq unready before destroying
> > > workqueue.
> > >
> > > static void mlx5_vdpa_dev_del(struct vdpa_mgmt_dev *v_mdev, struct vdpa_device *dev)
> > > {
> > >         struct mlx5_vdpa_mgmtdev *mgtdev = container_of(v_mdev, struct mlx5_vdpa_mgmtdev, mgtdev);
> > >         struct mlx5_vdpa_dev *mvdev = to_mvdev(dev);
> > >         struct mlx5_vdpa_net *ndev = to_mlx5_vdpa_ndev(mvdev);
> > >
> > >         mlx5_notifier_unregister(mvdev->mdev, &ndev->nb);
> > >         destroy_workqueue(mvdev->wq);
> > >         _vdpa_unregister_device(dev);
> > >         mgtdev->ndev = NULL;
> > > }
> > >
> > 
> > Yes, so we had
> > 
> > 1) using a quota for re-requeue
> > 2) using something like
> > 
> > while (READ_ONCE(cvq->ready)) {
> >         ...
> >         cond_resched();
> > }
> > 
> > There should not be too much difference except we need to use
> > cancel_work_sync() instead of flush_work for 1).
> > 
> > I would keep the code as is but if you stick I can change.
> 
> No Sir I would not - I am simply not a fan of work requeue.
> 
> Hillf

I think I agree - requeue adds latency spikes under heavy load -
unfortunately, not measured by netperf but still important
for latency sensitive workloads. Checking a flag is cheaper.

-- 
MST


  parent reply	other threads:[~2022-03-24  6:17 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-21  6:04 [PATCH 1/2] vdpa: mlx5: prevent cvq work from hogging CPU Jason Wang
2022-03-21  6:04 ` [PATCH 2/2] vdpa: mlx5: synchronize driver status with CVQ Jason Wang
2022-03-21  6:56   ` Eli Cohen
2022-03-21  7:23   ` Michael S. Tsirkin
2022-03-21  7:36     ` Jason Wang
2022-03-21  6:31 ` [PATCH 1/2] vdpa: mlx5: prevent cvq work from hogging CPU Eli Cohen
2022-03-21  7:20 ` Michael S. Tsirkin
2022-03-21  7:35   ` Jason Wang
     [not found] ` <20220321085317.3148-1-hdanton@sina.com>
2022-03-21  8:59   ` Jason Wang
2022-03-21  9:00     ` Jason Wang
     [not found]       ` <20220321123420.3207-1-hdanton@sina.com>
2022-03-22  1:59         ` Jason Wang
     [not found]           ` <20220324005345.3623-1-hdanton@sina.com>
2022-03-24  2:34             ` Jason Wang
     [not found]             ` <20220324060419.3682-1-hdanton@sina.com>
2022-03-24  6:17               ` Michael S. Tsirkin [this message]
2022-03-24  8:20                 ` Jason Wang
     [not found]                 ` <20220324120217.3746-1-hdanton@sina.com>
2022-03-24 12:24                   ` Eli Cohen
2022-03-25  3:22                     ` Jason Wang
2022-03-25  6:45                       ` Michael S. Tsirkin
2022-03-25  7:53                         ` Jason Wang

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=20220324021428-mutt-send-email-mst@kernel.org \
    --to=mst@redhat.com \
    --cc=elic@nvidia.com \
    --cc=hdanton@sina.com \
    --cc=jasowang@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=virtualization@lists.linux-foundation.org \
    /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).