Re: [ANNOUNCE] rt-tests-2.0

From: Daniel Wagner
Date: Mon Jun 28 2021 - 04:11:55 EST


Hi Mike,

On Sat, Jun 26, 2021 at 02:45:27PM +0200, Mike Galbraith wrote:
> On Sat, 2021-06-26 at 13:47 +0200, Mike Galbraith wrote:
> > On Sat, 2021-06-26 at 08:55 +0200, Mike Galbraith wrote:
> > > On Fri, 2021-06-25 at 12:08 -0400, John Kacur wrote:
> > > > I'm pleased to announce rt-tests-2.0
> > >
> > > Greetings,
> > >
> > > cyclictest seems to have grown an mlock related regression.
> >
> > Ok, chores done, I did a quick bisect/confirm. I didn't go stare
> > at rt_test_start() to ponder what the mlockall connection may be.
>
> Moving the call above "Get current time" stops it mucking things up.

Thanks a lot for your excellent report. rt_test_start does

static char ts_start[MAX_TS_SIZE];

static void get_timestamp(char *tsbuf)
{
struct timeval tv;
struct tm *tm;
time_t t;

gettimeofday(&tv, NULL);
t = tv.tv_sec;
tm = localtime(&t);
/* RFC 2822-compliant date format */
strftime(tsbuf, MAX_TS_SIZE, "%a, %d %b %Y %T %z", tm);
}

void rt_test_start(void)
{
get_timestamp(ts_start);
}

I'd say the tsbuf access is the one which triggers a pagefault.

John, I would suggest to move the rt_test_start() into rt_init() and
take the timestamp at the execution start (as my initial version was). I
think the additional pain in slightly more correct start timestamp
(which is also not defined what it actually means in this context) is
just not worth the effort.

Thanks,
Daniel