From: Andy King <acking@vmware.com>
To: Gerd Hoffmann <kraxel@redhat.com>
Cc: pv-drivers@vmware.com, netdev@vger.kernel.org,
linux-kernel@vger.kernel.org,
virtualization@lists.linux-foundation.org,
gregkh@linuxfoundation.org, davem@davemloft.net
Subject: Re: [PATCH 1/1] VSOCK: Introduce VM Sockets
Date: Wed, 13 Feb 2013 19:20:23 -0800 (PST) [thread overview]
Message-ID: <1218897172.1425846.1360812023655.JavaMail.root@vmware.com> (raw)
In-Reply-To: <511B739C.8000204@redhat.com>
> I've seen you have a notify_ops in the vmci bits. Do you have different
> notify ops depending on socket type or something? Does it make sense to
> move the notify ops ptr into "struct vsock_sock" maybe?
The notify stuff only applies to STREAMs. However, we have two different
notify impls, one for legacy ESX and one for newer, and we figure out at
runtime which protocol we're using with the hypervisor and set the
callbacks appropriately. The difference between the two is that the
newer one is much smarter and knows not to signal (the peer) quite so much,
i.e., it has some basic but sensible flow-control, which improves
performance quite a bit. Again, that might not make any sense at all
for virtio. Do you need to signal when you enqueue to a ring? And is
there coalescing? Dunno...
> And can we make it optional please (i.e. allow the function pointers to
> be NULL)?
They were originally allowed to be NULL, but I changed it in the last
round of patches while moving them into the transport, since I disliked
the NULL checks so much. I can put them back, but that's a bigger
change, and I'm not sure we want to push large patches to Dave right
now :)
> Which problem you are trying to tackle with the notifications?
It's to do with signaling the peer, or more appropriately, trying to
avoid signaling the peer when possible. The naive impl. is to signal
every time we enqueue or dequeue data (into our VMCI queuepairs).
But signaling is slow, since it involves a world exit, so we prefer
not to. Which means we need to keep track of rate of flow and figure
out when we should and should not, and that's what all the notification
stuff does. It's...ugly...
> > For the VMCI transport, it indicates if the underlying queuepair is
> > still around (i.e., make sure we haven't torn it down while sleeping
> > in a blocking send or receive). Perhaps it's not the best name?
>
> How you'd hit that? Peer closing the socket while sleeping? Other
> thread closing the socket wile sleeping? Both?
>
> I think a state field in struct vsock_sock would be a better solution here.
Hrm, lemme think about this one.
>
> >> What is *_allow?
> >
> > It's very basic filtering. We have specific addresses that we don't
> > allow, and we look for them in the allow() functions. You can just
> > return true if you like.
>
> Can we make those calls optional too please?
Sure.
> The notify_*_init could return a opaque pointer instead. But then
> you'll need a notify_*_free too. And you can't place it on the stack
> and thus have a allocation in the hot path, which I guess you are trying
> to avoid in the first place.
Avoiding allocation is good, but at the same time, I wonder if it's not
a big deal compared with the time spent copying out of the buffers, in
which case it won't matter. So maybe we can do this.
Thanks!
- Andy
next prev parent reply other threads:[~2013-02-14 3:20 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-02-07 0:23 [PATCH 0/1] VM Sockets for Linux upstreaming Andy King
2013-02-07 0:23 ` [PATCH 1/1] VSOCK: Introduce VM Sockets Andy King
2013-02-11 14:22 ` Gerd Hoffmann
2013-02-12 15:21 ` Andy King
2013-02-13 3:21 ` [Pv-drivers] " Andy King
2013-02-13 11:06 ` Gerd Hoffmann
2013-02-14 3:20 ` Andy King [this message]
2013-02-14 9:28 ` Gerd Hoffmann
2013-02-12 10:58 ` Gerd Hoffmann
2013-02-13 3:23 ` Andy King
2013-02-13 12:44 ` Gerd Hoffmann
2013-02-14 3:07 ` Andy King
2013-02-18 16:56 ` Andy King
2013-02-14 11:05 ` Gerd Hoffmann
2013-02-18 17:07 ` Andy King
2013-02-19 8:45 ` Gerd Hoffmann
2013-02-14 20:18 ` Sasha Levin
2013-02-18 17:09 ` Andy King
2013-02-15 10:32 ` Gerd Hoffmann
2013-02-09 1:20 ` [Pv-drivers] [PATCH 0/1] VM Sockets for Linux upstreaming Dmitry Torokhov
2013-02-09 2:59 ` David Miller
2013-02-11 1:10 ` David Miller
-- strict thread matches above, loose matches on Subject: below --
2013-02-04 23:26 Andy King
2013-02-04 23:26 ` [PATCH 1/1] VSOCK: Introduce VM Sockets Andy King
2013-01-25 17:37 [PATCH 0/1] VM Sockets for Linux upstreaming acking
2013-01-25 17:37 ` [PATCH 1/1] VSOCK: Introduce VM Sockets acking
2013-01-25 23:59 ` Neil Horman
2013-01-28 12:25 ` Gerd Hoffmann
2013-01-31 22:06 ` Andy King
2013-02-01 8:12 ` Gerd Hoffmann
2013-02-04 23:41 ` Andy King
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=1218897172.1425846.1360812023655.JavaMail.root@vmware.com \
--to=acking@vmware.com \
--cc=davem@davemloft.net \
--cc=gregkh@linuxfoundation.org \
--cc=kraxel@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pv-drivers@vmware.com \
--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).