Re: [kvm-unit-tests PATCH v2 6/8] arm64: microbench: Allow each test to specify its running times

2020-07-02 Thread Auger Eric
Hi Jingyi,

On 7/2/20 7:29 AM, Andrew Jones wrote:
> On Thu, Jul 02, 2020 at 11:01:30AM +0800, Jingyi Wang wrote:
>> For some test in micro-bench can be time consuming, we add a
>> micro-bench test parameter to allow each individual test to specify
>> its running times.
>>
>> Signed-off-by: Jingyi Wang 
Reviewed-by: Eric Auger 

Eric
>> ---
>>  arm/micro-bench.c | 25 ++---
>>  1 file changed, 14 insertions(+), 11 deletions(-)
>>
>> diff --git a/arm/micro-bench.c b/arm/micro-bench.c
>> index aeb60a7..506d2f9 100644
>> --- a/arm/micro-bench.c
>> +++ b/arm/micro-bench.c
>> @@ -223,17 +223,18 @@ struct exit_test {
>>  const char *name;
>>  bool (*prep)(void);
>>  void (*exec)(void);
>> +u32 times;
>>  bool run;
>>  };
>>  
>>  static struct exit_test tests[] = {
>> -{"hvc", NULL,   hvc_exec,   true},
>> -{"mmio_read_user",  NULL,   mmio_read_user_exec,true},
>> -{"mmio_read_vgic",  NULL,   mmio_read_vgic_exec,true},
>> -{"eoi", NULL,   eoi_exec,   true},
>> -{"ipi", ipi_prep,   ipi_exec,   true},
>> -{"ipi_hw",  ipi_hw_prep,ipi_exec,   true},
>> -{"lpi", lpi_prep,   lpi_exec,   true},
>> +{"hvc", NULL,   hvc_exec,   NTIMES, 
>> true},
>> +{"mmio_read_user",  NULL,   mmio_read_user_exec,NTIMES, 
>> true},
>> +{"mmio_read_vgic",  NULL,   mmio_read_vgic_exec,NTIMES, 
>> true},
>> +{"eoi", NULL,   eoi_exec,   NTIMES, 
>> true},
>> +{"ipi", ipi_prep,   ipi_exec,   NTIMES, 
>> true},
>> +{"ipi_hw",  ipi_hw_prep,ipi_exec,   NTIMES, 
>> true},
>> +{"lpi", lpi_prep,   lpi_exec,   NTIMES, 
>> true},
> 
> Now that we no longer use 'NTIMES' in functions we don't really need the
> define at all. We can just put 65536 directly into the table here for
> each test that needs 65536 times.
> 
> Thanks,
> drew
> 
>>  };
>>  
>>  struct ns_time {
>> @@ -254,7 +255,7 @@ static void ticks_to_ns_time(uint64_t ticks, struct 
>> ns_time *ns_time)
>>  
>>  static void loop_test(struct exit_test *test)
>>  {
>> -uint64_t start, end, total_ticks, ntimes = NTIMES;
>> +uint64_t start, end, total_ticks, ntimes = 0;
>>  struct ns_time total_ns, avg_ns;
>>  
>>  if (test->prep) {
>> @@ -265,15 +266,17 @@ static void loop_test(struct exit_test *test)
>>  }
>>  isb();
>>  start = read_sysreg(cntpct_el0);
>> -while (ntimes--)
>> +while (ntimes < test->times) {
>>  test->exec();
>> +ntimes++;
>> +}
>>  isb();
>>  end = read_sysreg(cntpct_el0);
>>  
>>  total_ticks = end - start;
>>  ticks_to_ns_time(total_ticks, _ns);
>> -avg_ns.ns = total_ns.ns / NTIMES;
>> -avg_ns.ns_frac = total_ns.ns_frac / NTIMES;
>> +avg_ns.ns = total_ns.ns / ntimes;
>> +avg_ns.ns_frac = total_ns.ns_frac / ntimes;
>>  
>>  printf("%-30s%15" PRId64 ".%-15" PRId64 "%15" PRId64 ".%-15" PRId64 
>> "\n",
>>  test->name, total_ns.ns, total_ns.ns_frac, avg_ns.ns, 
>> avg_ns.ns_frac);
>> -- 
>> 2.19.1
>>
>>

___
kvmarm mailing list
kvmarm@lists.cs.columbia.edu
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm


Re: [kvm-unit-tests PATCH v2 6/8] arm64: microbench: Allow each test to specify its running times

2020-07-02 Thread Jingyi Wang




On 7/2/2020 1:29 PM, Andrew Jones wrote:

On Thu, Jul 02, 2020 at 11:01:30AM +0800, Jingyi Wang wrote:

For some test in micro-bench can be time consuming, we add a
micro-bench test parameter to allow each individual test to specify
its running times.

Signed-off-by: Jingyi Wang 
---
  arm/micro-bench.c | 25 ++---
  1 file changed, 14 insertions(+), 11 deletions(-)

diff --git a/arm/micro-bench.c b/arm/micro-bench.c
index aeb60a7..506d2f9 100644
--- a/arm/micro-bench.c
+++ b/arm/micro-bench.c
@@ -223,17 +223,18 @@ struct exit_test {
const char *name;
bool (*prep)(void);
void (*exec)(void);
+   u32 times;
bool run;
  };
  
  static struct exit_test tests[] = {

-   {"hvc",   NULL,   hvc_exec,   
true},
-   {"mmio_read_user",NULL,   mmio_read_user_exec,true},
-   {"mmio_read_vgic",NULL,   mmio_read_vgic_exec,true},
-   {"eoi",   NULL,   eoi_exec,   
true},
-   {"ipi",   ipi_prep,   ipi_exec,   
true},
-   {"ipi_hw",ipi_hw_prep,ipi_exec,   true},
-   {"lpi",   lpi_prep,   lpi_exec,   
true},
+   {"hvc",   NULL,   hvc_exec,   
NTIMES, true},
+   {"mmio_read_user",NULL,   mmio_read_user_exec,NTIMES,   
  true},
+   {"mmio_read_vgic",NULL,   mmio_read_vgic_exec,NTIMES,   
  true},
+   {"eoi",   NULL,   eoi_exec,   
NTIMES, true},
+   {"ipi",   ipi_prep,   ipi_exec,   
NTIMES, true},
+   {"ipi_hw",ipi_hw_prep,ipi_exec,   NTIMES,   
  true},
+   {"lpi",   lpi_prep,   lpi_exec,   
NTIMES, true},


Now that we no longer use 'NTIMES' in functions we don't really need the
define at all. We can just put 65536 directly into the table here for
each test that needs 65536 times.

Thanks,
drew



Done, thanks for reviewing.


  };
  
  struct ns_time {

@@ -254,7 +255,7 @@ static void ticks_to_ns_time(uint64_t ticks, struct ns_time 
*ns_time)
  
  static void loop_test(struct exit_test *test)

  {
-   uint64_t start, end, total_ticks, ntimes = NTIMES;
+   uint64_t start, end, total_ticks, ntimes = 0;
struct ns_time total_ns, avg_ns;
  
  	if (test->prep) {

@@ -265,15 +266,17 @@ static void loop_test(struct exit_test *test)
}
isb();
start = read_sysreg(cntpct_el0);
-   while (ntimes--)
+   while (ntimes < test->times) {
test->exec();
+   ntimes++;
+   }
isb();
end = read_sysreg(cntpct_el0);
  
  	total_ticks = end - start;

ticks_to_ns_time(total_ticks, _ns);
-   avg_ns.ns = total_ns.ns / NTIMES;
-   avg_ns.ns_frac = total_ns.ns_frac / NTIMES;
+   avg_ns.ns = total_ns.ns / ntimes;
+   avg_ns.ns_frac = total_ns.ns_frac / ntimes;
  
  	printf("%-30s%15" PRId64 ".%-15" PRId64 "%15" PRId64 ".%-15" PRId64 "\n",

test->name, total_ns.ns, total_ns.ns_frac, avg_ns.ns, 
avg_ns.ns_frac);
--
2.19.1





.



___
kvmarm mailing list
kvmarm@lists.cs.columbia.edu
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm


Re: [kvm-unit-tests PATCH v2 6/8] arm64: microbench: Allow each test to specify its running times

2020-07-01 Thread Andrew Jones
On Thu, Jul 02, 2020 at 11:01:30AM +0800, Jingyi Wang wrote:
> For some test in micro-bench can be time consuming, we add a
> micro-bench test parameter to allow each individual test to specify
> its running times.
> 
> Signed-off-by: Jingyi Wang 
> ---
>  arm/micro-bench.c | 25 ++---
>  1 file changed, 14 insertions(+), 11 deletions(-)
> 
> diff --git a/arm/micro-bench.c b/arm/micro-bench.c
> index aeb60a7..506d2f9 100644
> --- a/arm/micro-bench.c
> +++ b/arm/micro-bench.c
> @@ -223,17 +223,18 @@ struct exit_test {
>   const char *name;
>   bool (*prep)(void);
>   void (*exec)(void);
> + u32 times;
>   bool run;
>  };
>  
>  static struct exit_test tests[] = {
> - {"hvc", NULL,   hvc_exec,   true},
> - {"mmio_read_user",  NULL,   mmio_read_user_exec,true},
> - {"mmio_read_vgic",  NULL,   mmio_read_vgic_exec,true},
> - {"eoi", NULL,   eoi_exec,   true},
> - {"ipi", ipi_prep,   ipi_exec,   true},
> - {"ipi_hw",  ipi_hw_prep,ipi_exec,   true},
> - {"lpi", lpi_prep,   lpi_exec,   true},
> + {"hvc", NULL,   hvc_exec,   NTIMES, 
> true},
> + {"mmio_read_user",  NULL,   mmio_read_user_exec,NTIMES, 
> true},
> + {"mmio_read_vgic",  NULL,   mmio_read_vgic_exec,NTIMES, 
> true},
> + {"eoi", NULL,   eoi_exec,   NTIMES, 
> true},
> + {"ipi", ipi_prep,   ipi_exec,   NTIMES, 
> true},
> + {"ipi_hw",  ipi_hw_prep,ipi_exec,   NTIMES, 
> true},
> + {"lpi", lpi_prep,   lpi_exec,   NTIMES, 
> true},

Now that we no longer use 'NTIMES' in functions we don't really need the
define at all. We can just put 65536 directly into the table here for
each test that needs 65536 times.

Thanks,
drew

>  };
>  
>  struct ns_time {
> @@ -254,7 +255,7 @@ static void ticks_to_ns_time(uint64_t ticks, struct 
> ns_time *ns_time)
>  
>  static void loop_test(struct exit_test *test)
>  {
> - uint64_t start, end, total_ticks, ntimes = NTIMES;
> + uint64_t start, end, total_ticks, ntimes = 0;
>   struct ns_time total_ns, avg_ns;
>  
>   if (test->prep) {
> @@ -265,15 +266,17 @@ static void loop_test(struct exit_test *test)
>   }
>   isb();
>   start = read_sysreg(cntpct_el0);
> - while (ntimes--)
> + while (ntimes < test->times) {
>   test->exec();
> + ntimes++;
> + }
>   isb();
>   end = read_sysreg(cntpct_el0);
>  
>   total_ticks = end - start;
>   ticks_to_ns_time(total_ticks, _ns);
> - avg_ns.ns = total_ns.ns / NTIMES;
> - avg_ns.ns_frac = total_ns.ns_frac / NTIMES;
> + avg_ns.ns = total_ns.ns / ntimes;
> + avg_ns.ns_frac = total_ns.ns_frac / ntimes;
>  
>   printf("%-30s%15" PRId64 ".%-15" PRId64 "%15" PRId64 ".%-15" PRId64 
> "\n",
>   test->name, total_ns.ns, total_ns.ns_frac, avg_ns.ns, 
> avg_ns.ns_frac);
> -- 
> 2.19.1
> 
> 

___
kvmarm mailing list
kvmarm@lists.cs.columbia.edu
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm