nvme/overhead: track min and max submit/complete
Add slightly better statistics to get a range of values instead of just the average. Change-Id: I159994dce38412755afdd8980030c407125957e9 Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
This commit is contained in:
parent
ab7deee952
commit
0b3bd6a9c5
@ -112,7 +112,11 @@ static int g_aio_optind; /* Index of first AIO filename in argv */
|
|||||||
|
|
||||||
struct perf_task *g_task;
|
struct perf_task *g_task;
|
||||||
uint64_t g_tsc_submit = 0;
|
uint64_t g_tsc_submit = 0;
|
||||||
|
uint64_t g_tsc_submit_min = UINT64_MAX;
|
||||||
|
uint64_t g_tsc_submit_max = 0;
|
||||||
uint64_t g_tsc_complete = 0;
|
uint64_t g_tsc_complete = 0;
|
||||||
|
uint64_t g_tsc_complete_min = UINT64_MAX;
|
||||||
|
uint64_t g_tsc_complete_max = 0;
|
||||||
uint64_t g_io_completed = 0;
|
uint64_t g_io_completed = 0;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -286,6 +290,7 @@ submit_single_io(void)
|
|||||||
uint64_t start;
|
uint64_t start;
|
||||||
int rc;
|
int rc;
|
||||||
struct ns_entry *entry = g_ns;
|
struct ns_entry *entry = g_ns;
|
||||||
|
uint64_t tsc_submit;
|
||||||
|
|
||||||
offset_in_ios = rand_r(&seed) % entry->size_in_ios;
|
offset_in_ios = rand_r(&seed) % entry->size_in_ios;
|
||||||
|
|
||||||
@ -304,7 +309,14 @@ submit_single_io(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
rte_mb();
|
rte_mb();
|
||||||
g_tsc_submit += rte_get_tsc_cycles() - start;
|
tsc_submit = rte_get_tsc_cycles() - start;
|
||||||
|
g_tsc_submit += tsc_submit;
|
||||||
|
if (tsc_submit < g_tsc_submit_min) {
|
||||||
|
g_tsc_submit_min = tsc_submit;
|
||||||
|
}
|
||||||
|
if (tsc_submit > g_tsc_submit_max) {
|
||||||
|
g_tsc_submit_max = tsc_submit;
|
||||||
|
}
|
||||||
|
|
||||||
if (rc != 0) {
|
if (rc != 0) {
|
||||||
fprintf(stderr, "starting I/O failed\n");
|
fprintf(stderr, "starting I/O failed\n");
|
||||||
@ -324,7 +336,7 @@ uint64_t g_complete_tsc_start;
|
|||||||
static void
|
static void
|
||||||
check_io(void)
|
check_io(void)
|
||||||
{
|
{
|
||||||
uint64_t end;
|
uint64_t end, tsc_complete;
|
||||||
rte_mb();
|
rte_mb();
|
||||||
#if HAVE_LIBAIO
|
#if HAVE_LIBAIO
|
||||||
if (g_ns->type == ENTRY_TYPE_AIO_FILE) {
|
if (g_ns->type == ENTRY_TYPE_AIO_FILE) {
|
||||||
@ -349,7 +361,14 @@ check_io(void)
|
|||||||
g_complete_tsc_start = end;
|
g_complete_tsc_start = end;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
g_tsc_complete += end - g_complete_tsc_start;
|
tsc_complete = end - g_complete_tsc_start;
|
||||||
|
g_tsc_complete += tsc_complete;
|
||||||
|
if (tsc_complete < g_tsc_complete_min) {
|
||||||
|
g_tsc_complete_min = tsc_complete;
|
||||||
|
}
|
||||||
|
if (tsc_complete > g_tsc_complete_max) {
|
||||||
|
g_tsc_complete_max = tsc_complete;
|
||||||
|
}
|
||||||
g_io_completed++;
|
g_io_completed++;
|
||||||
if (!g_ns->is_draining) {
|
if (!g_ns->is_draining) {
|
||||||
submit_single_io();
|
submit_single_io();
|
||||||
@ -468,8 +487,10 @@ print_stats(void)
|
|||||||
printf("g_tsc_complete = %ju\n", g_tsc_complete);
|
printf("g_tsc_complete = %ju\n", g_tsc_complete);
|
||||||
printf("g_io_completed = %ju\n", g_io_completed);
|
printf("g_io_completed = %ju\n", g_io_completed);
|
||||||
|
|
||||||
printf("avg submit = %8.1f\n", (float)g_tsc_submit / g_io_completed);
|
printf("submit avg, min, max = %8.1f, %ju, %ju\n",
|
||||||
printf("avg complete = %8.1f\n", (float)g_tsc_complete / g_io_completed);
|
(float)g_tsc_submit / g_io_completed, g_tsc_submit_min, g_tsc_submit_max);
|
||||||
|
printf("complete avg, min, max = %8.1f, %ju, %ju\n",
|
||||||
|
(float)g_tsc_complete / g_io_completed, g_tsc_complete_min, g_tsc_complete_max);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
Loading…
Reference in New Issue
Block a user