All of lore.kernel.org
 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.