Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1445500 > unrolled thread

[PATCH V2] dmenginer: dmatest: exclude compare and fill time during perf report

Started bySinan Kaya <okaya@codeaurora.org>
First post2016-07-18 16:00 +0200
Last post2016-07-18 16:20 +0200
Articles 2 — 1 participant

Back to article view | Back to linux.kernel


Contents

  [PATCH V2] dmenginer: dmatest: exclude compare and fill time during perf report Sinan Kaya <okaya@codeaurora.org> - 2016-07-18 16:00 +0200
    Re: [PATCH V2] dmenginer: dmatest: exclude compare and fill time  during perf report Sinan Kaya <okaya@codeaurora.org> - 2016-07-18 16:20 +0200

#1445500 — [PATCH V2] dmenginer: dmatest: exclude compare and fill time during perf report

FromSinan Kaya <okaya@codeaurora.org>
Date2016-07-18 16:00 +0200
Subject[PATCH V2] dmenginer: dmatest: exclude compare and fill time during perf report
Message-ID<rWhfs-6UE-21@gated-at.bofh.it>
Dmatest is currently including compare and fill time into the
calculated performance numbers. This does not reflect the HW
capability and the results vary based on the transfer sizes used.

Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
---
 drivers/dma/dmatest.c | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/drivers/dma/dmatest.c b/drivers/dma/dmatest.c
index b8576fd..0b3e1f9 100644
--- a/drivers/dma/dmatest.c
+++ b/drivers/dma/dmatest.c
@@ -416,7 +416,9 @@ static int dmatest_func(void *data)
 	int			src_cnt;
 	int			dst_cnt;
 	int			i;
-	ktime_t			ktime;
+	ktime_t			ktime, start, diff;
+	ktime_t			filltime = ktime_set(0, 0);
+	ktime_t			comparetime = ktime_set(0, 0);
 	s64			runtime = 0;
 	unsigned long long	total_len = 0;
 
@@ -517,6 +519,7 @@ static int dmatest_func(void *data)
 			src_off = 0;
 			dst_off = 0;
 		} else {
+			start = ktime_get();
 			src_off = dmatest_random() % (params->buf_size - len + 1);
 			dst_off = dmatest_random() % (params->buf_size - len + 1);
 
@@ -527,6 +530,9 @@ static int dmatest_func(void *data)
 					  params->buf_size);
 			dmatest_init_dsts(thread->dsts, dst_off, len,
 					  params->buf_size);
+
+			diff = ktime_sub(ktime_get(), start);
+			filltime = ktime_add(filltime, diff);
 		}
 
 		um = dmaengine_get_unmap_data(dev->dev, src_cnt+dst_cnt,
@@ -657,6 +663,7 @@ static int dmatest_func(void *data)
 			continue;
 		}
 
+		start = ktime_get();
 		pr_debug("%s: verifying source buffer...\n", current->comm);
 		error_count = dmatest_verify(thread->srcs, 0, src_off,
 				0, PATTERN_SRC, true);
@@ -677,6 +684,9 @@ static int dmatest_func(void *data)
 				params->buf_size, dst_off + len,
 				PATTERN_DST, false);
 
+		diff = ktime_sub(ktime_get(), start);
+		comparetime = ktime_add(comparetime, diff);
+
 		if (error_count) {
 			result("data error", total_tests, src_off, dst_off,
 			       len, error_count);
@@ -686,7 +696,10 @@ static int dmatest_func(void *data)
 				       dst_off, len, 0);
 		}
 	}
-	runtime = ktime_us_delta(ktime_get(), ktime);
+	ktime = ktime_sub(ktime_get(), ktime);
+	ktime = ktime_sub(ktime, comparetime);
+	ktime = ktime_sub(ktime, filltime);
+	runtime = ktime_to_us(ktime);
 
 	ret = 0;
 err_dstbuf:
-- 
1.8.2.1

[toc] | [next] | [standalone]


#1445505 — Re: [PATCH V2] dmenginer: dmatest: exclude compare and fill time during perf report

FromSinan Kaya <okaya@codeaurora.org>
Date2016-07-18 16:20 +0200
SubjectRe: [PATCH V2] dmenginer: dmatest: exclude compare and fill time during perf report
Message-ID<rWhyN-7ha-5@gated-at.bofh.it>
In reply to#1445500
Sorry for the typo at the commit summary. Fat fingers...


On 7/18/2016 9:52 AM, Sinan Kaya wrote:
> Dmatest is currently including compare and fill time into the
> calculated performance numbers. This does not reflect the HW
> capability and the results vary based on the transfer sizes used.
> 
> Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
> ---
>  drivers/dma/dmatest.c | 17 +++++++++++++++--
>  1 file changed, 15 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/dma/dmatest.c b/drivers/dma/dmatest.c
> index b8576fd..0b3e1f9 100644
> --- a/drivers/dma/dmatest.c
> +++ b/drivers/dma/dmatest.c
> @@ -416,7 +416,9 @@ static int dmatest_func(void *data)
>  	int			src_cnt;
>  	int			dst_cnt;
>  	int			i;
> -	ktime_t			ktime;
> +	ktime_t			ktime, start, diff;
> +	ktime_t			filltime = ktime_set(0, 0);
> +	ktime_t			comparetime = ktime_set(0, 0);
>  	s64			runtime = 0;
>  	unsigned long long	total_len = 0;
>  
> @@ -517,6 +519,7 @@ static int dmatest_func(void *data)
>  			src_off = 0;
>  			dst_off = 0;
>  		} else {
> +			start = ktime_get();
>  			src_off = dmatest_random() % (params->buf_size - len + 1);
>  			dst_off = dmatest_random() % (params->buf_size - len + 1);
>  
> @@ -527,6 +530,9 @@ static int dmatest_func(void *data)
>  					  params->buf_size);
>  			dmatest_init_dsts(thread->dsts, dst_off, len,
>  					  params->buf_size);
> +
> +			diff = ktime_sub(ktime_get(), start);
> +			filltime = ktime_add(filltime, diff);
>  		}
>  
>  		um = dmaengine_get_unmap_data(dev->dev, src_cnt+dst_cnt,
> @@ -657,6 +663,7 @@ static int dmatest_func(void *data)
>  			continue;
>  		}
>  
> +		start = ktime_get();
>  		pr_debug("%s: verifying source buffer...\n", current->comm);
>  		error_count = dmatest_verify(thread->srcs, 0, src_off,
>  				0, PATTERN_SRC, true);
> @@ -677,6 +684,9 @@ static int dmatest_func(void *data)
>  				params->buf_size, dst_off + len,
>  				PATTERN_DST, false);
>  
> +		diff = ktime_sub(ktime_get(), start);
> +		comparetime = ktime_add(comparetime, diff);
> +
>  		if (error_count) {
>  			result("data error", total_tests, src_off, dst_off,
>  			       len, error_count);
> @@ -686,7 +696,10 @@ static int dmatest_func(void *data)
>  				       dst_off, len, 0);
>  		}
>  	}
> -	runtime = ktime_us_delta(ktime_get(), ktime);
> +	ktime = ktime_sub(ktime_get(), ktime);
> +	ktime = ktime_sub(ktime, comparetime);
> +	ktime = ktime_sub(ktime, filltime);
> +	runtime = ktime_to_us(ktime);
>  
>  	ret = 0;
>  err_dstbuf:
> 


-- 
Sinan Kaya
Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc.
Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project.

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web