* [PATCH V2] dmenginer: dmatest: exclude compare and fill time during perf report
@ 2016-07-18 13:52 ` Sinan Kaya
0 siblings, 0 replies; 4+ messages in thread
From: Sinan Kaya @ 2016-07-18 13:52 UTC (permalink / raw)
To: dmaengine, timur, cov
Cc: linux-arm-msm, linux-arm-kernel, Sinan Kaya, linux-kernel
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
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH V2] dmenginer: dmatest: exclude compare and fill time during perf report
@ 2016-07-18 13:52 ` Sinan Kaya
0 siblings, 0 replies; 4+ messages in thread
From: Sinan Kaya @ 2016-07-18 13:52 UTC (permalink / raw)
To: linux-arm-kernel
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
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH V2] dmenginer: dmatest: exclude compare and fill time during perf report
2016-07-18 13:52 ` Sinan Kaya
@ 2016-07-18 14:10 ` Sinan Kaya
-1 siblings, 0 replies; 4+ messages in thread
From: Sinan Kaya @ 2016-07-18 14:10 UTC (permalink / raw)
To: dmaengine, timur, cov; +Cc: linux-arm-msm, linux-arm-kernel, linux-kernel
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.
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH V2] dmenginer: dmatest: exclude compare and fill time during perf report
@ 2016-07-18 14:10 ` Sinan Kaya
0 siblings, 0 replies; 4+ messages in thread
From: Sinan Kaya @ 2016-07-18 14:10 UTC (permalink / raw)
To: linux-arm-kernel
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.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2016-07-18 14:10 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-07-18 13:52 [PATCH V2] dmenginer: dmatest: exclude compare and fill time during perf report Sinan Kaya
2016-07-18 13:52 ` Sinan Kaya
2016-07-18 14:10 ` Sinan Kaya
2016-07-18 14:10 ` Sinan Kaya
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.