[PATCH] add iterations option in gtod_latency.

View: New views
8 Messages — Rating Filter:   Alert me  

[PATCH] add iterations option in gtod_latency.

by Giuseppe CAVALLARO-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Regards,
Peppe

[PATCH] add iterations option in gtod_latency.

This patch adds a new option for tuning the number
of iterations into the gtod_latency realtime test.

Running gtod_latency on a target with limited resources
it fails (ENOMEM) as soon as it try to allocate the memory
for the two buffers start_data and stop_data.

Tested on i386 and sh4 architectures.

Signed-off-by: Giuseppe Cavallaro <peppe.cavallaro@...>

--- ltp/testcases/realtime.orig/func/gtod_latency/gtod_latency.c 2009-11-04 15:55:58.000000000 +0100
+++ ltp/testcases/realtime/func/gtod_latency/gtod_latency.c 2009-11-06 08:37:14.000000000 +0100
@@ -81,13 +81,14 @@ char *labels[] = {"scatter plot x-axis",
   "histogram y-axis"};
 
 static unsigned long long latency_threshold = 0;
+static unsigned int iterations = ITERATIONS;
 
 void stats_cmdline_help(void)
 {
  printf("Usage: ./gtod_latency {-[so|scatter-output] -[ho|hist-output]"
  " -[st|scatter-title] -[ht|hist-title] -[sxl|scatter-xlabel]"
  " -[syl|scatter-ylabel] -[hxl|hist-xlabel] -[hyl|hist-ylabel]"
- " -[lt|latency-trace]}"
+ " -[lt|latency-trace] -[i|iterations]}"
  " -[help] \n");
  printf("**command-line options are not supported yet for this testcase\n");
 }
@@ -194,6 +195,15 @@ int stats_cmdline(int argc, char *argv[]
  continue;
  }
 
+ if (!strcmp(flag, "i") || !strcmp(flag, "iterations")) {
+ if (i + 1 == argc) {
+ printf("flag has missing argument\n");
+ return -1;
+ }
+ iterations = strtoull(argv[++i], NULL, 0);
+ continue;
+ }
+
  printf("unknown flag given\n");
  return -1;
  }
@@ -210,9 +220,6 @@ long long timespec_subtract(struct times
  return ns;
 }
 
