/** ******************************************************************************* * \brief ******************************************************************************/ TEST(FVT_KV_GOOD_PATH, SYNC_ASYNC_MAGNUS_DIFFICULTUS) { uint32_t num_ctxt = 20; uint32_t ops = 50; uint32_t vlen = KV_64K; uint32_t LEN = 5; uint32_t secs = 10; TESTCASE_SKIP_IF_FILE; #ifdef _AIX if (dev == NULL) { printf("NOT_EXECUTED for memory on AIX\n"); return; } #endif printf("init async %dctxt/%djobs\n", num_ctxt, ops); kv_async_init_ctxt_io(num_ctxt, ops, 16, vlen, LEN, secs); printf("start async jobs\n"); kv_async_start_jobs(); printf("start %dctxt/%dpth sync jobs\n", num_ctxt, ops); Sync_ark_io ark_io_job; ark_io_job.run_multi_arks(num_ctxt, ops, vlen, secs); printf("wait for async jobs\n"); kv_async_wait_jobs(); }
int main(int argc, char **argv) { async_CB_t *pCB = NULL; uint32_t i = 1; uint32_t ctxt = 0; if (1 == argc) { printf("usage: run_kv_async_multi [-p] <dev1> <dev2> ...\n"); printf(" ex: run_kv_async_multi /dev/cxl/afu0.0s /dev/cxl/afu1.0s\n"); printf(" ex: run_kv_async_multi /dev/sdb /dev/sdh /dev/sdq\n"); printf(" ex: run_kv_async_multi -p /dev/sg4 /dev/sg8\n"); exit(0); } bzero(pCTs, sizeof(pCTs)); if (0 == strncmp(argv[1], "-p", 7)) { printf("Attempting to run with physical lun\n"); ark_create_flag = ARK_KV_PERSIST_STORE; KV_ASYNC_CTXT_PER_DEV = 1; i = 2; } else { //KV_ASYNC_CTXT_PER_DEV = 1; KV_ASYNC_CTXT_PER_DEV = 4; KV_ASYNC_JOBS_PER_CTXT = 60; } while (argv[i] != NULL && KV_ASYNC_CONTEXTS <= KV_ASYNC_MAX_CONTEXTS) { kv_async_init_io(argv[i++], KV_ASYNC_JOBS_PER_CTXT, KV_ASYNC_KLEN, KV_ASYNC_VLEN, KV_ASYNC_NUM_KV); KV_ASYNC_CONTEXTS += KV_ASYNC_CTXT_PER_DEV; } start = time(0); /* start all jobs for all contexts */ for (ctxt=0; ctxt<KV_ASYNC_CONTEXTS; ctxt++) { for (pCB=pCTs[ctxt].pCBs; pCB<pCTs[ctxt].pCBs+KV_ASYNC_JOBS_PER_CTXT; pCB++) { pCB->flags |= KV_ASYNC_RUNNING; kv_async_SET_KEY(pCB); } } kv_async_wait_jobs(); return 0; }
/** ******************************************************************************* * \brief ******************************************************************************/ TEST(FVT_KV_GOOD_PATH, SYNC_ASYNC_EASY) { uint32_t klen = 256; uint32_t vlen = KV_64K; uint32_t LEN = 20; uint32_t secs = 5; kv_async_init_ctxt(ASYNC_SINGLE_CONTEXT, secs); kv_async_init_job_easy(ASYNC_SINGLE_CONTEXT); printf("start async jobs\n"); kv_async_start_jobs(); printf("start sync job\n"); fvt_kv_utils_SGD_LOOP(kv_async_get_ark(ASYNC_SINGLE_CONTEXT), kv_db_create_fixed, klen, vlen, LEN, secs); printf("wait for async jobs\n"); kv_async_wait_jobs(); }
/** ******************************************************************************* * \brief ******************************************************************************/ TEST(FVT_KV_GOOD_PATH, SYNC_ASYNC_NPOOL_4) { uint32_t num_ctxt = 1; uint32_t ops = 20; uint32_t npool = 4; uint32_t klen = 16; uint32_t vlen = 128; uint32_t LEN = 500; uint32_t secs = 15; kv_async_init_perf_io(num_ctxt, ops, npool, klen, vlen, LEN, secs); kv_async_start_jobs(); printf("\n"); fflush(stdout); Sync_ark_io ark_io_job; ark_io_job.run_multi_arks(num_ctxt, ops, vlen, secs); printf("ASYNC: "); kv_async_wait_jobs(); }