diff --git a/cpp/CHANGELOG.md b/cpp/CHANGELOG.md index 2c50b90aa33d4fad02dc282d86282d80b347f0d3..268940e8e34efd4f39be54416e548fb92823c193 100644 --- a/cpp/CHANGELOG.md +++ b/cpp/CHANGELOG.md @@ -7,6 +7,8 @@ Please mark all change in change log and use the ticket from JIRA. ## Bug - MS-411 - Fix metric unittest linking error - MS-412 - Fix gpu cache logical error +- MS-416 - ExecutionEngineImpl::GpuCache has not return value cause crash +- MS-417 - YAML sequence load disable cause scheduler startup failed ## Improvement - MS-327 - Clean code for milvus @@ -51,6 +53,9 @@ Please mark all change in change log and use the ticket from JIRA. - MS-409 - Using new scheduler - MS-413 - Remove thrift dependency - MS-410 - Add resource config comment +- MS-414 - Add TaskType in Scheduler::Task +- MS-415 - Add command tasktable to dump all tasktables +- MS-418 - Update server_config.template file, set CPU compute only default - MS-419 - Move index_file_size from IndexParam to TableSchema ## New Feature diff --git a/cpp/conf/server_config.template b/cpp/conf/server_config.template index c7ae51682ff21207f16fa8cd92b042c67d5734e6..386b61d1f102f086bd38643da0ea1c876cf69284 100644 --- a/cpp/conf/server_config.template +++ b/cpp/conf/server_config.template @@ -64,21 +64,21 @@ resource_config: memory: 64 device_id: 0 enable_loader: true - enable_executor: false + enable_executor: true gtx1060: type: GPU memory: 6 device_id: 0 - enable_loader: true - enable_executor: true + enable_loader: false + enable_executor: false gtx1660: type: GPU memory: 6 device_id: 1 - enable_loader: true - enable_executor: true + enable_loader: false + enable_executor: false # connection list, length: 0~N # format: -${resource_name}===${resource_name} diff --git a/cpp/src/config/YamlConfigMgr.cpp b/cpp/src/config/YamlConfigMgr.cpp index ee935bf32ccf460fe128afc7de3738401b593667..9a34ef3e63c978c184d859cc5b3dc6997ab7ac06 100644 --- a/cpp/src/config/YamlConfigMgr.cpp +++ b/cpp/src/config/YamlConfigMgr.cpp @@ -73,19 +73,19 @@ YamlConfigMgr::SetChildConfig(const YAML::Node& node, return false; } -//bool -//YamlConfigMgr::SetSequence(const YAML::Node &node, -// const std::string &child_name, -// ConfigNode &config) { -// if(node[child_name].IsDefined ()) { -// size_t cnt = node[child_name].size(); -// for(size_t i = 0; i < cnt; i++){ -// config.AddSequenceItem(child_name, node[child_name][i].as()); -// } -// return true; -// } -// return false; -//} +bool +YamlConfigMgr::SetSequence(const YAML::Node &node, + const std::string &child_name, + ConfigNode &config) { + if(node[child_name].IsDefined ()) { + size_t cnt = node[child_name].size(); + for(size_t i = 0; i < cnt; i++){ + config.AddSequenceItem(child_name, node[child_name][i].as()); + } + return true; + } + return false; +} void YamlConfigMgr::LoadConfigNode(const YAML::Node& node, ConfigNode& config) { @@ -98,8 +98,8 @@ YamlConfigMgr::LoadConfigNode(const YAML::Node& node, ConfigNode& config) { SetConfigValue(node, key, config); } else if(node[key].IsMap()){ SetChildConfig(node, key, config); -// } else if(node[key].IsSequence()){ -// SetSequence(node, key, config); + } else if(node[key].IsSequence()){ + SetSequence(node, key, config); } } } diff --git a/cpp/src/config/YamlConfigMgr.h b/cpp/src/config/YamlConfigMgr.h index 05b55d9da526e64e05c597386b9ab4f6cd11145c..b8828b7a8c297598f3500ca21a86943c9b21e957 100644 --- a/cpp/src/config/YamlConfigMgr.h +++ b/cpp/src/config/YamlConfigMgr.h @@ -33,10 +33,10 @@ class YamlConfigMgr : public IConfigMgr { const std::string &name, ConfigNode &config); -// bool -// SetSequence(const YAML::Node &node, -// const std::string &child_name, -// ConfigNode &config); + bool + SetSequence(const YAML::Node &node, + const std::string &child_name, + ConfigNode &config); void LoadConfigNode(const YAML::Node& node, ConfigNode& config); diff --git a/cpp/src/db/engine/ExecutionEngineImpl.cpp b/cpp/src/db/engine/ExecutionEngineImpl.cpp index 7489e7849e3b407669948ae382fba465380cb1e8..7ae48649fb4ba3ec75c598a2163163bbda57152d 100644 --- a/cpp/src/db/engine/ExecutionEngineImpl.cpp +++ b/cpp/src/db/engine/ExecutionEngineImpl.cpp @@ -273,6 +273,8 @@ Status ExecutionEngineImpl::Cache() { Status ExecutionEngineImpl::GpuCache(uint64_t gpu_id) { zilliz::milvus::cache::GpuCacheMgr::GetInstance(gpu_id)->InsertItem(location_, index_); + + return Status::OK(); } // TODO(linxj): remove. diff --git a/cpp/src/scheduler/task/DeleteTask.cpp b/cpp/src/scheduler/task/DeleteTask.cpp index 9f76de506e855a422d44057fb8b215f81707dd8b..0e9c7dc36006b2d8f0a5fd5cc5ba9ed269882ae1 100644 --- a/cpp/src/scheduler/task/DeleteTask.cpp +++ b/cpp/src/scheduler/task/DeleteTask.cpp @@ -12,7 +12,7 @@ namespace milvus { namespace engine { XDeleteTask::XDeleteTask(DeleteContextPtr &delete_context) - : delete_context_ptr_(delete_context) {} + : Task(TaskType::DeleteTask), delete_context_ptr_(delete_context) {} void XDeleteTask::Load(LoadType type, uint8_t device_id) { diff --git a/cpp/src/scheduler/task/SearchTask.cpp b/cpp/src/scheduler/task/SearchTask.cpp index 7d342a3592b64615eb1b5f383463dc2540e8075b..3ddc2beb73af632b1289f62efff39e85f12dd326 100644 --- a/cpp/src/scheduler/task/SearchTask.cpp +++ b/cpp/src/scheduler/task/SearchTask.cpp @@ -81,11 +81,12 @@ CollectFileMetrics(int file_type, size_t file_size) { } } -XSearchTask::XSearchTask(TableFileSchemaPtr file) : file_(file) { +XSearchTask::XSearchTask(TableFileSchemaPtr file) + : Task(TaskType::SearchTask), file_(file) { index_engine_ = EngineFactory::Build(file_->dimension_, file_->location_, (EngineType) file_->engine_type_, - (MetricType)file_->metric_type_, + (MetricType) file_->metric_type_, file_->nlist_); } diff --git a/cpp/src/scheduler/task/Task.h b/cpp/src/scheduler/task/Task.h index 4d78894d31048a43b4c2bc01b47a83f6f5777c52..bc2dae464b5e291dcc421c14499fd5558bb38de2 100644 --- a/cpp/src/scheduler/task/Task.h +++ b/cpp/src/scheduler/task/Task.h @@ -21,13 +21,20 @@ enum class LoadType { GPU2CPU, }; +enum class TaskType { + SearchTask, + DeleteTask, + TestTask, +}; + class Task; using TaskPtr = std::shared_ptr; class Task { public: - Task() = default; + explicit + Task(TaskType type) : type_(type) {} virtual void Load(LoadType type, uint8_t device_id) = 0; @@ -39,9 +46,13 @@ public: virtual TaskPtr Clone() = 0; + inline TaskType + Type() const { return type_; } + public: std::vector search_contexts_; ScheduleTaskPtr task_; + TaskType type_; }; diff --git a/cpp/src/scheduler/task/TestTask.cpp b/cpp/src/scheduler/task/TestTask.cpp index 527e1b0fb18f30b1f5e550d01984a0364d911a2e..29f2a94048e422644420364e35c851b1d8f81fa8 100644 --- a/cpp/src/scheduler/task/TestTask.cpp +++ b/cpp/src/scheduler/task/TestTask.cpp @@ -11,6 +11,8 @@ namespace zilliz { namespace milvus { namespace engine { +TestTask::TestTask() : Task(TaskType::TestTask) {} + void TestTask::Load(LoadType type, uint8_t device_id) { load_count_++; diff --git a/cpp/src/scheduler/task/TestTask.h b/cpp/src/scheduler/task/TestTask.h index 0eb77504c8109f56917e2cead025d80e81d90b7e..5a466ec3394db3ac546251dbf400331dc2e0a7b3 100644 --- a/cpp/src/scheduler/task/TestTask.h +++ b/cpp/src/scheduler/task/TestTask.h @@ -14,7 +14,7 @@ namespace engine { class TestTask : public Task { public: - TestTask() = default; + TestTask(); public: void diff --git a/cpp/src/server/grpc_impl/GrpcRequestTask.cpp b/cpp/src/server/grpc_impl/GrpcRequestTask.cpp index 4f8dda30934b85e69b4aa3c5c61505affef263f4..a185272f269f2048f20b38326dcfbefad9eefefa 100644 --- a/cpp/src/server/grpc_impl/GrpcRequestTask.cpp +++ b/cpp/src/server/grpc_impl/GrpcRequestTask.cpp @@ -13,6 +13,7 @@ #include "version.h" #include "GrpcMilvusServer.h" #include "db/Utils.h" +#include "scheduler/SchedInst.h" #include "src/server/Server.h" @@ -753,7 +754,10 @@ ServerError CmdTask::OnExecute() { if (cmd_ == "version") { result_ = MILVUS_VERSION; - } else { + } else if (cmd_ == "tasktable") { + result_ = engine::ResMgrInst::GetInstance()->DumpTaskTables(); + } + else { result_ = "OK"; }