nvme/perf: align buffers to block size for libaio
This is required by libaio. Previously, buffers were aligned to 512 bytes, but 4K devices need 4K-aligned buffers. Change-Id: I96080e72dc77e0e72f426f7c9fe98b6724f66e1b Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
This commit is contained in:
parent
8e97d585de
commit
4f9f191c89
@ -141,6 +141,7 @@ static int g_num_workers = 0;
|
|||||||
|
|
||||||
static uint64_t g_tsc_rate;
|
static uint64_t g_tsc_rate;
|
||||||
|
|
||||||
|
static uint32_t g_io_align = 0x200;
|
||||||
static uint32_t g_io_size_bytes;
|
static uint32_t g_io_size_bytes;
|
||||||
static int g_rw_percentage;
|
static int g_rw_percentage;
|
||||||
static int g_is_random;
|
static int g_is_random;
|
||||||
@ -336,6 +337,14 @@ register_aio_file(const char *path)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* TODO: This should really calculate the LCM of the current g_io_align and blklen.
|
||||||
|
* For now, it's fairly safe to just assume all block sizes are powers of 2.
|
||||||
|
*/
|
||||||
|
if (g_io_align < blklen) {
|
||||||
|
g_io_align = blklen;
|
||||||
|
}
|
||||||
|
|
||||||
entry = malloc(sizeof(struct ns_entry));
|
entry = malloc(sizeof(struct ns_entry));
|
||||||
if (entry == NULL) {
|
if (entry == NULL) {
|
||||||
close(fd);
|
close(fd);
|
||||||
@ -401,7 +410,7 @@ aio_check_io(struct ns_worker_ctx *ns_ctx)
|
|||||||
static void task_ctor(struct rte_mempool *mp, void *arg, void *__task, unsigned id)
|
static void task_ctor(struct rte_mempool *mp, void *arg, void *__task, unsigned id)
|
||||||
{
|
{
|
||||||
struct perf_task *task = __task;
|
struct perf_task *task = __task;
|
||||||
task->buf = spdk_zmalloc(g_io_size_bytes, 0x200, NULL);
|
task->buf = spdk_zmalloc(g_io_size_bytes, g_io_align, NULL);
|
||||||
if (task->buf == NULL) {
|
if (task->buf == NULL) {
|
||||||
fprintf(stderr, "task->buf spdk_zmalloc failed\n");
|
fprintf(stderr, "task->buf spdk_zmalloc failed\n");
|
||||||
exit(1);
|
exit(1);
|
||||||
|
Loading…
Reference in New Issue
Block a user