33 #define M0_TRACE_SUBSYSTEM M0_TRACE_SUBSYS_UT 114 *be_ctx_out = be_ctx;
128 void (*test_work_put)
151 test_work_put(tb, success,
ptr);
187 bu->
tbu_pos +=
sizeof(uint64_t);
197 uint64_t worker_index,
201 uint64_t *
value = user;
212 uint64_t worker_index,
238 .bqc_producers_nr_max = 1,
241 .tbc_partitions_nr = 1,
242 .tbc_work_items_per_tx_max = 3,
319 *cred_payload = (*cred_payload * payload_bp) / 10000;
321 *cred_payload += payload_v;
332 bool put_successful =
true;
352 uint64_t worker_index,
361 uint64_t
start = (uint64_t)user;
388 uint64_t worker_index,
392 uint64_t
start = (uint64_t)user;
432 .bqc_producers_nr_max = 1,
435 .tbc_partitions_nr = 1,
436 .tbc_work_items_per_tx_max = 1,
469 .bbs_payload_cred = 0,
470 .bbs_payload_cred_bp = 0,
473 .bbs_payload_use = 0,
474 .bbs_payload_use_bp = 0,
483 .bbs_cred_bp = 10000,
484 .bbs_payload_cred = 0,
485 .bbs_payload_cred_bp = 0,
488 .bbs_payload_use = 0,
489 .bbs_payload_use_bp = 0,
499 .bbs_payload_cred = 1,
500 .bbs_payload_cred_bp = 10000,
503 .bbs_payload_use = 0,
504 .bbs_payload_use_bp = 0,
513 .bbs_cred_bp = 10000,
514 .bbs_payload_cred = 0,
515 .bbs_payload_cred_bp = 0,
518 .bbs_payload_use = 0,
519 .bbs_payload_use_bp = 0,
529 .bbs_payload_cred = 0,
530 .bbs_payload_cred_bp = 10000,
533 .bbs_payload_use = 0,
534 .bbs_payload_use_bp = 10000,
543 .bbs_cred_bp = 10000,
544 .bbs_payload_cred = 0,
545 .bbs_payload_cred_bp = 10000,
548 .bbs_payload_use = 0,
549 .bbs_payload_use_bp = 10000,
559 .bbs_payload_cred = 0x8,
560 .bbs_payload_cred_bp = 0,
563 .bbs_payload_use = 0x8,
564 .bbs_payload_use_bp = 0,
574 .bbs_payload_cred = 1,
575 .bbs_payload_cred_bp = 5,
578 .bbs_payload_use = 1,
579 .bbs_payload_use_bp = 5,
590 .bbs_payload_cred = 1,
591 .bbs_payload_cred_bp = 5,
594 .bbs_payload_use = 1,
595 .bbs_payload_use_bp = 5,
598 .tbbc_tx_group_nr = 8,
608 .bbs_payload_cred = 0,
609 .bbs_payload_cred_bp = 80,
612 .bbs_payload_use = 0,
613 .bbs_payload_use_bp = 2,
623 .bbs_payload_cred = 0,
624 .bbs_payload_cred_bp = 500,
627 .bbs_payload_use = 0,
628 .bbs_payload_use_bp = 2,
708 uint64_t worker_index,
712 uint64_t *
value = user;
725 uint64_t worker_index,
760 .bqc_producers_nr_max = 1,
764 .tbc_work_items_per_tx_max =
796 uint64_t partitions_nr;
805 .bqc_producers_nr_max = 1,
807 .bqc_item_length =
sizeof(*wi),
815 .tbbc_tx_group_nr = 4,
816 .tbbc_tx_nr_max = 32,
841 for (partitions_nr = 1;
844 for (workers_nr = partitions_nr;
851 .bubw_partitions_nr = partitions_nr,
852 .bubw_workers_nr = workers_nr,
853 .bubw_work_items_per_partition =
855 .bubw_work_items_per_tx_max =
883 #undef M0_TRACE_SUBSYSTEM static void be_ut_tx_bulk_state_do(struct m0_be_tx_bulk *tb, struct m0_be_tx *tx, struct m0_be_op *op, void *datum, void *user, uint64_t worker_index, uint64_t partition)
static void be_ut_tx_bulk_state_test_prepare(struct m0_be_ut_backend *ut_be, struct m0_be_ut_seg *ut_seg, void *ptr)
static void m0_atomic64_inc(struct m0_atomic64 *a)
void m0_be_ut_seg_fini(struct m0_be_ut_seg *ut_seg)
static void ptr(struct m0_addb2__context *ctx, const uint64_t *v, char *buf)
struct m0_be_seg * tbu_seg
#define M0_ALLOC_ARR(arr, nr)
M0_INTERNAL void m0_be_tx_bulk_run(struct m0_be_tx_bulk *tb, struct m0_be_op *op)
M0_INTERNAL int m0_be_tx_bulk_init(struct m0_be_tx_bulk *tb, struct m0_be_tx_bulk_cfg *tb_cfg)
void m0_be_ut_tx_bulk_usecase(void)
struct m0_be_tx_credit bbs_cred
static void be_ut_tx_bulk_parallel_done(struct m0_be_tx_bulk *tb, void *datum, void *user, uint64_t worker_index, uint64_t partition)
#define M0_BE_QUEUE_PUT(bq, op, ptr)
M0_INTERNAL int m0_be_ut_backend_init_cfg(struct m0_be_ut_backend *ut_be, const struct m0_be_domain_cfg *cfg, bool mkfs)
M0_INTERNAL void m0_be_tx_bulk_end(struct m0_be_tx_bulk *tb)
static void be_ut_tx_bulk_state_done(struct m0_be_tx_bulk *tb, void *datum, void *user, uint64_t worker_index, uint64_t partition)
void m0_be_ut_tx_bulk_small_tx(void)
struct be_ut_tx_bulk_parallel_ctx * bubw_ctx
static void be_ut_tx_bulk_test_fini(struct be_ut_tx_bulk_be_ctx *be_ctx)
void m0_be_ut_tx_bulk_medium_cred(void)
#define M0_BE_QUEUE_GET(bq, op, ptr, successful)
uint64_t bubw_partitions_nr
#define M0_LOG(level,...)
void m0_be_ut_tx_bulk_large_tx(void)
struct m0_be_seg * bus_seg
void m0_be_ut_tx_bulk_medium_tx(void)
#define M0_BE_OP_SYNC(op_obj, action)
m0_bcount_t bbs_payload_use
int const char const void * value
void m0_be_ut_tx_bulk_large_all(void)
#define M0_BE_TX_CAPTURE_PTR(seg, tx, ptr)
struct m0_be_ut_seg ut_seg
void m0_be_ut_seg_init(struct m0_be_ut_seg *ut_seg, struct m0_be_ut_backend *ut_be, m0_bcount_t size)
m0_bcount_t bbs_payload_cred
#define M0_BE_TX_CREDIT_TYPE(type)
static void be_ut_tx_bulk_test_init(struct be_ut_tx_bulk_be_ctx **be_ctx_out, struct be_ut_tx_bulk_be_cfg *be_cfg, void(*test_prepare)(struct m0_be_ut_backend *ut_be, struct m0_be_ut_seg *ut_seg, void *ptr), void *ptr)
struct m0_be_tx_credit bec_tx_size_max
unsigned bbs_payload_use_bp
static void be_ut_tx_bulk_usecase_test_prepare(struct m0_be_ut_backend *ut_be, struct m0_be_ut_seg *ut_seg, void *ptr)
#define M0_BE_TX_CREDIT(nr, size)
struct m0_atomic64 * bbs_callback_counter
M0_INTERNAL int m0_be_queue_init(struct m0_be_queue *bq, struct m0_be_queue_cfg *cfg)
void m0_be_ut_tx_bulk_medium_tx_multi(void)
static struct nlx_ping_client_params * params
void m0_be_ut_backend_cfg_default(struct m0_be_domain_cfg *cfg)
struct m0_be_ut_backend ut_be
void m0_be_ut_tx_bulk_error_reg(void)
static void be_ut_tx_bulk_usecase_do(struct m0_be_tx_bulk *tb, struct m0_be_tx *tx, struct m0_be_op *op, void *datum, void *user, uint64_t worker_index, uint64_t partition)
struct m0_be_ut_seg * tbbx_ut_seg
M0_INTERNAL void m0_be_queue_unlock(struct m0_be_queue *bq)
static void be_ut_tx_bulk_state_calc(struct be_ut_tx_bulk_state *tbs, bool calc_cred, struct m0_be_tx_credit *cred, m0_bcount_t *cred_payload)
M0_INTERNAL int m0_be_tx_bulk_status(struct m0_be_tx_bulk *tb)
M0_INTERNAL void m0_be_queue_fini(struct m0_be_queue *bq)
#define M0_BE_TX_CAPTURE_BUF(seg, tx, buf)
struct m0_be_tx_credit tgc_size_max
struct m0_be_queue * bubp_bq
struct m0_be_tx_credit bbs_cred_max
void m0_be_ut_tx_bulk_large_payload(void)
struct m0_be_seg * bbs_seg
M0_INTERNAL void m0_be_tx_credit_add(struct m0_be_tx_credit *c0, const struct m0_be_tx_credit *c1)
M0_INTERNAL void m0_ut_threads_stop(struct m0_ut_threads_descr *descr)
unsigned long tgc_tx_nr_max
static void be_ut_tx_bulk_state_work_put(struct m0_be_tx_bulk *tb, bool success, void *ptr)
M0_INTERNAL void m0_be_ut_alloc(struct m0_be_ut_backend *ut_be, struct m0_be_ut_seg *ut_seg, void **ptr, m0_bcount_t size)
void m0_be_ut_tx_bulk_parallel_1_15(void)
M0_INTERNAL void m0_be_op_done(struct m0_be_op *op)
struct m0_be_ut_backend * tbbx_ut_be
struct m0_atomic64 bubw_do_calls
m0_bcount_t bbs_payload_max
static void be_ut_tx_bulk_parallel_do(struct m0_be_tx_bulk *tb, struct m0_be_tx *tx, struct m0_be_op *op, void *datum, void *user, uint64_t worker_index, uint64_t partition)
static struct fdmi_ctx ctx
struct m0_be_domain but_dom
void(* utd_thread_func)(void *param)
static void be_ut_tx_bulk_parallel_test_prepare(struct m0_be_ut_backend *ut_be, struct m0_be_ut_seg *ut_seg, void *ptr)
struct m0_be_tx_credit bbs_use
void m0_be_ut_tx_bulk_error_payload(void)
static int64_t m0_atomic64_get(const struct m0_atomic64 *a)
#define m0_forall(var, nr,...)
M0_INTERNAL void m0_be_op_reset(struct m0_be_op *op)
struct m0_atomic64 bubc_counter
struct m0_be_pd_cfg bc_pd_cfg
M0_INTERNAL bool m0_be_tx_bulk_put(struct m0_be_tx_bulk *tb, struct m0_be_op *op, struct m0_be_tx_credit *credit, m0_bcount_t payload_credit, uint64_t partition, void *user)
struct be_ut_tx_bulk_be_ctx * bubc_be_ctx
M0_INTERNAL void m0_be_op_active(struct m0_be_op *op)
M0_INTERNAL void m0_be_tx_bulk_fini(struct m0_be_tx_bulk *tb)
static void be_ut_tx_bulk_parallel_thread(void *_param)
static void be_ut_tx_bulk_usecase_work_put(struct m0_be_tx_bulk *tb, bool success, void *ptr)
#define M0_ALLOC_PTR(ptr)
M0_INTERNAL void m0_ut_threads_start(struct m0_ut_threads_descr *descr, int thread_nr, void *param_array, size_t param_size)
static void be_ut_tx_bulk_state_test_run(struct be_ut_tx_bulk_state *tbs, struct be_ut_tx_bulk_be_cfg *be_cfg, bool success)
M0_INTERNAL void m0_be_domain_tx_size_max(struct m0_be_domain *dom, struct m0_be_tx_credit *cred, m0_bcount_t *payload_size)
void m0_be_ut_tx_bulk_empty(void)
M0_INTERNAL void m0_be_op_fini(struct m0_be_op *op)
static int start(struct m0_fom *fom)
struct m0_atomic64 bubw_done_calls
void m0_be_ut_backend_fini(struct m0_be_ut_backend *ut_be)
M0_INTERNAL void m0_be_queue_lock(struct m0_be_queue *bq)
struct m0_be_tx_group_cfg bec_group_cfg
void m0_be_ut_tx_bulk_large_cred(void)
M0_INTERNAL void m0_be_tx_credit_mul_bp(struct m0_be_tx_credit *c, unsigned bp)
M0_INTERNAL void m0_be_queue_end(struct m0_be_queue *bq)
M0_INTERNAL void m0_be_op_init(struct m0_be_op *op)
static void be_ut_tx_bulk_parallel_work_put(struct m0_be_tx_bulk *tb, bool success, void *ptr)
static void be_ut_tx_bulk_usecase_done(struct m0_be_tx_bulk *tb, void *datum, void *user, uint64_t worker_index, uint64_t partition)
struct m0_be_engine_cfg bc_engine
static void be_ut_tx_bulk_test_run(struct be_ut_tx_bulk_be_ctx *be_ctx, struct m0_be_tx_bulk_cfg *tb_cfg, void(*test_work_put)(struct m0_be_tx_bulk *tb, bool success, void *ptr), void *ptr, bool success)
uint64_t bubw_work_items_per_partition
static int64_t m0_atomic64_add_return(struct m0_atomic64 *a, int64_t d)
uint64_t bubw_work_items_per_tx_max
static uint64_t max64u(uint64_t a, uint64_t b)
M0_INTERNAL void m0_be_op_wait(struct m0_be_op *op)
static void m0_atomic64_set(struct m0_atomic64 *a, int64_t num)
unsigned bbs_payload_cred_bp