public inbox for ltp@lists.linux.it
 help / color / mirror / Atom feed
From: Subrata Modak <subrata@linux.vnet.ibm.com>
To: Sripathi Kodi <sripathik@in.ibm.com>
Cc: ltp-list <ltp-list@lists.sourceforge.net>,
	gowrishankar <gowrishankar.m@linux.vnet.ibm.com>
Subject: Re: [LTP] [PATCH] realtime: Fix the pass criterion of pi_perf test case.
Date: Mon, 06 Jul 2009 21:20:49 +0530	[thread overview]
Message-ID: <1246895449.4887.51.camel@subratamodak.linux.ibm.com> (raw)
In-Reply-To: <200907031235.06805.sripathik@in.ibm.com>

On Fri, 2009-07-03 at 12:35 +0530, Sripathi Kodi wrote: 
> Hi,
> 
> The pass criterion in pi_perf test case is wrong. It compares the minimum 
> amount of time taken by the low priority thread with the maximum amount of 
> time taken by the high priority thread to calculate the PI delay. Obviously, 
> these min and max don't necessarily happen in the same iteration, resulting in 
> a number of false failures. The correct way is to compare the time taken by 
> low and high priority threads in each iteration and then find the maximum delay 
> experienced by high priority thread across the iterations. This patch 
> implements the change. Additionally, this patch removes lock_wait_dat array, 
> which is not needed anymore as well as makes a couple of messages easier to 
> understand.
> 
> This patch changes the messages displayed by this test case slightly. They 
> look like the following now:
> 
> Low prio thread started
> High prio thread started
> Busy 0 started
> Busy 1 started
> Busy 2 started
> Busy 3 started
> Time taken for high prio thread to get the lock once released by low prio 
> thread
> Min delay = 10 us
> Max delay = 36 us
> Average delay = 17.06 us
> Standard Deviation = 8.11 us
> Quantiles:
> 99.0% < 36
> Criteria: High prio lock wait time < (Low prio lock held time + 200 us)
> Result: PASS
> 
> I have tested this by running 1000 iterations of pi_perf test on a couple of 
> machines.
> 
> Thanks,
> Sripathi.
> 
> ---
> 
> realtime: Fix the pass criterion of pi_perf test case.
> 
> Signed-off-by: Sripathi Kodi <sripathik@in.ibm.com>

Hi Sri,

Is this based on the latest snapshot. I get the following failures:

patching file testcases/realtime/func/pi_perf/pi_perf.c
Hunk #1 FAILED at 1.


Can you please resend ?

Regards--
Subrata

