public inbox for ltp@lists.linux.it
 help / color / mirror / Atom feed
From: Petr Vorel <pvorel@suse.cz>
To: Cyril Hrubis <chrubis@suse.cz>
Cc: ltp@lists.linux.it
Subject: Re: [LTP] [PATCH 2/2] syscalls/msgstress01: Fix timeouts
Date: Thu, 23 May 2024 17:20:54 +0200	[thread overview]
Message-ID: <20240523152054.GA18111@pevik> (raw)
In-Reply-To: <20240523133132.13978-3-chrubis@suse.cz>

Hi Cyril,

> Make the test exit if runtime has been exhausted before we finished the
> requested amount of iterations.

> For that to happen we let the main test process to loop while checking
> the runtime and set the stop flag if runtime was exhausted. We also need
> to separte the stop and fail flag and add counter for finished children.
nit: s/separte/separate/

...
>  static void remove_queues(void)
> @@ -196,12 +210,37 @@ static void run(void)

>  		if (*stop)
>  			break;
> +
> +		if (!tst_remaining_runtime()) {
> +			tst_res(TWARN, "Out of runtime during forking...");

I tested the patchset on various VMs (various kernels), with both 1 or 2 CPU.
Indeed it fixes the problem. IMHO it can quite easily get KVM host overloaded
enough to get the TWARN out of runtime during forking, but we can't do anything
about it.

msgstress01.c:215: TWARN: Out of runtime during forking...
msgstress01.c:244: TPASS: Test passed. All messages have been received

> +			*stop = 1;
> +			break;
> +		}
> +	}
> +
> +	if (!(*stop))
> +		tst_res(TINFO, "All processes running.");
very nit: I'd remove dot at the end.

> +
> +	for (;;) {
> +		if (tst_atomic_load(finished) == 2 * num_messages)
> +			break;
> +
> +		if (*stop)
> +			break;
> +
> +		if (!tst_remaining_runtime()) {
> +			tst_res(TINFO, "Out of runtime, stopping processes...");
> +			*stop = 1;
> +			break;
> +		}
> +
> +		sleep(1);
>  	}

>  	tst_reap_children();
>  	remove_queues();

> -	if (!(*stop))
> +	if (!(*fail))
>  		tst_res(TPASS, "Test passed. All messages have been received");
>  }

> @@ -242,14 +281,16 @@ static void setup(void)
>  		MAP_SHARED | MAP_ANONYMOUS,
>  		-1, 0);

> -	stop = SAFE_MMAP(
> +	flags = SAFE_MMAP(
>  		NULL,
> -		sizeof(int),
> +		sizeof(int) * 3,
>  		PROT_READ | PROT_WRITE,
>  		MAP_SHARED | MAP_ANONYMOUS,
>  		-1, 0);

> -	reset_messages();
> +	stop = &flags[0];
> +	fail = &flags[1];
> +	finished = &flags[2];
>  }

>  static void cleanup(void)
> @@ -260,7 +301,7 @@ static void cleanup(void)
>  	remove_queues();

>  	SAFE_MUNMAP(ipc_data, sizeof(struct sysv_data) * num_messages);
> -	SAFE_MUNMAP((void *)stop, sizeof(int));
> +	SAFE_MUNMAP(flags, sizeof(int) * 3);
>  }

>  static struct tst_test test = {
> @@ -271,7 +312,7 @@ static struct tst_test test = {
>  	.max_runtime = 180,
>  	.options = (struct tst_option[]) {
>  		{"n:", &str_num_messages, "Number of messages to send (default: 1000)"},
> -		{"l:", &str_num_iterations, "Number iterations per message (default: 10000)"},
> +		{"l:", &str_num_iterations, "Number iterations per message (default: " TST_TO_STR(MAXNREPS) ")"},
>  		{},
very nit: too long line

Reviewed-by: Petr Vorel <pvorel@suse.cz>

Kind regards,
Petr

-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

  parent reply	other threads:[~2024-05-23 15:21 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-05-23 13:31 [LTP] [PATCH 0/2] Fix msgstress01 timeouts Cyril Hrubis
2024-05-23 13:31 ` [LTP] [PATCH 1/2] syscalls/msgstress01: Fix the stop logic Cyril Hrubis
2024-05-23 13:40   ` Andrea Cervesato via ltp
2024-05-23 13:31 ` [LTP] [PATCH 2/2] syscalls/msgstress01: Fix timeouts Cyril Hrubis
2024-05-23 14:37   ` Martin Doucha
2024-05-23 15:20   ` Petr Vorel [this message]
2024-05-23 15:33     ` Cyril Hrubis
2024-05-23 15:41   ` Petr Vorel
2024-05-23 15:43     ` Petr Vorel
2024-05-23 15:55       ` Petr Vorel
2024-05-23 15:55     ` Cyril Hrubis

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=20240523152054.GA18111@pevik \
    --to=pvorel@suse.cz \
    --cc=chrubis@suse.cz \
    --cc=ltp@lists.linux.it \
    /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