-struct timespec start_data[ITERATIONS];
-struct timespec stop_data[ITERATIONS];
-
 int main(int argc, char *argv[])
 {
  int i, j, k, err;
@@ -222,16 +229,38 @@ int main(int argc, char *argv[])
  stats_container_t dat;
  stats_container_t hist;
  stats_quantiles_t quantiles;
+ struct timespec *start_data;
+ struct timespec *stop_data;
 
- stats_container_init(&dat, ITERATIONS);
+ if (stats_cmdline(argc, argv) < 0) {
+ printf("usage: %s help\n", argv[0]);
+ exit(1);
+ }
+
+ if (iterations < 10000) {
+ iterations = 10000;
+ printf("user \"iterations\" value is too small, try with %d",
+ iterations);
+ }
+
+ stats_container_init(&dat, iterations);
  stats_container_init(&hist, HIST_BUCKETS);
- stats_quantiles_init(&quantiles, (int)log10(ITERATIONS));
+ stats_quantiles_init(&quantiles, (int)log10(iterations));
  setup();
 
  mlockall(MCL_CURRENT|MCL_FUTURE);
 
- if (stats_cmdline(argc, argv) < 0) {
- printf("usage: %s help\n", argv[0]);
+ start_data = calloc(iterations, sizeof(struct timespec));
+ if (start_data == NULL) {
+ printf("Memory allocation Failed (too many Iteration: %d)\n",
+ iterations);
+ exit(1);
+ }
+ stop_data = calloc(iterations, sizeof(struct timespec));
+ if (stop_data == NULL) {
+ printf("Memory allocation Failed (too many Iteration: %d)\n",
+ iterations);
+ free(start_data);
  exit(1);
  }
 
@@ -253,9 +282,9 @@ int main(int argc, char *argv[])
  printf("\n----------------------\n");
  printf("Gettimeofday() Latency\n");
  printf("----------------------\n");
- printf("Iterations: %d\n\n", ITERATIONS);
+ printf("Iterations: %d\n\n", iterations);
 
- /* collect ITERATIONS pairs of gtod calls */
+ /* collect iterations pairs of gtod calls */
  max = min = 0;
  if (latency_threshold) {
  latency_trace_enable();
@@ -263,7 +292,7 @@ int main(int argc, char *argv[])
  }
  /* This loop runs for a long time, hence can cause soft lockups.
    Calling sleep periodically avoids this. */
- for (i=0; i<(ITERATIONS/10000); i++) {
+ for (i = 0; i < (iterations/10000); i++) {
  for (j=0; j < 10000; j++) {
  k = (i * 10000) + j;
  clock_gettime(CLOCK_MONOTONIC,&start_data[k]);
@@ -271,7 +300,7 @@ int main(int argc, char *argv[])
  }
  usleep(1000);
  }
- for (i = 0; i < ITERATIONS; i++) {
+ for (i = 0; i < iterations; i++) {
  delta = timespec_subtract(&start_data[i], &stop_data[i]);
  dat.records[i].x = i;
  dat.records[i].y = delta;
@@ -282,7 +311,7 @@ int main(int argc, char *argv[])
  }
  if (latency_threshold) {
  latency_trace_stop();
- if (i != ITERATIONS) {
+ if (i != iterations) {
  printf("Latency threshold (%lluus) exceeded at iteration %d\n",
  latency_threshold, i);
  latency_trace_print();

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Ltp-list mailing list
Ltp-list@...
https://lists.sourceforge.net/lists/listinfo/ltp-list

Re: [PATCH] add iterations option in gtod_latency.

by Gowrishankar M :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Giuseppe CAVALLARO wrote:
> Regards,
> Peppe
>

Can you please add freeing resources at the end of main.

         stats_container_free(&dat);
         stats_container_free(&hist);
         stats_quantiles_free(&quantiles);

Also, you could set MIN_ITERATION to 10000 instead of hard coding inside main.
Just a suggestion.

Thanks,
Gowri

>
> ------------------------------------------------------------------------
>
> ------------------------------------------------------------------------------
> Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
> trial. Simplify your report design, integration and deployment - and focus on
> what you do best, core application coding. Discover what's new with
> Crystal Reports now.  http://p.sf.net/sfu/bobj-july
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Ltp-list mailing list
> Ltp-list@...
> https://lists.sourceforge.net/lists/listinfo/ltp-list


------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Ltp-list mailing list
Ltp-list@...
https://lists.sourceforge.net/lists/listinfo/ltp-list

Re: [PATCH] add iterations option in gtod_latency.

by Giuseppe CAVALLARO-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


gowrishankar wrote:

> Giuseppe CAVALLARO wrote:
>> Regards,
>> Peppe
>>
>
> Can you please add freeing resources at the end of main.
>
>         stats_container_free(&dat);
>         stats_container_free(&hist);
>         stats_quantiles_free(&quantiles);
>
> Also, you could set MIN_ITERATION to 10000 instead of hard coding inside
> main.
> Just a suggestion.
patch reattached!
Peppe

>
> Thanks,
> Gowri
>
>>
>> ------------------------------------------------------------------------
>>
>> ------------------------------------------------------------------------------
>>
>> Let Crystal Reports handle the reporting - Free Crystal Reports 2008
>> 30-Day trial. Simplify your report design, integration and deployment
>> - and focus on what you do best, core application coding. Discover
>> what's new with
>> Crystal Reports now.  http://p.sf.net/sfu/bobj-july
>>
>>
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> Ltp-list mailing list
>> Ltp-list@...
>> https://lists.sourceforge.net/lists/listinfo/ltp-list
>
>

[PATCH (RESEND)] add iterations option in gtod_latency.

This patch adds a new option for tuning the number
of iterations into the gtod_latency realtime test.

Running gtod_latency on a target with limited resources
it fails (ENOMEM) as soon as it try to allocate the memory
for the two buffers start_data and stop_data.

Tested on i386 and sh4 architectures.

Signed-off-by: Giuseppe Cavallaro <peppe.cavallaro@...>

--- ltp/testcases/realtime.orig/func/gtod_latency/gtod_latency.c 2009-11-04 15:55:58.000000000 +0100
+++ ltp/testcases/realtime/func/gtod_latency/gtod_latency.c 2009-11-06 13:54:39.000000000 +0100
@@ -56,6 +56,7 @@
 #include <sys/mman.h>
 
 #define ITERATIONS 10000000
+#define MIN_ITERATION 10000
 #define HIST_BUCKETS 20
 
 #define SCATTER_FILENAME 0
@@ -81,13 +82,14 @@ char *labels[] = {"scatter plot x-axis",
   "histogram y-axis"};
 
 static unsigned long long latency_threshold = 0;
+static unsigned int iterations = ITERATIONS;
 
 void stats_cmdline_help(void)
 {
  printf("Usage: ./gtod_latency {-[so|scatter-output] -[ho|hist-output]"
  " -[st|scatter-title] -[ht|hist-title] -[sxl|scatter-xlabel]"
  " -[syl|scatter-ylabel] -[hxl|hist-xlabel] -[hyl|hist-ylabel]"
- " -[lt|latency-trace]}"
+ " -[lt|latency-trace] -[i|iterations]}"
  " -[help] \n");
  printf("**command-line options are not supported yet for this testcase\n");
 }
@@ -194,6 +196,15 @@ int stats_cmdline(int argc, char *argv[]
  continue;
  }
 
+ if (!strcmp(flag, "i") || !strcmp(flag, "iterations")) {
+ if (i + 1 == argc) {
+ printf("flag has missing argument\n");
+ return -1;
+ }
+ iterations = strtoull(argv[++i], NULL, 0);
+ continue;
+ }
+
  printf("unknown flag given\n");
  return -1;
  }
@@ -210,9 +221,6 @@ long long timespec_subtract(struct times
  return ns;
 }
 
-struct timespec start_data[ITERATIONS];
-struct timespec stop_data[ITERATIONS];
-
 int main(int argc, char *argv[])
 {
  int i, j, k, err;
@@ -222,16 +230,38 @@ int main(int argc, char *argv[])
  stats_container_t dat;
  stats_container_t hist;
  stats_quantiles_t quantiles;
+ struct timespec *start_data;
+ struct timespec *stop_data;
+
+ if (stats_cmdline(argc, argv) < 0) {
+ printf("usage: %s help\n", argv[0]);
+ exit(1);
+ }
+
+ if (iterations < MIN_ITERATION) {
+ iterations = MIN_ITERATION ;
+ printf("user \"iterations\" value is too small (use: %d)\n",
+ iterations);
+ }
 
- stats_container_init(&dat, ITERATIONS);
+ stats_container_init(&dat, iterations);
  stats_container_init(&hist, HIST_BUCKETS);
- stats_quantiles_init(&quantiles, (int)log10(ITERATIONS));
+ stats_quantiles_init(&quantiles, (int)log10(iterations));
  setup();
 
  mlockall(MCL_CURRENT|MCL_FUTURE);
 
- if (stats_cmdline(argc, argv) < 0) {
- printf("usage: %s help\n", argv[0]);
+ start_data = calloc(iterations, sizeof(struct timespec));
+ if (start_data == NULL) {
+ printf("Memory allocation Failed (too many Iteration: %d)\n",
+ iterations);
+ exit(1);
+ }
+ stop_data = calloc(iterations, sizeof(struct timespec));
+ if (stop_data == NULL) {
+ printf("Memory allocation Failed (too many Iteration: %d)\n",
+ iterations);
+ free(start_data);
  exit(1);
  }
 
@@ -253,9 +283,9 @@ int main(int argc, char *argv[])
  printf("\n----------------------\n");
  printf("Gettimeofday() Latency\n");
  printf("----------------------\n");
- printf("Iterations: %d\n\n", ITERATIONS);
+ printf("Iterations: %d\n\n", iterations);
 
- /* collect ITERATIONS pairs of gtod calls */
+ /* collect iterations pairs of gtod calls */
  max = min = 0;
  if (latency_threshold) {
  latency_trace_enable();
@@ -263,7 +293,7 @@ int main(int argc, char *argv[])
  }
  /* This loop runs for a long time, hence can cause soft lockups.
    Calling sleep periodically avoids this. */
- for (i=0; i<(ITERATIONS/10000); i++) {
+ for (i = 0; i < (iterations/10000); i++) {
  for (j=0; j < 10000; j++) {
  k = (i * 10000) + j;
  clock_gettime(CLOCK_MONOTONIC,&start_data[k]);
@@ -271,7 +301,7 @@ int main(int argc, char *argv[])
  }
  usleep(1000);
  }
- for (i = 0; i < ITERATIONS; i++) {
+ for (i = 0; i < iterations; i++) {
  delta = timespec_subtract(&start_data[i], &stop_data[i]);
  dat.records[i].x = i;
  dat.records[i].y = delta;
@@ -282,7 +312,7 @@ int main(int argc, char *argv[])
  }
  if (latency_threshold) {
  latency_trace_stop();
- if (i != ITERATIONS) {
+ if (i != iterations) {
  printf("Latency threshold (%lluus) exceeded at iteration %d\n",
  latency_threshold, i);
  latency_trace_print();
@@ -305,5 +335,9 @@ int main(int argc, char *argv[])
  stats_quantiles_calc(&dat, &quantiles);
  stats_quantiles_print(&quantiles);
 
+ stats_container_free(&dat);
+ stats_container_free(&hist);
+ stats_quantiles_free(&quantiles);
+
  return 0;
 }

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Ltp-list mailing list
Ltp-list@...
https://lists.sourceforge.net/lists/listinfo/ltp-list

Re: [PATCH] add iterations option in gtod_latency.

by Gowrishankar M :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Giuseppe CAVALLARO wrote:

> gowrishankar wrote:
>> Giuseppe CAVALLARO wrote:
>>> Regards,
>>> Peppe
>>>
>> Can you please add freeing resources at the end of main.
>>
>>         stats_container_free(&dat);
>>         stats_container_free(&hist);
>>         stats_quantiles_free(&quantiles);
>>
>> Also, you could set MIN_ITERATION to 10000 instead of hard coding inside
>> main.
>> Just a suggestion.
>
> patch reattached!
> Peppe
>

Patch looks neat!

I just recollected now that I had sent more or less same patch
very long back, but maintainer missed it some how.

http://www.opensource-archive.org/showthread.php?t=82487

Subrata ?? :)

Thanks,
Gowri



>> Thanks,
>> Gowri
>>
>>> ------------------------------------------------------------------------
>>>
>>> ------------------------------------------------------------------------------
>>>
>>> Let Crystal Reports handle the reporting - Free Crystal Reports 2008
>>> 30-Day trial. Simplify your report design, integration and deployment
>>> - and focus on what you do best, core application coding. Discover
>>> what's new with
>>> Crystal Reports now.  http://p.sf.net/sfu/bobj-july
>>>
>>>
>>> ------------------------------------------------------------------------
>>>
>>> _______________________________________________
>>> Ltp-list mailing list
>>> Ltp-list@...
>>> https://lists.sourceforge.net/lists/listinfo/ltp-list
>>
>


------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Ltp-list mailing list
Ltp-list@...
https://lists.sourceforge.net/lists/listinfo/ltp-list

Re: [PATCH] add iterations option in gtod_latency.

by Subrata Modak :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Fri, 2009-11-06 at 19:33 +0530, gowrishankar wrote:

> Giuseppe CAVALLARO wrote:
> > gowrishankar wrote:
> >> Giuseppe CAVALLARO wrote:
> >>> Regards,
> >>> Peppe
> >>>
> >> Can you please add freeing resources at the end of main.
> >>
> >>         stats_container_free(&dat);
> >>         stats_container_free(&hist);
> >>         stats_quantiles_free(&quantiles);
> >>
> >> Also, you could set MIN_ITERATION to 10000 instead of hard coding inside
> >> main.
> >> Just a suggestion.
> >
> > patch reattached!

Thanks. But it fails to apply:

patching file testcases/realtime/func/gtod_latency/gtod_latency.c
Hunk #1 succeeded at 57 (offset 1 line).
Hunk #3 succeeded at 197 (offset 1 line).
Hunk #5 FAILED at 230.
Hunk #6 succeeded at 285 (offset 2 lines).
Hunk #8 succeeded at 303 with fuzz 2 (offset 2 lines).
Hunk #9 succeeded at 313 (offset 1 line).
Hunk #10 succeeded at 337 (offset 2 lines).

> > Peppe
> >
>
> Patch looks neat!
>
> I just recollected now that I had sent more or less same patch
> very long back, but maintainer missed it some how.
>
> http://www.opensource-archive.org/showthread.php?t=82487
>
> Subrata ?? :)

I apolozise to have missed to see your patches. It is rare that i miss
any patches. But, i can see that some other patch changing the same file
was ack-ed by you. You could have reminded me during that time that it
does not include changes sent by you:

http://ltp.cvs.sourceforge.net/viewvc/ltp/ltp/testcases/realtime/func/gtod_latency/gtod_latency.c?view=log,

Revision 1.10 - (view) (download) (annotate) - [select for diffs]
Mon Aug 3 10:37:50 2009 UTC (3 months ago) by subrata_modak
Branch: MAIN
Changes since 1.9: +4 -2 lines
Diff to previous 1.9
This set of 3 patches adds a new API stats_container_append to libstats. This function adds new stats_record_t to the record list in stats_container_t. It also replaces the occurrences of data->size with data->index and modifies the test-cases to call the append function. Changelog
---------
- Added index to stats_container_t struct
- Added Append function to add new stats_record_t to records list of stats_container_t
- Replaced the occurrences of data->size by data->index in libstats.c
- Modified the realtime testcases to include call to the append function.
[PATCH 3/3] libstats: Modify testcases to call the append function: This patch modifies the testcases to call the stats_container_append function.
Signed-off-by: Kiran Prakash <kiran@...>,
Acked-by: Gowrishankar <gowrishankar.m@...>,
Acked-by: Darren Hart <dvhltc@...>,
Acked-by: Sripathi Kodi <sripathik@...>,

Regards--
Subrata

>
> Thanks,
> Gowri
>
>
>
> >> Thanks,
> >> Gowri
> >>
> >>> ------------------------------------------------------------------------
> >>>
> >>> ------------------------------------------------------------------------------
> >>>
> >>> Let Crystal Reports handle the reporting - Free Crystal Reports 2008
> >>> 30-Day trial. Simplify your report design, integration and deployment
> >>> - and focus on what you do best, core application coding. Discover
> >>> what's new with
> >>> Crystal Reports now.  http://p.sf.net/sfu/bobj-july
> >>>
> >>>
> >>> ------------------------------------------------------------------------
> >>>
> >>> _______________________________________________
> >>> Ltp-list mailing list
> >>> Ltp-list@...
> >>> https://lists.sourceforge.net/lists/listinfo/ltp-list
> >>
> >
>


------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Ltp-list mailing list
Ltp-list@...
https://lists.sourceforge.net/lists/listinfo/ltp-list

Re: [PATCH] add iterations option in gtod_latency.

by Giuseppe CAVALLARO-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi Subrata,

Subrata Modak wrote:

> On Fri, 2009-11-06 at 19:33 +0530, gowrishankar wrote:
>> Giuseppe CAVALLARO wrote:
>>> gowrishankar wrote:
>>>> Giuseppe CAVALLARO wrote:
>>>>> Regards,
>>>>> Peppe
>>>>>
>>>> Can you please add freeing resources at the end of main.
>>>>
>>>>         stats_container_free(&dat);
>>>>         stats_container_free(&hist);
>>>>         stats_quantiles_free(&quantiles);
>>>>
>>>> Also, you could set MIN_ITERATION to 10000 instead of hard coding inside
>>>> main.
>>>> Just a suggestion.
>>> patch reattached!
>
> Thanks. But it fails to apply:
>
> patching file testcases/realtime/func/gtod_latency/gtod_latency.c
> Hunk #1 succeeded at 57 (offset 1 line).
> Hunk #3 succeeded at 197 (offset 1 line).
> Hunk #5 FAILED at 230.
> Hunk #6 succeeded at 285 (offset 2 lines).
> Hunk #8 succeeded at 303 with fuzz 2 (offset 2 lines).
> Hunk #9 succeeded at 313 (offset 1 line).
> Hunk #10 succeeded at 337 (offset 2 lines).

you are right, the ltp-full-20090731-gtod_latency_iterations.patch has
to be applied patch after the two patches below:

- - ltp-full-20090731-SH-atomic_add.patch
- - ltp-full-20090731-tsc_splitted.patch

Peppe

>>> Peppe
>>>
>> Patch looks neat!
>>
>> I just recollected now that I had sent more or less same patch
>> very long back, but maintainer missed it some how.
>>
>> http://www.opensource-archive.org/showthread.php?t=82487
>>
>> Subrata ?? :)
>
> I apolozise to have missed to see your patches. It is rare that i miss
> any patches. But, i can see that some other patch changing the same file
> was ack-ed by you. You could have reminded me during that time that it
> does not include changes sent by you:
>
> http://ltp.cvs.sourceforge.net/viewvc/ltp/ltp/testcases/realtime/func/gtod_latency/gtod_latency.c?view=log,
>
> Revision 1.10 - (view) (download) (annotate) - [select for diffs]
> Mon Aug 3 10:37:50 2009 UTC (3 months ago) by subrata_modak
> Branch: MAIN
> Changes since 1.9: +4 -2 lines
> Diff to previous 1.9
> This set of 3 patches adds a new API stats_container_append to libstats. This function adds new stats_record_t to the record list in stats_container_t. It also replaces the occurrences of data->size with data->index and modifies the test-cases to call the append function. Changelog
> ---------
> - Added index to stats_container_t struct
> - Added Append function to add new stats_record_t to records list of stats_container_t
> - Replaced the occurrences of data->size by data->index in libstats.c
> - Modified the realtime testcases to include call to the append function.
> [PATCH 3/3] libstats: Modify testcases to call the append function: This patch modifies the testcases to call the stats_container_append function.
> Signed-off-by: Kiran Prakash <kiran@...>,
> Acked-by: Gowrishankar <gowrishankar.m@...>,
> Acked-by: Darren Hart <dvhltc@...>,
> Acked-by: Sripathi Kodi <sripathik@...>,
>
> Regards--
> Subrata
>
>> Thanks,
>> Gowri
>>
>>
>>
>>>> Thanks,
>>>> Gowri
>>>>
>>>>> ------------------------------------------------------------------------
>>>>>
>>>>> ------------------------------------------------------------------------------
>>>>>
>>>>> Let Crystal Reports handle the reporting - Free Crystal Reports 2008
>>>>> 30-Day trial. Simplify your report design, integration and deployment
>>>>> - and focus on what you do best, core application coding. Discover
>>>>> what's new with
>>>>> Crystal Reports now.  http://p.sf.net/sfu/bobj-july
>>>>>
>>>>>
>>>>> ------------------------------------------------------------------------
>>>>>
>>>>> _______________________________________________
>>>>> Ltp-list mailing list
>>>>> Ltp-list@...
>>>>> https://lists.sourceforge.net/lists/listinfo/ltp-list
>
>

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAksBaCwACgkQ2Xo3j31MSSLMswCff+LA4xYE/h9b37cMRCcjz1J2
J2wAnjwGwpggk4+H58l3/XZ5e0gQRvb4
=ZOT0
-----END PGP SIGNATURE-----

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Ltp-list mailing list
Ltp-list@...
https://lists.sourceforge.net/lists/listinfo/ltp-list

Parent Message unknown Re: [PATCH] add iterations option in gtod_latency.

by Giuseppe CAVALLARO-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi Subrata,

this is the patch reworked to be applied against the ltp cvs.

Regards
Peppe

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAksGhQcACgkQ2Xo3j31MSSINMACfdqZU48hhlPJETmqJkAKppYdo
HawAoLc0yJ8JB2iQ4JU+ffNXmSaZW+9z
=s7E+
-----END PGP SIGNATURE-----

[PATCH] add iterations option in gtod_latency.

This patch adds a new option for tuning the number
of iterations into the gtod_latency realtime test.

Running gtod_latency on a target with limited resources
it fails (ENOMEM) as soon as it try to allocate the memory
for the two buffers start_data and stop_data.

Tested on i386 and sh4 architectures.

Signed-off-by: Giuseppe Cavallaro <peppe.cavallaro@...>

--- ltp/testcases/realtime/func/gtod_latency/gtod_latency.c.orig 2009-11-20 12:45:57.000000000 +0100
+++ ltp/testcases/realtime/func/gtod_latency/gtod_latency.c 2009-11-20 12:47:39.000000000 +0100
@@ -57,6 +57,7 @@
 #include <sys/mman.h>
 
 #define ITERATIONS 10000000
+#define MIN_ITERATION 10000
 #define HIST_BUCKETS 20
 
 #define SCATTER_FILENAME 0
@@ -82,13 +83,14 @@ char *labels[] = {"scatter plot x-axis",
   "histogram y-axis"};
 
 static unsigned long long latency_threshold = 0;
+static unsigned int iterations = ITERATIONS;
 
 void stats_cmdline_help(void)
 {
  printf("Usage: ./gtod_latency {-[so|scatter-output] -[ho|hist-output]"
  " -[st|scatter-title] -[ht|hist-title] -[sxl|scatter-xlabel]"
  " -[syl|scatter-ylabel] -[hxl|hist-xlabel] -[hyl|hist-ylabel]"
- " -[lt|latency-trace]}"
+ " -[lt|latency-trace] -[i|iterations]}"
  " -[help] \n");
  printf("**command-line options are not supported yet for this testcase\n");
 }
@@ -195,6 +197,15 @@ int stats_cmdline(int argc, char *argv[]
  continue;
  }
 
+ if (!strcmp(flag, "i") || !strcmp(flag, "iterations")) {
+ if (i + 1 == argc) {
+ printf("flag has missing argument\n");
+ return -1;
+ }
+ iterations = strtoull(argv[++i], NULL, 0);
+ continue;
+ }
+
  printf("unknown flag given\n");
  return -1;
  }
@@ -211,9 +222,6 @@ long long timespec_subtract(struct times
  return ns;
 }
 
-struct timespec start_data[ITERATIONS];
-struct timespec stop_data[ITERATIONS];
-
 int main(int argc, char *argv[])
 {
  int i, j, k, err;
@@ -224,16 +232,38 @@ int main(int argc, char *argv[])
  stats_container_t hist;
  stats_quantiles_t quantiles;
  stats_record_t rec;
+ struct timespec *start_data;
+ struct timespec *stop_data;
+
+ if (stats_cmdline(argc, argv) < 0) {
+ printf("usage: %s help\n", argv[0]);
+ exit(1);
+ }
+
+ if (iterations < MIN_ITERATION) {
+ iterations = MIN_ITERATION ;
+ printf("user \"iterations\" value is too small (use: %d)\n",
+ iterations);
+ }
 
- stats_container_init(&dat, ITERATIONS);
+ stats_container_init(&dat, iterations);
  stats_container_init(&hist, HIST_BUCKETS);
- stats_quantiles_init(&quantiles, (int)log10(ITERATIONS));
+ stats_quantiles_init(&quantiles, (int)log10(iterations));
  setup();
 
  mlockall(MCL_CURRENT|MCL_FUTURE);
 
- if (stats_cmdline(argc, argv) < 0) {
- printf("usage: %s help\n", argv[0]);
+ start_data = calloc(iterations, sizeof(struct timespec));
+ if (start_data == NULL) {
+ printf("Memory allocation Failed (too many Iteration: %d)\n",
+ iterations);
+ exit(1);
+ }
+ stop_data = calloc(iterations, sizeof(struct timespec));
+ if (stop_data == NULL) {
+ printf("Memory allocation Failed (too many Iteration: %d)\n",
+ iterations);
+ free(start_data);
  exit(1);
  }
 
@@ -255,9 +285,9 @@ int main(int argc, char *argv[])
  printf("\n----------------------\n");
  printf("Gettimeofday() Latency\n");
  printf("----------------------\n");
- printf("Iterations: %d\n\n", ITERATIONS);
+ printf("Iterations: %d\n\n", iterations);
 
- /* collect ITERATIONS pairs of gtod calls */
+ /* collect iterations pairs of gtod calls */
  max = min = 0;
  if (latency_threshold) {
  latency_trace_enable();
@@ -265,7 +295,7 @@ int main(int argc, char *argv[])
  }
  /* This loop runs for a long time, hence can cause soft lockups.
    Calling sleep periodically avoids this. */
- for (i=0; i<(ITERATIONS/10000); i++) {
+ for (i = 0; i < (iterations/10000); i++) {
  for (j=0; j < 10000; j++) {
  k = (i * 10000) + j;
  clock_gettime(CLOCK_MONOTONIC,&start_data[k]);
@@ -273,7 +303,7 @@ int main(int argc, char *argv[])
  }
  usleep(1000);
  }
- for (i = 0; i < ITERATIONS; i++) {
+ for (i = 0; i < iterations; i++) {
  delta = timespec_subtract(&start_data[i], &stop_data[i]);
  rec.x = i;
  rec.y = delta;
@@ -285,7 +315,7 @@ int main(int argc, char *argv[])
  }
  if (latency_threshold) {
  latency_trace_stop();
- if (i != ITERATIONS) {
+ if (i != iterations) {
  printf("Latency threshold (%lluus) exceeded at iteration %d\n",
  latency_threshold, i);
  latency_trace_print();
@@ -308,5 +338,9 @@ int main(int argc, char *argv[])
  stats_quantiles_calc(&dat, &quantiles);
  stats_quantiles_print(&quantiles);
 
+ stats_container_free(&dat);
+ stats_container_free(&hist);
+ stats_quantiles_free(&quantiles);
+
  return 0;
 }

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Ltp-list mailing list
Ltp-list@...
https://lists.sourceforge.net/lists/listinfo/ltp-list

Re: [PATCH] add iterations option in gtod_latency.

by Subrata Modak :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Fri, 2009-11-20 at 13:01 +0100, Giuseppe CAVALLARO wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Hi Subrata,
>
> this is the patch reworked to be applied against the ltp cvs.

Great. Thanks. Added.

Regards--
Subrata

>
> Regards
> Peppe
>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.9 (GNU/Linux)
> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
>
> iEYEARECAAYFAksGhQcACgkQ2Xo3j31MSSINMACfdqZU48hhlPJETmqJkAKppYdo
> HawAoLc0yJ8JB2iQ4JU+ffNXmSaZW+9z
> =s7E+
> -----END PGP SIGNATURE-----


------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Ltp-list mailing list
Ltp-list@...
https://lists.sourceforge.net/lists/listinfo/ltp-list