From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: Chris Patterson <cjp256@gmail.com>,
simon.rowe@eu.citrix.com, roger.pau@citrix.com
Cc: ian.jackson@eu.citrix.com,
Chris Patterson <pattersonc@ainfosec.com>,
wei.liu2@citrix.com, xen-devel@lists.xen.org
Subject: Re: [RFC PATCH] xs: use system's default stack size for xs_watch's reader thread
Date: Wed, 21 Sep 2016 08:51:07 -0400 [thread overview]
Message-ID: <20160921125107.GB32051@char.us.oracle.com> (raw)
In-Reply-To: <1474406979-8909-1-git-send-email-cjp256@gmail.com>
On Tue, Sep 20, 2016 at 05:29:39PM -0400, Chris Patterson wrote:
> From: Chris Patterson <pattersonc@ainfosec.com>
>
> xs_watch() creates a thread to listen to xenstore events. Currently, the
> thread is created with the greater of 16K or PTHREAD_MIN_SIZE.
>
> There have been several bug reports and workarounds related to the issue
> where xs_watch() fails because its attempt to create the reader thread with
> pthread_create() fails. This is due to insufficient stack space size
> given the requirements for thread-local storage usage in the applications
> and libraries that are linked against libxenstore. [1,2,3,4].
>
> Specifying the stack size appears to have been added to reduce memory
> footprint (1d00c73b983b09fbee4d9dc0f58f6663c361c345).
Ugh. 8MB.
>
> This has already been bumped up once to the greater of 16k and
> PTHREAD_STACK_MIN (da6a0e86d6a079102abdd0858a19f1e1fae584fc).
And that was too low (2048). CC-ing Roger.
>
> This patch reverts to sticking with the system's default stack size and
> removes the code used to set the thread's stack size.
Which brings effectively reverts 1d00c73b983b09fbee4d9dc0f58f6663c361c345
CC-ing Simon to see what was the drive behind the memory consumption.
As in whether this was a real problem or they saw an issue with a large
stack size.
And whether (if this is XenServer product related) they could recompile
pthread library to a have smaller pthread default (instead of 8MB say something
like 16Kb).
>
> Of course, the alternative is to bump it to another arbitrary value, but the
> requirements may change depending on the application and its libraries that
> are linking against xenstore.
>
> [1] https://lists.nongnu.org/archive/html/qemu-devel/2016-07/msg03341.html
> [2] https://lists.xenproject.org/archives/html/xen-users/2016-07/msg00012.html
> [3] https://lists.xenproject.org/archives/html/xen-users/2016-07/msg00085.html
> [4] https://bugzilla.redhat.com/show_bug.cgi?id=1350264
Thanks for providing the pointers!
>
> Signed-off-by: Chris Patterson <pattersonc@ainfosec.com>
> ---
> tools/xenstore/xs.c | 10 ----------
> 1 file changed, 10 deletions(-)
>
> diff --git a/tools/xenstore/xs.c b/tools/xenstore/xs.c
> index d1e01ba..c62b120 100644
> --- a/tools/xenstore/xs.c
> +++ b/tools/xenstore/xs.c
> @@ -723,11 +723,6 @@ bool xs_watch(struct xs_handle *h, const char *path, const char *token)
> struct iovec iov[2];
>
> #ifdef USE_PTHREAD
> -#define DEFAULT_THREAD_STACKSIZE (16 * 1024)
> -#define READ_THREAD_STACKSIZE \
> - ((DEFAULT_THREAD_STACKSIZE < PTHREAD_STACK_MIN) ? \
> - PTHREAD_STACK_MIN : DEFAULT_THREAD_STACKSIZE)
> -
> /* We dynamically create a reader thread on demand. */
> mutex_lock(&h->request_mutex);
> if (!h->read_thr_exists) {
> @@ -738,11 +733,6 @@ bool xs_watch(struct xs_handle *h, const char *path, const char *token)
> mutex_unlock(&h->request_mutex);
> return false;
> }
> - if (pthread_attr_setstacksize(&attr, READ_THREAD_STACKSIZE) != 0) {
> - pthread_attr_destroy(&attr);
> - mutex_unlock(&h->request_mutex);
> - return false;
> - }
>
> sigfillset(&set);
> pthread_sigmask(SIG_SETMASK, &set, &old_set);
> --
> 2.1.4
>
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xen.org
> https://lists.xen.org/xen-devel
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel
next prev parent reply other threads:[~2016-09-21 12:51 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-09-20 21:29 [RFC PATCH] xs: use system's default stack size for xs_watch's reader thread Chris Patterson
2016-09-21 12:51 ` Konrad Rzeszutek Wilk [this message]
2016-09-21 13:00 ` Wei Liu
2016-09-21 13:50 ` Chris Patterson
2016-09-21 14:07 ` Konrad Rzeszutek Wilk
2016-09-21 14:23 ` Chris Patterson
2016-09-21 14:39 ` Konrad Rzeszutek Wilk
2016-09-26 16:53 ` Roger Pau Monné
2016-09-27 10:06 ` Wei Liu
2016-09-27 10:56 ` Simon Rowe
2016-09-27 11:01 ` Ian Jackson
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=20160921125107.GB32051@char.us.oracle.com \
--to=konrad.wilk@oracle.com \
--cc=cjp256@gmail.com \
--cc=ian.jackson@eu.citrix.com \
--cc=pattersonc@ainfosec.com \
--cc=roger.pau@citrix.com \
--cc=simon.rowe@eu.citrix.com \
--cc=wei.liu2@citrix.com \
--cc=xen-devel@lists.xen.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).