|
|
@ -91,60 +91,60 @@ private: |
|
|
|
Status HandleRequest(Request &req, const WriteOptions &op); //每个请求自行构造请求后交由这个函数处理 |
|
|
|
Request *GetHandleInterval(); //获得任务队列中的待处理区间,区间划分规则和原因见文档 |
|
|
|
|
|
|
|
private: |
|
|
|
int count = 0; |
|
|
|
int count_Batch = 0; |
|
|
|
int count_Batch_Sub = 0; |
|
|
|
uint64_t elapsed = 0; |
|
|
|
|
|
|
|
uint64_t construct_elapsed = 0; |
|
|
|
uint64_t construct_BatchReq_init_elapsed = 0; |
|
|
|
uint64_t construct_BatchReq_elapsed = 0; |
|
|
|
uint64_t construct_BatchReq_Sub_elapsed = 0; |
|
|
|
uint64_t construct_BatchReq_perSub_elapsed = 0; |
|
|
|
uint64_t construct_FieldsReq_Read_elapsed = 0; |
|
|
|
|
|
|
|
uint64_t write_elapsed = 0; |
|
|
|
uint64_t write_meta_elapsed = 0; |
|
|
|
uint64_t write_index_elapsed = 0; |
|
|
|
uint64_t write_kv_elapsed = 0; |
|
|
|
uint64_t write_clean_elapsed = 0; |
|
|
|
|
|
|
|
uint64_t write_bytes = 0; |
|
|
|
uint64_t write_step = 500 * 1024 * 1024; |
|
|
|
uint64_t write_bytes_lim = write_step; |
|
|
|
|
|
|
|
uint64_t temp_elapsed = 0; |
|
|
|
|
|
|
|
uint64_t waiting_elasped = 0; |
|
|
|
|
|
|
|
inline void
dumpStatistics() { |
|
|
|
if(count && count % 500000 == 0 || write_bytes && write_bytes > write_bytes_lim) { |
|
|
|
std::cout << "=====================================================\n"; |
|
|
|
std::cout << "Total Count : " << count; |
|
|
|
std::cout << "\tTotal Write Bytes(MB) : " << write_bytes / 1048576.0 << std::endl; |
|
|
|
std::cout << "Average Time(ms) : " << elapsed * 1.0 / count; |
|
|
|
std::cout << "\tAverage Write rates(MB/s) : " << write_bytes / 1048576.0 / elapsed * 1000000 << std::endl; |
|
|
|
std::cout << "Construct Time(ms) : " << construct_elapsed * 1.0 / count << std::endl; |
|
|
|
std::cout << "\tConstruct BatchReq Init Time(ms) : " << construct_BatchReq_init_elapsed * 1.0 / count << std::endl; |
|
|
|
std::cout << "\tConstruct BatchReq Time(ms) : " << construct_BatchReq_elapsed * 1.0 / count << std::endl; |
|
|
|
std::cout << "\tConstruct BatchReq Sub Time(ms) : " << construct_BatchReq_Sub_elapsed * 1.0 / count << std::endl; |
|
|
|
std::cout << "\tConstruct BatchReq perSub Time(ms) : " << construct_BatchReq_perSub_elapsed * 1.0 / count_Batch_Sub << std::endl; |
|
|
|
std::cout << "\tConstruct FieldsReq Read Time(ms) : " << construct_FieldsReq_Read_elapsed * 1.0 / count << std::endl; |
|
|
|
std::cout << "Write Time(ms) : " << write_elapsed * 1.0 / count << std::endl; |
|
|
|
std::cout << "\tWrite Meta Time(ms) : " << write_meta_elapsed * 1.0 / count << std::endl; |
|
|
|
std::cout << "\tWrite Index Time(ms) : " << write_index_elapsed * 1.0 / count << std::endl; |
|
|
|
std::cout << "\tWrite KV Time(ms) : " << write_kv_elapsed * 1.0 / count << std::endl; |
|
|
|
std::cout << "\tWrite Clean Time(ms) : " << write_clean_elapsed * 1.0 / count << std::endl; |
|
|
|
std::cout << "TaskQueue Size : " << taskqueue_.size() << std::endl; |
|
|
|
std::cout << "temp_elased : " << temp_elapsed * 1.0 / count << std::endl; |
|
|
|
std::cout << "waiting elapsed : " << waiting_elasped * 1.0 / count << std::endl; |
|
|
|
// std::cout << MetaBatch.ApproximateSize() << " " << IndexBatch.ApproximateSize() << " " << KVBatch.ApproximateSize() << std::endl; |
|
|
|
std::cout << "=====================================================\n"; |
|
|
|
write_bytes_lim = write_bytes + write_step; |
|
|
|
std::fflush(stdout); |
|
|
|
} |
|
|
|
} |
|
|
|
// private: |
|
|
|
// int count = 0; |
|
|
|
// int count_Batch = 0; |
|
|
|
// int count_Batch_Sub = 0; |
|
|
|
// uint64_t elapsed = 0; |
|
|
|
|
|
|
|
// uint64_t construct_elapsed = 0; |
|
|
|
// uint64_t construct_BatchReq_init_elapsed = 0; |
|
|
|
// uint64_t construct_BatchReq_elapsed = 0; |
|
|
|
// uint64_t construct_BatchReq_Sub_elapsed = 0; |
|
|
|
// uint64_t construct_BatchReq_perSub_elapsed = 0; |
|
|
|
// uint64_t construct_FieldsReq_Read_elapsed = 0; |
|
|
|
|
|
|
|
// uint64_t write_elapsed = 0; |
|
|
|
// uint64_t write_meta_elapsed = 0; |
|
|
|
// uint64_t write_index_elapsed = 0; |
|
|
|
// uint64_t write_kv_elapsed = 0; |
|
|
|
// uint64_t write_clean_elapsed = 0; |
|
|
|
|
|
|
|
// uint64_t write_bytes = 0; |
|
|
|
// uint64_t write_step = 500 * 1024 * 1024; |
|
|
|
// uint64_t write_bytes_lim = write_step; |
|
|
|
|
|
|
|
// uint64_t temp_elapsed = 0; |
|
|
|
|
|
|
|
// uint64_t waiting_elasped = 0; |
|
|
|
|
|
|
|
// inline void dumpStatistics() { |
|
|
|
// if(count && count % 500000 == 0 || write_bytes && write_bytes > write_bytes_lim) { |
|
|
|
// std::cout << "=====================================================\n"; |
|
|
|
// std::cout << "Total Count : " << count; |
|
|
|
// std::cout << "\tTotal Write Bytes(MB) : " << write_bytes / 1048576.0 << std::endl; |
|
|
|
// std::cout << "Average Time(ms) : " << elapsed * 1.0 / count; |
|
|
|
// std::cout << "\tAverage Write rates(MB/s) : " << write_bytes / 1048576.0 / elapsed * 1000000 << std::endl; |
|
|
|
// std::cout << "Construct Time(ms) : " << construct_elapsed * 1.0 / count << std::endl; |
|
|
|
// std::cout << "\tConstruct BatchReq Init Time(ms) : " << construct_BatchReq_init_elapsed * 1.0 / count << std::endl; |
|
|
|
// std::cout << "\tConstruct BatchReq Time(ms) : " << construct_BatchReq_elapsed * 1.0 / count << std::endl; |
|
|
|
// std::cout << "\tConstruct BatchReq Sub Time(ms) : " << construct_BatchReq_Sub_elapsed * 1.0 / count << std::endl; |
|
|
|
// std::cout << "\tConstruct BatchReq perSub Time(ms) : " << construct_BatchReq_perSub_elapsed * 1.0 / count_Batch_Sub << std::endl; |
|
|
|
// std::cout << "\tConstruct FieldsReq Read Time(ms) : " << construct_FieldsReq_Read_elapsed * 1.0 / count << std::endl; |
|
|
|
// std::cout << "Write Time(ms) : " << write_elapsed * 1.0 / count << std::endl; |
|
|
|
// std::cout << "\tWrite Meta Time(ms) : " << write_meta_elapsed * 1.0 / count << std::endl; |
|
|
|
// std::cout << "\tWrite Index Time(ms) : " << write_index_elapsed * 1.0 / count << std::endl; |
|
|
|
// std::cout << "\tWrite KV Time(ms) : " << write_kv_elapsed * 1.0 / count << std::endl; |
|
|
|
// std::cout << "\tWrite Clean Time(ms) : " << write_clean_elapsed * 1.0 / count << std::endl; |
|
|
|
// std::cout << "TaskQueue Size : " << taskqueue_.size() << std::endl; |
|
|
|
// std::cout << "temp_elased : " << temp_elapsed * 1.0 / count << std::endl; |
|
|
|
// std::cout << "waiting elapsed : " << waiting_elasped * 1.0 / count << std::endl; |
|
|
|
// // std::cout << MetaBatch.ApproximateSize() << " " << IndexBatch.ApproximateSize() << " " << KVBatch.ApproximateSize() << std::endl; |
|
|
|
// std::cout << "=====================================================\n"; |
|
|
|
// write_bytes_lim = write_bytes + write_step; |
|
|
|
// std::fflush(stdout); |
|
|
|
// } |
|
|
|
// } |
|
|
|
}; |
|
|
|
|
|
|
|
Status DestroyDB(const std::string& name, |
|
|
|