From 63c4777924d64d1d37524285bf46880488c929a5 Mon Sep 17 00:00:00 2001 From: Yu Kun Date: Mon, 2 Sep 2019 17:39:45 +0800 Subject: [PATCH 1/3] add PushTaskToNeighbourRandomlyTest Former-commit-id: e0617c1042a30dddd73838e0d87524a4eaff1293 --- cpp/unittest/scheduler/scheduler_test.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/cpp/unittest/scheduler/scheduler_test.cpp b/cpp/unittest/scheduler/scheduler_test.cpp index e05d31e3e0..b7d2ba3be3 100644 --- a/cpp/unittest/scheduler/scheduler_test.cpp +++ b/cpp/unittest/scheduler/scheduler_test.cpp @@ -153,6 +153,26 @@ TEST_F(SchedulerTest, OnCopyCompleted) { sleep(3); ASSERT_EQ(res_mgr_->GetResource(ResourceType::GPU, 1)->task_table().Size(), NUM); + +} + +TEST_F(SchedulerTest, PushTaskToNeighbourRandomlyTest) { + const uint64_t NUM = 10; + std::vector> tasks; + TableFileSchemaPtr dummy1 = std::make_shared(); + dummy1->location_ = "location"; + + tasks.clear(); + + for (uint64_t i = 0; i < NUM; ++i) { + auto task = std::make_shared(dummy1); + task->label() = std::make_shared(); + tasks.push_back(task); + cpu_resource_.lock()->task_table().Put(task); + } + + sleep(3); +// ASSERT_EQ(res_mgr_->GetResource(ResourceType::GPU, 1)->task_table().Size(), NUM); } class SchedulerTest2 : public testing::Test { From abb1979f0cf09980f14b8b129bbc3740a9ed5ed0 Mon Sep 17 00:00:00 2001 From: Yu Kun Date: Mon, 2 Sep 2019 19:23:20 +0800 Subject: [PATCH 2/3] change gpu_id type in config Former-commit-id: 794d6af83b269a1cca1850cb7efd53387509113a --- cpp/conf/server_config.template | 4 +++- cpp/src/cache/GpuCacheMgr.cpp | 11 ++++------- cpp/src/metrics/PrometheusMetrics.cpp | 10 +++------- cpp/src/server/ServerConfig.h | 6 +++--- 4 files changed, 13 insertions(+), 18 deletions(-) diff --git a/cpp/conf/server_config.template b/cpp/conf/server_config.template index 218dceed7a..777b8dedb6 100644 --- a/cpp/conf/server_config.template +++ b/cpp/conf/server_config.template @@ -33,7 +33,9 @@ cache_config: insert_cache_immediately: false # insert data will be load into cache immediately for hot query gpu_cache_capacity: 5 # how many memory are used as cache in gpu, unit: GB, RANGE: 0 ~ less than total memory gpu_cache_free_percent: 0.85 # old data will be erased from cache when cache is full, this value specify how much memory should be kept, range: greater than zero ~ 1.0 - gpu_ids: 0,1 # gpu id + gpu_ids: # gpu id + - 0 + - 1 engine_config: use_blas_threshold: 20 diff --git a/cpp/src/cache/GpuCacheMgr.cpp b/cpp/src/cache/GpuCacheMgr.cpp index 4aa5626348..ef2f307c30 100644 --- a/cpp/src/cache/GpuCacheMgr.cpp +++ b/cpp/src/cache/GpuCacheMgr.cpp @@ -21,17 +21,14 @@ namespace { std::vector load() { server::ConfigNode& config = server::ServerConfig::GetInstance().GetConfig(server::CONFIG_CACHE); - std::string gpu_ids_str = config.GetValue(server::CONFIG_GPU_IDS, "0,1"); + auto conf_gpu_ids = config.GetSequence(server::CONFIG_GPU_IDS); std::vector gpu_ids; - std::stringstream ss(gpu_ids_str); - for (int i; ss >> i;) { - gpu_ids.push_back(i); - if (ss.peek() == ',') { - ss.ignore(); - } + for (auto gpu_id : conf_gpu_ids) { + gpu_ids.push_back(std::atoi(gpu_id.c_str())); } + return gpu_ids; } } diff --git a/cpp/src/metrics/PrometheusMetrics.cpp b/cpp/src/metrics/PrometheusMetrics.cpp index 08f1fe7dc2..5f98acfc84 100644 --- a/cpp/src/metrics/PrometheusMetrics.cpp +++ b/cpp/src/metrics/PrometheusMetrics.cpp @@ -170,16 +170,12 @@ void PrometheusMetrics::CPUTemperature() { void PrometheusMetrics::GpuCacheUsageGaugeSet() { if(!startup_) return; server::ConfigNode& config = server::ServerConfig::GetInstance().GetConfig(server::CONFIG_CACHE); - std::string gpu_ids_str = config.GetValue(server::CONFIG_GPU_IDS, "0,1"); + auto conf_gpu_ids = config.GetSequence(server::CONFIG_GPU_IDS); std::vector gpu_ids; - std::stringstream ss(gpu_ids_str); - for (int i; ss >> i;) { - gpu_ids.push_back(i); - if (ss.peek() == ',') { - ss.ignore(); - } + for (auto gpu_id : conf_gpu_ids) { + gpu_ids.push_back(std::atoi(gpu_id.c_str())); } for(auto i = 0; i < gpu_ids.size(); ++i) { diff --git a/cpp/src/server/ServerConfig.h b/cpp/src/server/ServerConfig.h index 4b4a80e8da..96d06ff550 100644 --- a/cpp/src/server/ServerConfig.h +++ b/cpp/src/server/ServerConfig.h @@ -45,9 +45,9 @@ static const char* CONFIG_METRIC_COLLECTOR = "collector"; static const char* CONFIG_PROMETHEUS = "prometheus_config"; static const char* CONFIG_METRIC_PROMETHEUS_PORT = "port"; -static const std::string CONFIG_ENGINE = "engine_config"; -static const std::string CONFIG_DCBT = "use_blas_threshold"; -static const std::string CONFIG_OMP_THREAD_NUM = "omp_thread_num"; +static const char* CONFIG_ENGINE = "engine_config"; +static const char* CONFIG_DCBT = "use_blas_threshold"; +static const char* CONFIG_OMP_THREAD_NUM = "omp_thread_num"; static const char* CONFIG_RESOURCE = "resource_config"; static const char* CONFIG_RESOURCES = "resources"; From 5857d8163e69c8eeba33bc52103f9b42f1b468dc Mon Sep 17 00:00:00 2001 From: Yu Kun Date: Mon, 2 Sep 2019 20:28:01 +0800 Subject: [PATCH 3/3] MS-462 Run milvus server twices, should display error Former-commit-id: 5d9e7b62470cf48ba84d7be358b0f277268fa831 --- cpp/CHANGELOG.md | 1 + cpp/src/server/grpc_impl/GrpcMilvusServer.cpp | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/cpp/CHANGELOG.md b/cpp/CHANGELOG.md index d0d353cfa7..44433682d1 100644 --- a/cpp/CHANGELOG.md +++ b/cpp/CHANGELOG.md @@ -19,6 +19,7 @@ Please mark all change in change log and use the ticket from JIRA. - MS-436 - Delete vectors failed if index created with index_type: IVF_FLAT/IVF_SQ8 - MS-450 - server hang after run stop_server.sh - MS-449 - Add vectors twice success, once with ids, the other no ids +- MS-462 - Run milvus server twices, should display error ## Improvement - MS-327 - Clean code for milvus diff --git a/cpp/src/server/grpc_impl/GrpcMilvusServer.cpp b/cpp/src/server/grpc_impl/GrpcMilvusServer.cpp index 737f3dab95..935f53b8a8 100644 --- a/cpp/src/server/grpc_impl/GrpcMilvusServer.cpp +++ b/cpp/src/server/grpc_impl/GrpcMilvusServer.cpp @@ -34,6 +34,17 @@ static std::unique_ptr<::grpc::Server> server; constexpr long MESSAGE_SIZE = -1; +class NoReusePortOption : public ::grpc::ServerBuilderOption { + public: + void UpdateArguments(::grpc::ChannelArguments* args) override { + args->SetInt(GRPC_ARG_ALLOW_REUSEPORT, 0); + } + + void UpdatePlugins(std::vector>* + plugins) override {} +}; + + void GrpcMilvusServer::StartService() { if (server != nullptr) { @@ -52,6 +63,7 @@ GrpcMilvusServer::StartService() { std::string server_address(address + ":" + std::to_string(port)); ::grpc::ServerBuilder builder; + builder.SetOption(std::unique_ptr<::grpc::ServerBuilderOption>(new NoReusePortOption)); builder.SetMaxReceiveMessageSize(MESSAGE_SIZE); //default 4 * 1024 * 1024 builder.SetMaxSendMessageSize(MESSAGE_SIZE);