From 90a15c06fec8b640ca2e278c2a4d64a855d1f62c Mon Sep 17 00:00:00 2001 From: augurier <14434658+augurier@user.noreply.gitee.com> Date: Mon, 30 Dec 2024 10:53:39 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E6=9D=A1=E6=B2=A1=E6=B3=A8=E9=87=8A?= =?UTF-8?q?=E5=AE=8C=E5=85=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- fielddb/field_db.cpp | 8 ++-- fielddb/field_db.h | 108 +++++++++++++++++++++++++-------------------------- fielddb/request.cpp | 2 +- 3 files changed, 59 insertions(+), 59 deletions(-) diff --git a/fielddb/field_db.cpp b/fielddb/field_db.cpp index 63c9f2a..1e8cafe 100644 --- a/fielddb/field_db.cpp +++ b/fielddb/field_db.cpp @@ -136,7 +136,7 @@ Status FieldDB::HandleRequest(Request &req, const WriteOptions &op) { //waiting_elasped += env_->NowMicros() - start_waiting; if(req.done) { //elapsed += env_->NowMicros() - start_; - count ++; + //count ++; // dumpStatistics(); return req.s; //在返回时自动释放锁L } @@ -164,7 +164,7 @@ Status FieldDB::HandleRequest(Request &req, const WriteOptions &op) { //uint64_t start_meta = env_->NowMicros(); status = metaDB_->Write(op, &MetaBatch); //write_meta_elapsed += env_->NowMicros() - start_meta; - write_bytes += MetaBatch.ApproximateSize(); + //write_bytes += MetaBatch.ApproximateSize(); assert(status.ok()); } //TODO:index的写入需要在另外一个线程中同时完成 @@ -172,14 +172,14 @@ Status FieldDB::HandleRequest(Request &req, const WriteOptions &op) { //uint64_t start_index = env_->NowMicros(); status = indexDB_->Write(op, &IndexBatch); //write_index_elapsed += env_->NowMicros() - start_index; - write_bytes += IndexBatch.ApproximateSize(); + //write_bytes += IndexBatch.ApproximateSize(); assert(status.ok()); } if(KVBatch.ApproximateSize() > 12) { //uint64_t start_kv = env_->NowMicros(); status = kvDB_->Write(op, &KVBatch); //write_kv_elapsed += env_->NowMicros() - start_kv; - write_bytes += KVBatch.ApproximateSize(); + //write_bytes += KVBatch.ApproximateSize(); assert(status.ok()); } //3. 将meta数据清除 diff --git a/fielddb/field_db.h b/fielddb/field_db.h index 2cd458f..ed9b87f 100644 --- a/fielddb/field_db.h +++ b/fielddb/field_db.h @@ -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, diff --git a/fielddb/request.cpp b/fielddb/request.cpp index 2fe585b..a614f7b 100644 --- a/fielddb/request.cpp +++ b/fielddb/request.cpp @@ -414,7 +414,7 @@ void BatchReq::ConstructBatch(WriteBatch &KVBatch,WriteBatch &IndexBatch, (*subreq)->ConstructBatch(Sub_KVBatch, Sub_IndexBatch, Sub_MetaBatch, DB, Sub_batchKeySet); // (*subreq)->ConstructBatch(KVBatch, IndexBatch, MetaBatch, DB, batchKeySet); //DB->construct_BatchReq_perSub_elapsed += DB->env_->NowMicros() - start_sub; - DB->count_Batch_Sub ++; + //DB->count_Batch_Sub ++; //所有的对于pendreq的调用传入的参数被改成了this->parent,因此,对于subrequests来说, //pendreq的传参为对应的Batchreq,因此,此处判断batchreq是否pending可以得到subreq是否有冲突 if(isPending()) {