On Monday 06 July 2009 21:20:49 Subrata Modak wrote:
> 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 <[email protected]>
>
> 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 ?

Sorry Subrata, the patch seems to be fine on my machine, but is going bad in my 
mail client. If you don't mind, I have attached the patch to this mail for 
now.

Thanks,
Sripathi.

--

realtime: Fix the pass criterion of pi_perf test case.

Signed-off-by: Sripathi Kodi <[email protected]>
Acked-by: Will Schmidt <[email protected]>
Acked-by: Gowrishankar <[email protected]>

<snip>
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 <[email protected]>
+ *     2009-Jul-03:    Pass criteria corrected by Sripathi Kodi
+ *                                                      <[email protected]>
  *
  *****************************************************************************/
 
@@ -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");
------------------------------------------------------------------------------
Enter the BlackBerry Developer Challenge  
This is your chance to win up to $100,000 in prizes! For a limited time, 
vendors submitting new applications to BlackBerry App World(TM) will have 
the opportunity to enter the BlackBerry Developer Challenge. See full prize 
details at: http://p.sf.net/sfu/blackberry
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to