From: Thomas Graf <tgraf@suug.ch>
To: Phil Sutter <phil@nwl.cc>
Cc: davem@davemloft.net, netdev@vger.kernel.org,
linux-kernel@vger.kernel.org, fengguang.wu@intel.com,
wfg@linux.intel.com, lkp@01.org
Subject: Re: [PATCH 2/3] rhashtable-test: retry insert operations in threads
Date: Fri, 28 Aug 2015 13:09:29 +0200 [thread overview]
Message-ID: <20150828110929.GI32206@pox.localdomain> (raw)
In-Reply-To: <1440757685-14241-2-git-send-email-phil@nwl.cc>
On 08/28/15 at 12:28pm, Phil Sutter wrote:
> After adding cond_resched() calls to threadfunc(), a surprisingly high
> rate of insert failures occurred probably due to table resizes getting a
> better chance to run in background. To not soften up the remaining
> tests, retry inserts until they either succeed or fail permanently.
>
> Signed-off-by: Phil Sutter <phil@nwl.cc>
> ---
> lib/test_rhashtable.c | 13 +++++++------
> 1 file changed, 7 insertions(+), 6 deletions(-)
>
> diff --git a/lib/test_rhashtable.c b/lib/test_rhashtable.c
> index 63654e3..093cf84 100644
> --- a/lib/test_rhashtable.c
> +++ b/lib/test_rhashtable.c
> @@ -244,7 +244,7 @@ static int thread_lookup_test(struct thread_data *tdata)
>
> static int threadfunc(void *data)
> {
> - int i, step, err = 0, insert_fails = 0;
> + int i, step, err = 0, retries = 0;
> struct thread_data *tdata = data;
>
> up(&prestart_sem);
> @@ -253,21 +253,22 @@ static int threadfunc(void *data)
>
> for (i = 0; i < entries; i++) {
> tdata->objs[i].value = (tdata->id << 16) | i;
> +insert_retry:
> cond_resched();
> err = rhashtable_insert_fast(&ht, &tdata->objs[i].node,
> test_rht_params);
> if (err == -ENOMEM || err == -EBUSY) {
> - tdata->objs[i].value = TEST_INSERT_FAIL;
> - insert_fails++;
> + retries++;
> + goto insert_retry;
Is it safe to retry indefinitely on ENOMEM? Retrying on EBUSY is
definitely an improvement and we should do the same in the non
threaded test as well.
next prev parent reply other threads:[~2015-08-28 11:09 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-28 10:28 [PATCH 1/3] rhashtable-test: add cond_resched() to thread test Phil Sutter
2015-08-28 10:28 ` [PATCH 2/3] rhashtable-test: retry insert operations in threads Phil Sutter
2015-08-28 11:09 ` Thomas Graf [this message]
2015-08-28 11:13 ` Phil Sutter
2015-08-28 13:34 ` Phil Sutter
2015-08-28 22:43 ` Thomas Graf
2015-08-29 9:07 ` Phil Sutter
2015-08-30 7:47 ` Herbert Xu
2015-08-31 11:00 ` Phil Sutter
2015-09-01 11:43 ` Herbert Xu
2015-09-01 12:46 ` Phil Sutter
2015-09-01 13:00 ` Herbert Xu
2015-09-01 13:40 ` Eric Dumazet
2015-09-01 13:43 ` Phil Sutter
2015-09-01 13:50 ` Herbert Xu
2015-09-01 13:56 ` Phil Sutter
2015-09-01 14:03 ` Herbert Xu
2015-09-01 14:13 ` Thomas Graf
2015-09-01 14:16 ` Herbert Xu
2015-09-01 14:51 ` Thomas Graf
2015-09-02 2:00 ` Herbert Xu
2015-09-02 7:07 ` Thomas Graf
2015-09-10 8:03 ` Herbert Xu
2015-09-10 10:05 ` Phil Sutter
2015-08-28 10:28 ` [PATCH 3/3] rhashtable-test: calculate max_entries value by default Phil Sutter
2015-08-28 11:11 ` Thomas Graf
2015-08-28 11:03 ` [PATCH 1/3] rhashtable-test: add cond_resched() to thread test Thomas Graf
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=20150828110929.GI32206@pox.localdomain \
--to=tgraf@suug.ch \
--cc=davem@davemloft.net \
--cc=fengguang.wu@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=lkp@01.org \
--cc=netdev@vger.kernel.org \
--cc=phil@nwl.cc \
--cc=wfg@linux.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;
as well as URLs for NNTP newsgroup(s).