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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 <wangjingyi11@xxxxxxxxxx>
> ---
>  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, &total_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
> 
> 




[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux