ioat, kperf: fix the testing output.
The previous performance caculation is wrong, which is smaller than the per channel performance, so fix it with the average performance data. Change-Id: I40580e5f70fb4273fa080bbdfb17ce85436446aa Signed-off-by: Ziye Yang <ziye.yang@intel.com>
This commit is contained in:
parent
23dd35a729
commit
bd2697e6b0
@ -39,6 +39,8 @@
|
|||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
||||||
|
#define ioat_max(a,b) (((a)>(b))?(a):(b))
|
||||||
|
|
||||||
static int
|
static int
|
||||||
check_modules(char *driver_name)
|
check_modules(char *driver_name)
|
||||||
{
|
{
|
||||||
@ -331,26 +333,31 @@ int main(int argc, char *argv[])
|
|||||||
sprintf(channel, "/sys/kernel/debug/dmaperf/dmaperf/thread_%u/copied", i);
|
sprintf(channel, "/sys/kernel/debug/dmaperf/dmaperf/thread_%u/copied", i);
|
||||||
rc = get_u64_from_file(channel, &copied);
|
rc = get_u64_from_file(channel, &copied);
|
||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
fprintf(stderr, "Cannot get channel copied bytes\n");
|
fprintf(stderr, "Cannot get channel copied data\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
/* time in microseconds for total data transfer length */
|
/* time in microseconds for total data transfer length */
|
||||||
sprintf(channel, "/sys/kernel/debug/dmaperf/dmaperf/thread_%u/elapsed_time", i);
|
sprintf(channel, "/sys/kernel/debug/dmaperf/dmaperf/thread_%u/elapsed_time", i);
|
||||||
|
/* elapsed_time is in microsecond */
|
||||||
rc = get_u64_from_file(channel, &elapsed_time);
|
rc = get_u64_from_file(channel, &elapsed_time);
|
||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
fprintf(stderr, "Cannot get channel elapsed time\n");
|
fprintf(stderr, "Cannot get channel elapsed time\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
assert(elapsed_time != 0);
|
assert(elapsed_time != 0);
|
||||||
perf = copied / elapsed_time;
|
perf = (copied * 1000 * 1000) / (elapsed_time * 1024 * 1024);
|
||||||
total_copied += copied;
|
total_copied += copied;
|
||||||
total_time += elapsed_time;
|
total_time = ioat_max(elapsed_time, total_time);
|
||||||
fprintf(stdout, "Channel %d Performance Data %"PRIu64" MB/s\n",
|
fprintf(stdout, "Channel %d Bandwidth %"PRIu64" MiB/s\n",
|
||||||
i, perf);
|
i, perf);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (total_time && threads)
|
if (total_time && threads) {
|
||||||
fprintf(stdout, "Total Channel Performance Data %"PRIu64" MB/s\n",
|
fprintf(stdout, "Total Channel Bandwidth: %"PRIu64" MiB/s\n",
|
||||||
total_copied / total_time / threads);
|
total_copied / total_time);
|
||||||
|
fprintf(stdout, "Average Bandwidth Per Channel: %"PRIu64" MiB/s\n",
|
||||||
|
(total_copied * 1000 * 1000) / (total_time * threads * 1024 * 1024));
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user