diff mbox series

open_posix/conformance/clock/1.1: Deterministic timing

Message ID 20190925092958.125325-1-lkml@jv-coder.de
State Accepted
Headers show
Series open_posix/conformance/clock/1.1: Deterministic timing | expand

Commit Message

Joerg Vehlow Sept. 25, 2019, 9:29 a.m. UTC
From: Joerg Vehlow <joerg.vehlow@aox-tech.de>

On some systems the loop with 8 million iterations takes a very long time.
This patches changes it to busy loop for five seconds.

Signed-off-by: Joerg Vehlow <joerg.vehlow@aox-tech.de>
---
 .../conformance/interfaces/clock/1-1.c                 | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

Comments

Cyril Hrubis Sept. 26, 2019, 12:25 p.m. UTC | #1
Hi!
> On some systems the loop with 8 million iterations takes a very long time.
> This patches changes it to busy loop for five seconds.
> 
> Signed-off-by: Joerg Vehlow <joerg.vehlow@aox-tech.de>
> ---
>  .../conformance/interfaces/clock/1-1.c                 | 10 ++++++----
>  1 file changed, 6 insertions(+), 4 deletions(-)
> 
> diff --git a/testcases/open_posix_testsuite/conformance/interfaces/clock/1-1.c b/testcases/open_posix_testsuite/conformance/interfaces/clock/1-1.c
> index 9c48cd979..cce5beea9 100644
> --- a/testcases/open_posix_testsuite/conformance/interfaces/clock/1-1.c
> +++ b/testcases/open_posix_testsuite/conformance/interfaces/clock/1-1.c
> @@ -17,20 +17,22 @@
>  #include <time.h>
>  #include <stdio.h>
>  #include <unistd.h>
> +#include <time.h>
>  #include "posixtest.h"
>  
> -#define LARGENUMBER 8000000
> +#define BUSY_LOOP_SECONDS 5
>  int main(void)
>  {
>  	clock_t c1, c2;
>  	double sec1, sec2;
> -	int i;
> +	time_t end;
>  
>  	c1 = clock();
>  	sec1 = c1 / CLOCKS_PER_SEC;
>  
> -	for (i = 0; i < LARGENUMBER; i++) {
> -		// keep busy so CPU time increases
> +	end = time(NULL) + BUSY_LOOP_SECONDS;
> +
> +	while (end >= time(NULL)) {
>  		clock();
>  	}

clock_gettime() with CLOCK_MONOTONIC would be better fit there, since
the wall clock can be changed by ntp and generally is not guaranteed to
be monotonic...

>  
> -- 
> 2.20.1
> 
> 
> -- 
> Mailing list info: https://lists.linux.it/listinfo/ltp
Joerg Vehlow Sept. 26, 2019, 12:37 p.m. UTC | #2
Am 26.09.2019 um 14:25 schrieb Cyril Hrubis:
> Hi!
>> On some systems the loop with 8 million iterations takes a very long time.
>> This patches changes it to busy loop for five seconds.
>>
>> Signed-off-by: Joerg Vehlow <joerg.vehlow@aox-tech.de>
>> ---
>>   .../conformance/interfaces/clock/1-1.c                 | 10 ++++++----
>>   1 file changed, 6 insertions(+), 4 deletions(-)
>>
>> diff --git a/testcases/open_posix_testsuite/conformance/interfaces/clock/1-1.c b/testcases/open_posix_testsuite/conformance/interfaces/clock/1-1.c
>> index 9c48cd979..cce5beea9 100644
>> --- a/testcases/open_posix_testsuite/conformance/interfaces/clock/1-1.c
>> +++ b/testcases/open_posix_testsuite/conformance/interfaces/clock/1-1.c
>> @@ -17,20 +17,22 @@
>>   #include <time.h>
>>   #include <stdio.h>
>>   #include <unistd.h>
>> +#include <time.h>
>>   #include "posixtest.h"
>>   
>> -#define LARGENUMBER 8000000
>> +#define BUSY_LOOP_SECONDS 5
>>   int main(void)
>>   {
>>   	clock_t c1, c2;
>>   	double sec1, sec2;
>> -	int i;
>> +	time_t end;
>>   
>>   	c1 = clock();
>>   	sec1 = c1 / CLOCKS_PER_SEC;
>>   
>> -	for (i = 0; i < LARGENUMBER; i++) {
>> -		// keep busy so CPU time increases
>> +	end = time(NULL) + BUSY_LOOP_SECONDS;
>> +
>> +	while (end >= time(NULL)) {
>>   		clock();
>>   	}
> clock_gettime() with CLOCK_MONOTONIC would be better fit there, since
> the wall clock can be changed by ntp and generally is not guaranteed to
> be monotonic...
I was actually thinking the same, but decided to use time() because of 
a) it doesn't matter much as long as some time passes by and b) 
monotonic clocks are an optional feature in posix.
>>   
>> -- 
>> 2.20.1
>>
>>
>> -- 
>> Mailing list info: https://lists.linux.it/listinfo/ltp
Cyril Hrubis Oct. 3, 2019, 1:49 p.m. UTC | #3
Hi!
> I was actually thinking the same, but decided to use time() because of 
> a) it doesn't matter much as long as some time passes by and b) 
> monotonic clocks are an optional feature in posix.

Fair enough, applied, thanks.
diff mbox series

Patch

diff --git a/testcases/open_posix_testsuite/conformance/interfaces/clock/1-1.c b/testcases/open_posix_testsuite/conformance/interfaces/clock/1-1.c
index 9c48cd979..cce5beea9 100644
--- a/testcases/open_posix_testsuite/conformance/interfaces/clock/1-1.c
+++ b/testcases/open_posix_testsuite/conformance/interfaces/clock/1-1.c
@@ -17,20 +17,22 @@ 
 #include <time.h>
 #include <stdio.h>
 #include <unistd.h>
+#include <time.h>
 #include "posixtest.h"
 
-#define LARGENUMBER 8000000
+#define BUSY_LOOP_SECONDS 5
 int main(void)
 {
 	clock_t c1, c2;
 	double sec1, sec2;
-	int i;
+	time_t end;
 
 	c1 = clock();
 	sec1 = c1 / CLOCKS_PER_SEC;
 
-	for (i = 0; i < LARGENUMBER; i++) {
-		// keep busy so CPU time increases
+	end = time(NULL) + BUSY_LOOP_SECONDS;
+
+	while (end >= time(NULL)) {
 		clock();
 	}