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

Hi!
> > 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.

And I think that it's fair to signal to the user that the machine is too
overloaded to run a meaningful test in this case.

> 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

Feel free to fix the minor nits and push the patch.

-- 
Cyril Hrubis
chrubis@suse.cz

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

  reply	other threads:[~2024-05-23 15:33 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
2024-05-23 15:33     ` Cyril Hrubis [this message]
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=Zk9hy4QS4FCmveZ3@yuki \
    --to=chrubis@suse.cz \
    --cc=ltp@lists.linux.it \
    --cc=pvorel@suse.cz \
    /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