> Acked-by: Will Schmidt <will_schmidt@vnet.ibm.com>
> Acked-by: Gowrishankar <gowrishankar.m@linux.vnet.ibm.com>
> 
> 
> diff -uprN ltp_cvs_3jul_org/testcases/realtime/func/pi_perf/pi_perf.c ltp_cvs_3jul/testcases/realtime/func/pi_perf/pi_perf.c
> --- ltp_cvs_3jul_org/testcases/realtime/func/pi_perf/pi_perf.c	2009-07-03 12:21:41.000000000 +0530
> +++ ltp_cvs_3jul/testcases/realtime/func/pi_perf/pi_perf.c	2009-07-03 12:24:44.000000000 +0530
> @@ -1,6 +1,6 @@
>  /******************************************************************************
>   *
> - *   Copyright © International Business Machines  Corp., 2007, 2008
> + *   Copyright © International Business Machines  Corp., 2007, 2008, 2009
>   *
>   *   This program is free software;  you can redistribute it and/or modify
>   *   it under the terms of the GNU General Public License as published by
> @@ -36,6 +36,8 @@
>   *
>   * HISTORY
>   *     2007-Nov-20:    Initial version by Sripathi Kodi <sripathik@in.ibm.com>
> + *     2009-Jul-03:    Pass criteria corrected by Sripathi Kodi
> + *                                                      <sripathik@in.ibm.com>
>   *
>   *****************************************************************************/
>  
> @@ -71,9 +73,9 @@ static unsigned int high_work_time = DEF
>  static unsigned int busy_work_time;
>  static int num_busy = -1;
>  
> -nsec_t low_unlock, high_get_lock;
> +nsec_t low_unlock, max_pi_delay;
>  
> -stats_container_t lock_wait_dat, low_dat, cpu_delay_dat;
> +stats_container_t low_dat, cpu_delay_dat;
>  stats_container_t cpu_delay_hist;
>  stats_quantiles_t cpu_delay_quantiles;
>  
> @@ -165,10 +167,9 @@ void * low_prio_thread(void *arg)
>  
>  void * high_prio_thread(void *arg)
>  {
> -	nsec_t high_start, high_spent, high_end;
> +	nsec_t high_start, high_end, high_get_lock;
>  	unsigned int i;
>  
> -	stats_container_init(&lock_wait_dat, iterations);
>  	stats_container_init(&cpu_delay_dat, iterations);
>  	stats_container_init(&cpu_delay_hist, HIST_BUCKETS);
>  	stats_quantiles_init(&cpu_delay_quantiles, (int)log10(iterations));
> @@ -184,14 +185,11 @@ void * high_prio_thread(void *arg)
>  		high_start = rt_gettime();
>  		pthread_mutex_lock(&lock);
>  		high_end = rt_gettime();
> -		high_spent = high_end - high_start;
>  		high_get_lock = high_end - low_unlock;
>  
>  		busy_work_ms(high_work_time);
>  		pthread_mutex_unlock(&lock);
>  
> -		lock_wait_dat.records[i].x = i;
> -		lock_wait_dat.records[i].y = high_spent / NS_PER_US;
>  		cpu_delay_dat.records[i].x = i;
>  		cpu_delay_dat.records[i].y = high_get_lock / NS_PER_US;
>  
> @@ -206,14 +204,16 @@ void * high_prio_thread(void *arg)
>  				"Latency (us)", "Samples", &cpu_delay_hist, "steps");
>  
>  	printf("Time taken for high prio thread to get the lock once released by low prio thread\n");
> -	printf("Min wait time = %ld us\n", stats_min(&cpu_delay_dat));
> -	printf("Max wait time = %ld us\n", stats_max(&cpu_delay_dat));
> -	printf("Average wait time = %4.2f us\n", stats_avg(&cpu_delay_dat));
> +	printf("Min delay = %ld us\n", stats_min(&cpu_delay_dat));
> +	printf("Max delay = %ld us\n", stats_max(&cpu_delay_dat));
> +	printf("Average delay = %4.2f us\n", stats_avg(&cpu_delay_dat));
>  	printf("Standard Deviation = %4.2f us\n", stats_stddev(&cpu_delay_dat));
>  	printf("Quantiles:\n");
>  	stats_quantiles_calc(&cpu_delay_dat, &cpu_delay_quantiles);
>  	stats_quantiles_print(&cpu_delay_quantiles);
>  
> +	max_pi_delay = stats_max(&cpu_delay_dat);
> +
>  	return NULL;
>  }
>  
> @@ -261,13 +261,11 @@ int main(int argc, char *argv[])
>  	}
>  
>  	join_threads();
> -	printf("Low prio lock held time (min) = %ld us\n", stats_min(&low_dat));
> -	printf("High prio lock wait time (max) = %ld us\n", stats_max(&lock_wait_dat));
>  	printf("Criteria: High prio lock wait time < "
>  			"(Low prio lock held time + %d us)\n", (int)pass_criteria);
>  
>  	ret = 0;
> -	if (stats_max(&lock_wait_dat) > stats_min(&low_dat) + (int)pass_criteria)
> +	if (max_pi_delay > pass_criteria)
>  		ret = 1;
>  
>  	printf("Result: %s\n", ret ? "FAIL" : "PASS");
> 


------------------------------------------------------------------------------
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

  reply	other threads:[~2009-07-06 15:51 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-07-03  7:05 [LTP] [PATCH] realtime: Fix the pass criterion of pi_perf test case Sripathi Kodi
2009-07-06 15:50 ` Subrata Modak [this message]
2009-07-07  6:41   ` Sripathi Kodi
2009-07-07 15:32     ` Subrata Modak

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=1246895449.4887.51.camel@subratamodak.linux.ibm.com \
    --to=subrata@linux.vnet.ibm.com \
    --cc=gowrishankar.m@linux.vnet.ibm.com \
    --cc=ltp-list@lists.sourceforge.net \
    --cc=sripathik@in.ibm.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