From b62369fafd79648ddc344a7cd2082e4355771b2f Mon Sep 17 00:00:00 2001 From: Cai Yudong Date: Wed, 19 Feb 2020 17:15:52 +0800 Subject: [PATCH] support CPU profiling (#1251) * #1250 support CPU profiling Signed-off-by: yudong.cai * #1250 fix code coverage Signed-off-by: yudong.cai --- core/CMakeLists.txt | 5 +++++ .../delivery/request/DeleteByDateRequest.cpp | 4 ---- .../server/delivery/request/InsertRequest.cpp | 7 +++++-- .../server/delivery/request/SearchRequest.cpp | 7 +++++-- core/src/utils/CommonUtil.cpp | 16 ++++++++++++++++ core/src/utils/CommonUtil.h | 3 +++ 6 files changed, 34 insertions(+), 8 deletions(-) diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt index 7f21a6b5f8..4938ef5a4a 100644 --- a/core/CMakeLists.txt +++ b/core/CMakeLists.txt @@ -171,6 +171,11 @@ if (MILVUS_WITH_PROMETHEUS) add_compile_definitions("MILVUS_WITH_PROMETHEUS") endif () +message("MILVUS_ENABLE_PROFILING = ${MILVUS_ENABLE_PROFILING}") +if (MILVUS_ENABLE_PROFILING STREQUAL "ON") + ADD_DEFINITIONS(-DMILVUS_ENABLE_PROFILING) +endif() + if (MILVUS_WITH_FIU) add_compile_definitions("FIU_ENABLE") endif () diff --git a/core/src/server/delivery/request/DeleteByDateRequest.cpp b/core/src/server/delivery/request/DeleteByDateRequest.cpp index 1371fb2606..450e9f627a 100644 --- a/core/src/server/delivery/request/DeleteByDateRequest.cpp +++ b/core/src/server/delivery/request/DeleteByDateRequest.cpp @@ -75,10 +75,6 @@ DeleteByDateRequest::OnExecute() { return status; } -#ifdef MILVUS_ENABLE_PROFILING - std::string fname = "/tmp/search_nq_" + this->delete_by_range_param_->table_name() + ".profiling"; - ProfilerStart(fname.c_str()); -#endif status = DBWrapper::DB()->DropTable(table_name_, dates); fiu_do_on("DeleteByDateRequest.OnExecute.drop_table_fail", status = Status(milvus::SERVER_UNEXPECTED_ERROR, "")); diff --git a/core/src/server/delivery/request/InsertRequest.cpp b/core/src/server/delivery/request/InsertRequest.cpp index ec222c1f60..a860e35889 100644 --- a/core/src/server/delivery/request/InsertRequest.cpp +++ b/core/src/server/delivery/request/InsertRequest.cpp @@ -11,6 +11,7 @@ #include "server/delivery/request/InsertRequest.h" #include "server/DBWrapper.h" +#include "utils/CommonUtil.h" #include "utils/Log.h" #include "utils/TimeRecorder.h" #include "utils/ValidationUtil.h" @@ -19,6 +20,9 @@ #include #include #include +#ifdef MILVUS_ENABLE_PROFILING +#include +#endif namespace milvus { namespace server { @@ -101,8 +105,7 @@ InsertRequest::OnExecute() { rc.RecordSection("check validation"); #ifdef MILVUS_ENABLE_PROFILING - std::string fname = - "/tmp/insert_" + std::to_string(this->insert_param_->row_record_array_size()) + ".profiling"; + std::string fname = "/tmp/insert_" + CommonUtil::GetCurrentTimeStr() + ".profiling"; ProfilerStart(fname.c_str()); #endif // step 4: some metric type doesn't support float vectors diff --git a/core/src/server/delivery/request/SearchRequest.cpp b/core/src/server/delivery/request/SearchRequest.cpp index d3cf4bc2d3..1b4211acd3 100644 --- a/core/src/server/delivery/request/SearchRequest.cpp +++ b/core/src/server/delivery/request/SearchRequest.cpp @@ -11,12 +11,16 @@ #include "server/delivery/request/SearchRequest.h" #include "server/DBWrapper.h" +#include "utils/CommonUtil.h" #include "utils/Log.h" #include "utils/TimeRecorder.h" #include "utils/ValidationUtil.h" #include #include +#ifdef MILVUS_ENABLE_PROFILING +#include +#endif namespace milvus { namespace server { @@ -134,8 +138,7 @@ SearchRequest::OnExecute() { engine::ResultDistances result_distances; #ifdef MILVUS_ENABLE_PROFILING - std::string fname = - "/tmp/search_nq_" + std::to_string(this->search_param_->query_record_array_size()) + ".profiling"; + std::string fname = "/tmp/search_" + CommonUtil::GetCurrentTimeStr() + ".profiling"; ProfilerStart(fname.c_str()); #endif diff --git a/core/src/utils/CommonUtil.cpp b/core/src/utils/CommonUtil.cpp index da0348c1b6..3f53b64a32 100644 --- a/core/src/utils/CommonUtil.cpp +++ b/core/src/utils/CommonUtil.cpp @@ -228,6 +228,22 @@ CommonUtil::ConvertTime(tm time_struct, time_t& time_integer) { time_integer = mktime(&time_struct); } +#ifdef MILVUS_ENABLE_PROFILING +std::string +CommonUtil::GetCurrentTimeStr() { + time_t tt; + time(&tt); + tt = tt + 8 * 60; + tm t; + gmtime_r(&tt, &t); + + std::string str = std::to_string(t.tm_year + 1900) + "_" + std::to_string(t.tm_mon + 1) + "_" + + std::to_string(t.tm_mday) + "_" + std::to_string(t.tm_hour) + "_" + std::to_string(t.tm_min) + + "_" + std::to_string(t.tm_sec); + return str; +} +#endif + void CommonUtil::EraseFromCache(const std::string& item_key) { if (item_key.empty()) { diff --git a/core/src/utils/CommonUtil.h b/core/src/utils/CommonUtil.h index c283b9af21..31e2df4e08 100644 --- a/core/src/utils/CommonUtil.h +++ b/core/src/utils/CommonUtil.h @@ -51,6 +51,9 @@ class CommonUtil { static void ConvertTime(tm time_struct, time_t& time_integer); + static std::string + GetCurrentTimeStr(); + static void EraseFromCache(const std::string& item_key); };