From: Boris Ostrovsky <boris.ostrovsky@oracle.com>
To: Dongli Zhang <dongli.zhang@oracle.com>,
xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org
Cc: jgross@suse.com, paul.durrant@citrix.com, wei.liu2@citrix.com,
konrad.wilk@oracle.com, roger.pau@citrix.com,
srinivas.eeda@oracle.com
Subject: Re: [PATCH 1/6] xenbus: prepare data structures and parameter for xenwatch multithreading
Date: Tue, 25 Sep 2018 16:19:05 -0400 [thread overview]
Message-ID: <20422e39-f812-554e-f711-186bc6e00005@oracle.com> (raw)
In-Reply-To: <b9fb7162-48a7-624e-a2b0-d2e124e7c109@oracle.com>
On 9/25/18 1:14 AM, Dongli Zhang wrote:
>
> So far we have: (1) domain hash table, (2) domain list (where duplicate entries
> may exist) and (3) purge list.
>
> Can I assume you would like to discard the domain list and only keep domain hash
> table and purge list?
Yes, that's what I was thinking.
>
> The purpose of the domain list is to facilitate the unregister_xenbus_watch() to
> scan the pending events for all otherend id. Should we remove it? Xen hypervisor
> used both a hash table and a list to manage struct domain.
Your concern is that searching for a pending event in the hash is not
especially efficient. Since you are hashing on domain_id, then
unregister_single_mtwatch() should be pretty fast if searching in the
hash table (in fact, it's faster than traversing the domain list).
unregister_all_mtwatch() will indeed take longer since you will be
checking empty buckets. Right?
How often do you expect will we call unregister_all_mtwatch() compared
to unregister_single_mtwatch()?
>
>
> About the duplicate entries in the domain list, can we change the flow like below:
>
> 1. Suppose the thread status is DOWN. To avoid having duplicate entries on the
> domain list, instead of keeping the deprecated thread on domain list (until all
> its events get processed), we move it to the purge list immediately.
>
> We will tag this deprecated thread so that the purge list would not purge it
> unless all events belong to such thread get processed. We cannot purge it
> immediately because the worker thread (to purge the purge list) would hang if
> the deprecated thread is already stuck.
>
> In this flow, we may have duplicate entries on purge list, but not domain list.
>
> 2. During unregister_xenbus_watch(), we need to scan both the domain list and
> purge list to remove pending events for the watch. In previous design, we only
> scan domain lit.
>
>
> One option is we allow the deprecated thread to resurrect and we would not move
> the thread to purge list immediately when the thread is deprecated.
>
> Suppose when thread for domid=9 is needed, we would not create new one if the
> deprecated one for domid=9 is still in domain list. Instead, we would resurrect
> it, change its status and reuse it again. In this way, we would not have
> duplicate entries on the domain list.
>
> I like the 1st option. I do not like to resurrect a deprecated thread again.
> Would you please let me know how you think about it?
Yes, I also think (1) is better --- you are walking the whole purge list
anyway.
-boris
next prev parent reply other threads:[~2018-09-25 20:17 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-09-14 7:34 Introduce xenwatch multithreading (mtwatch) Dongli Zhang
2018-09-14 7:34 ` [PATCH 1/6] xenbus: prepare data structures and parameter for xenwatch multithreading Dongli Zhang
2018-09-14 8:11 ` Paul Durrant
2018-09-14 13:40 ` [Xen-devel] " Dongli Zhang
2018-09-14 8:32 ` Juergen Gross
2018-09-14 13:57 ` [Xen-devel] " Dongli Zhang
2018-09-14 14:10 ` Juergen Gross
2018-09-16 20:17 ` Boris Ostrovsky
2018-09-17 1:20 ` Dongli Zhang
2018-09-17 19:08 ` Boris Ostrovsky
2018-09-25 5:14 ` Dongli Zhang
2018-09-25 20:19 ` Boris Ostrovsky [this message]
2018-09-26 2:57 ` [Xen-devel] " Dongli Zhang
2018-09-14 7:34 ` [PATCH 2/6] xenbus: implement the xenwatch multithreading framework Dongli Zhang
2018-09-14 8:45 ` Paul Durrant
2018-09-14 14:09 ` [Xen-devel] " Dongli Zhang
2018-09-14 8:56 ` Juergen Gross
2018-09-16 21:20 ` Boris Ostrovsky
2018-09-17 1:48 ` [Xen-devel] " Dongli Zhang
2018-09-17 20:00 ` Boris Ostrovsky
2018-09-14 7:34 ` [PATCH 3/6] xenbus: dispatch per-domU watch event to per-domU xenwatch thread Dongli Zhang
2018-09-14 9:01 ` Juergen Gross
2018-09-17 20:09 ` Boris Ostrovsky
2018-09-14 7:34 ` [PATCH 4/6] xenbus: process otherend_watch event at 'state' entry in xenwatch multithreading Dongli Zhang
2018-09-14 9:04 ` Juergen Gross
2018-09-14 7:34 ` [PATCH 5/6] xenbus: process be_watch events " Dongli Zhang
2018-09-14 9:12 ` Juergen Gross
2018-09-14 14:18 ` [Xen-devel] " Dongli Zhang
2018-09-14 14:26 ` Juergen Gross
2018-09-14 14:29 ` Dongli Zhang
2018-09-14 14:44 ` Juergen Gross
2018-09-19 6:15 ` Dongli Zhang
2018-09-19 8:01 ` Juergen Gross
2018-09-19 12:27 ` Dongli Zhang
2018-09-19 12:44 ` Juergen Gross
2018-09-14 14:33 ` Dongli Zhang
2018-09-14 7:34 ` [PATCH 6/6] drivers: enable xenwatch multithreading for xen-netback and xen-blkback driver Dongli Zhang
2018-09-14 9:16 ` Juergen Gross
2018-09-14 9:38 ` Wei Liu
2018-09-14 9:56 ` Roger Pau Monné
2018-09-14 8:16 ` Introduce xenwatch multithreading (mtwatch) Paul Durrant
2018-09-14 9:18 ` Juergen Gross
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=20422e39-f812-554e-f711-186bc6e00005@oracle.com \
--to=boris.ostrovsky@oracle.com \
--cc=dongli.zhang@oracle.com \
--cc=jgross@suse.com \
--cc=konrad.wilk@oracle.com \
--cc=linux-kernel@vger.kernel.org \
--cc=paul.durrant@citrix.com \
--cc=roger.pau@citrix.com \
--cc=srinivas.eeda@oracle.com \
--cc=wei.liu2@citrix.com \
--cc=xen-devel@lists.xenproject.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).