public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Patrick Farrell <paf@cray.com>
To: NeilBrown <neilb@suse.com>, Oleg Drokin <oleg.drokin@intel.com>,
	"Andreas Dilger" <andreas.dilger@intel.com>,
	James Simmons <jsimmons@infradead.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: lkml <linux-kernel@vger.kernel.org>,
	lustre <lustre-devel@lists.lustre.org>
Subject: Re: [lustre-devel] [PATCH 02/16] staging: lustre: replace simple cases of l_wait_event() with wait_event().
Date: Mon, 18 Dec 2017 18:03:30 +0000	[thread overview]
Message-ID: <D65D5D21.C5BF8%paf@cray.com> (raw)
In-Reply-To: <151358147981.5099.13114335078693829049.stgit@noble>

The wait calls in ll_statahead_thread are done in a service thread, and
should probably *not* contribute to load.

The one in osc_extent_wait is perhaps tough - It is called both from user
threads & daemon threads depending on the situation.  The effect of adding
that to load average could be significant for some activities, even when
no user threads are busy.  Thoughts from other Lustre people would be
welcome here.


Similar issues for osc_object_invalidate.

(If no one else speaks up, my vote is no contribution to load for those
OSC waits.)

Otherwise this one looks good...

On 12/18/17, 1:17 AM, "lustre-devel on behalf of NeilBrown"
<lustre-devel-bounces@lists.lustre.org on behalf of neilb@suse.com> wrote:

