Motr  M0
crate_client.h
Go to the documentation of this file.
1 /* -*- C -*- */
2 /*
3  * Copyright (c) 2017-2020 Seagate Technology LLC and/or its Affiliates
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  * For any questions about this software or licensing,
18  * please email opensource@seagate.com or cortx-questions@seagate.com.
19  *
20  */
21 
22 
23 #pragma once
24 
25 #ifndef __MOTR_M0CRATE_CRATE_H__
26 #define __MOTR_M0CRATE_CRATE_H__
27 
34 #include "fid/fid.h"
35 #include "motr/client.h"
36 #include "motr/m0crate/workload.h"
38 
39 struct crate_conf {
40  /* Client parameters */
44  char *local_addr;
45  char *ha_addr;
46  char *prof;
47  char *process_fid;
48  int layout_id;
49  char *index_dir;
56  int log_level;
57  uint64_t addb_size;
58 };
59 
63 };
64 
65 enum cr_opcode {
74 };
75 
77  struct m0_uint128 *ids;
78  int *op_status;
79  int num_index;
80  int num_kvs;
81  int mode;
82  int opcode;
85 
89  int op_count;
90 
94  int exec_time;
95 
100 
103 
105  int key_size;
110 
112 
114 
115  uint64_t seed;
116 };
117 
119  int task_idx;
120  int *op_status;
121  struct m0_obj *objs;
122  struct m0_op **ops;
123  struct timeval *op_list_time;
125 };
126 
137 };
138 
143 };
144 
148 };
149 
150 struct cwi_global {
156 };
157 
161  uint32_t cwi_layout_id;
163  uint64_t cwi_bs;
170  uint64_t cwi_io_size;
172  uint32_t cwi_max_nr_ops;
173  int32_t cwi_mode;
174  int32_t cwi_nr_objs;
175  uint32_t cwi_rounds;
178  int32_t cwi_opcode;
185 };
186 
187 struct cti_global {
188  struct m0_obj obj;
189 };
190 
191 struct m0_task_io {
194  uint32_t *cti_op_status;
195  uint32_t *cti_op_rcs;
196  int32_t cti_progress;
198  struct m0_obj *cti_objs;
199  struct m0_op **cti_ops;
200  uint64_t cti_nr_ops;
201  uint64_t cti_nr_ops_done;
202  struct timeval *cti_op_list_time;
211 };
212 
213 int parse_crate(int argc, char **argv, struct workload *w);
214 void run(struct workload *w, struct workload_task *task);
215 void m0_op_run(struct workload *w, struct workload_task *task,
216  const struct workload_op *op);
217 void run_index(struct workload *w, struct workload_task *tasks);
218 void m0_op_run_index(struct workload *w, struct workload_task *task,
219  const struct workload_op *op);
220 
221 
223 #endif /* __MOTR_M0CRATE_CRATE_H__ */
224 
225 /*
226  * Local variables:
227  * c-indentation-style: "K&R"
228  * c-basic-offset: 8
229  * tab-width: 8
230  * fill-column: 80
231  * scroll-step: 1
232  * End:
233  */
234 /*
235  * vim: tabstop=8 shiftwidth=8 noexpandtab textwidth=80 nowrap
236  */
char * prof
Definition: crate_client.h:46
void m0_op_run_index(struct workload *w, struct workload_task *task, const struct workload_op *op)
Definition: crate_index.c:1536
uint32_t cwi_rounds
Definition: crate_client.h:175
struct m0_mutex cg_mutex
Definition: crate_client.h:155
Definition: client.h:788
uint64_t cwi_ops_done[CR_OPS_NR]
Definition: crate_client.h:171
thread_operation
Definition: crate_client.h:145
struct m0_semaphore cti_max_ops_sem
Definition: crate_client.h:210
int32_t cwi_nr_objs
Definition: crate_client.h:174
uint64_t cti_nr_ops_done
Definition: crate_client.h:201
char * cass_cluster_ep
Definition: crate_client.h:51
uint64_t m0_time_t
Definition: time.h:37
void m0_op_run(struct workload *w, struct workload_task *task, const struct workload_op *op)
Definition: crate_io.c:1093
void run_index(struct workload *w, struct workload_task *tasks)
Definition: crate_index.c:1530
void run(struct workload *w, struct workload_task *task)
Definition: crate_io.c:1009
char * local_addr
Definition: crate_client.h:44
uint32_t * cti_op_status
Definition: crate_client.h:194
uint64_t cwi_bs
Definition: crate_client.h:163
bool is_oostrore
Definition: crate_client.h:42
struct cti_global cti_g
Definition: crate_client.h:208
struct m0_fid index_fid
Definition: crate_client.h:113
uint64_t cti_start_offset
Definition: crate_client.h:197
struct m0_fid key_prefix
Definition: crate_client.h:101
m0_operations
Definition: crate_client.h:127
char * cwi_filename
Definition: crate_client.h:184
char * ha_addr
Definition: crate_client.h:45
struct m0_uint128 cg_oid
Definition: crate_client.h:151
int32_t cwi_opcode
Definition: crate_client.h:178
bool is_addb_init
Definition: crate_client.h:41
int opcode_prcnt[CRATE_OP_TYPES]
Definition: crate_client.h:83
m0_time_t cwi_finish_time
Definition: crate_client.h:181
m0_time_t cwi_time[CR_OPS_NR]
Definition: crate_client.h:183
struct cwi_global cwi_g
Definition: crate_client.h:160
op
Definition: libdemo.c:64
m0_time_t cg_cwi_acc_time[CR_OPS_NR]
Definition: crate_client.h:154
struct m0_thread mthread
Definition: crate_client.h:124
cr_opcode
Definition: crate_client.h:65
struct m0_op ** cti_ops
Definition: crate_client.h:199
uint32_t cwi_bcount_per_op
Definition: crate_client.h:168
Definition: client.h:641
struct timeval * op_list_time
Definition: crate_client.h:123
struct timeval * cti_op_list_time
Definition: crate_client.h:202
m0_time_t cti_op_acc_time
Definition: crate_client.h:207
int parse_crate(int argc, char **argv, struct workload *w)
struct m0_bufvec * cti_bufvec
Definition: crate_client.h:204
uint64_t addb_size
Definition: crate_client.h:57
struct m0_uint128 * cti_ids
Definition: crate_client.h:206
int max_rpc_msg_size
Definition: crate_client.h:54
struct m0_workload_io * cti_cwi
Definition: crate_client.h:192
m0_time_t cwi_start_time
Definition: crate_client.h:180
struct m0_uint128 * ids
Definition: crate_client.h:77
struct m0_fid cwi_pool_id
Definition: crate_client.h:169
m0_operation_type
Definition: crate_client.h:60
uint32_t * cti_op_rcs
Definition: crate_client.h:195
int32_t cwi_mode
Definition: crate_client.h:173
struct m0_op ** ops
Definition: crate_client.h:122
uint64_t cti_nr_ops
Definition: crate_client.h:200
Definition: fid.h:38
struct m0_uint128 cwi_start_obj_id
Definition: crate_client.h:179
uint32_t cwi_max_nr_ops
Definition: crate_client.h:172
m0_operation_status
Definition: crate_client.h:139
struct m0_obj obj
Definition: crate_client.h:188
int cti_task_idx
Definition: crate_client.h:193
int col_family
Definition: crate_client.h:55
char * index_dir
Definition: crate_client.h:49
Definition: tasks.py:1
int index_service_id
Definition: crate_client.h:50
struct m0_obj * cti_objs
Definition: crate_client.h:198
uint32_t cwi_layout_id
Definition: crate_client.h:161
char * cass_keyspace
Definition: crate_client.h:52
uint64_t cwi_io_size
Definition: crate_client.h:170
struct m0_bufvec * cti_rd_bufvec
Definition: crate_client.h:205
int32_t cti_progress
Definition: crate_client.h:196
struct m0_obj * objs
Definition: crate_client.h:121
char * process_fid
Definition: crate_client.h:47
struct m0_thread * cti_mthread
Definition: crate_client.h:203
Definition: mutex.h:47
bool is_read_verify
Definition: crate_client.h:43
bool cg_created
Definition: crate_client.h:152
m0_time_t cwi_execution_time
Definition: crate_client.h:182
Definition: vec.h:145
int tm_recv_queue_min_len
Definition: crate_client.h:53