>@@ -968,7 +964,6 @@ static int ll_statahead_thread(void *arg)
>	int		       first  = 0;
>	int		       rc     = 0;
>	struct md_op_data *op_data;
>-	struct l_wait_info	lwi    = { 0 };
>	sai = ll_sai_get(dir);
>	sa_thread = &sai->sai_thread;
>@@ -1069,12 +1064,11 @@ static int ll_statahead_thread(void *arg)
>			/* wait for spare statahead window */
>			do {
>-				l_wait_event(sa_thread->t_ctl_waitq,
>-					     !sa_sent_full(sai) ||
>-					     sa_has_callback(sai) ||
>-					     !list_empty(&sai->sai_agls) ||
>-					     !thread_is_running(sa_thread),
>-					     &lwi);
>+				wait_event(sa_thread->t_ctl_waitq,
>+					   !sa_sent_full(sai) ||
>+					   sa_has_callback(sai) ||
>+					   !list_empty(&sai->sai_agls) ||
>+					   !thread_is_running(sa_thread));
>				sa_handle_callback(sai);
>				spin_lock(&lli->lli_agl_lock);
>@@ -1128,11 +1122,10 @@ static int ll_statahead_thread(void *arg)
>	 * for file release to stop me.
>	 */
>	while (thread_is_running(sa_thread)) {
>-		l_wait_event(sa_thread->t_ctl_waitq,
>-			     sa_has_callback(sai) ||
>-			     !agl_list_empty(sai) ||
>-			     !thread_is_running(sa_thread),
>-			     &lwi);
>+		wait_event(sa_thread->t_ctl_waitq,
>+			   sa_has_callback(sai) ||
>+			   !agl_list_empty(sai) ||
>+			   !thread_is_running(sa_thread));
>		sa_handle_callback(sai);
>	}
>@@ -1145,9 +1138,8 @@ static int ll_statahead_thread(void *arg)
>		CDEBUG(D_READA, "stop agl thread: sai %p pid %u\n",
>		       sai, (unsigned int)agl_thread->t_pid);
>-		l_wait_event(agl_thread->t_ctl_waitq,
>-			     thread_is_stopped(agl_thread),
>-			     &lwi);
>+		wait_event(agl_thread->t_ctl_waitq,
>+			   thread_is_stopped(agl_thread));
>	} else {
>		/* Set agl_thread flags anyway. */
>		thread_set_flags(agl_thread, SVC_STOPPED);
>@@ -1159,8 +1151,8 @@ static int ll_statahead_thread(void *arg)
>	 */
>	while (sai->sai_sent != sai->sai_replied) {
>		/* in case we're not woken up, timeout wait */
>-		lwi = LWI_TIMEOUT(msecs_to_jiffies(MSEC_PER_SEC >> 3),
>-				  NULL, NULL);
>+		struct l_wait_info lwi = LWI_TIMEOUT(msecs_to_jiffies(MSEC_PER_SEC >>
>3),
>+						     NULL, NULL);
>		l_wait_event(sa_thread->t_ctl_waitq,
>			     sai->sai_sent == sai->sai_replied, &lwi);
>	}

  parent reply	other threads:[~2017-12-18 18:03 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-12-18  7:17 [PATCH SERIES 5: 00/16] staging: lustre: use standard wait_event macros NeilBrown
2017-12-18  7:17 ` [PATCH 04/16] staging: lustre: use wait_event_timeout() where appropriate NeilBrown
2017-12-18 20:23   ` [lustre-devel] " Patrick Farrell
2017-12-18  7:17 ` [PATCH 02/16] staging: lustre: replace simple cases of l_wait_event() with wait_event() NeilBrown
2017-12-18 17:48   ` [lustre-devel] " Patrick Farrell
2017-12-18 21:37     ` NeilBrown
2017-12-18 18:03   ` Patrick Farrell [this message]
2017-12-19 10:37     ` Dilger, Andreas
2017-12-19 20:49       ` NeilBrown
2017-12-18  7:17 ` [PATCH 03/16] staging: lustre: discard cfs_time_seconds() NeilBrown
2017-12-18  7:17 ` [PATCH 01/16] staging: lustre: discard SVC_SIGNAL and related functions NeilBrown
2017-12-18  7:18 ` [PATCH 10/16] staging: lustre: remove back_to_sleep() and use loops NeilBrown
2017-12-18  7:18 ` [PATCH 16/16] staging: lustre: remove l_wait_event from ptlrpc_set_wait NeilBrown
2017-12-18  7:18 ` [PATCH 12/16] staging: lustre: use wait_event_timeout in ptlrpcd() NeilBrown
2017-12-18  7:18 ` [PATCH 08/16] staging: lustre: open code polling loop instead of using l_wait_event() NeilBrown
2017-12-18 20:55   ` [lustre-devel] " Patrick Farrell
2017-12-18  7:18 ` [PATCH 14/16] staging: lustre: use explicit poll loop in ptlrpc_service_unlink_rqbd NeilBrown
2017-12-18  7:18 ` [PATCH 13/16] staging: lustre: improve waiting in sptlrpc_req_refresh_ctx NeilBrown
2017-12-18  7:18 ` [PATCH 06/16] staging: lustre: simplify l_wait_event when intr handler but no timeout NeilBrown
2017-12-18  7:18 ` [PATCH 09/16] staging: lustre: simplify waiting in ptlrpc_invalidate_import() NeilBrown
2017-12-18  7:18 ` [PATCH 15/16] staging: lustre: use explicit poll loop in ptlrpc_unregister_reply NeilBrown
2017-12-18 21:09   ` [lustre-devel] " Patrick Farrell
2017-12-18  7:18 ` [PATCH 05/16] staging: lustre: introduce and use l_wait_event_abortable() NeilBrown
2017-12-18  7:18 ` [PATCH 11/16] staging: lustre: make polling loop in ptlrpc_unregister_bulk more obvious NeilBrown
2017-12-18 21:03   ` [lustre-devel] " Patrick Farrell
2017-12-18  7:18 ` [PATCH 07/16] staging: lustre: simplify waiting in ldlm_completion_ast() NeilBrown

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=D65D5D21.C5BF8%paf@cray.com \
    --to=paf@cray.com \
    --cc=andreas.dilger@intel.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=jsimmons@infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lustre-devel@lists.lustre.org \
    --cc=neilb@suse.com \
    --cc=oleg.drokin@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