mirror of https://github.com/milvus-io/milvus.git
Merge branch 'caiyd_performance_tune' into 'branch-0.4.0'
Caiyd performance tune See merge request megasearch/milvus!410 Former-commit-id: 645ce910c8bbafcfd46d3b7e0a0232c82da6d34apull/191/head
commit
a597adae90
|
@ -3,36 +3,29 @@
|
||||||
* Unauthorized copying of this file, via any medium is strictly prohibited.
|
* Unauthorized copying of this file, via any medium is strictly prohibited.
|
||||||
* Proprietary and confidential.
|
* Proprietary and confidential.
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
#include "Metrics.h"
|
#include "Metrics.h"
|
||||||
#include "PrometheusMetrics.h"
|
#include "PrometheusMetrics.h"
|
||||||
|
|
||||||
|
|
||||||
namespace zilliz {
|
namespace zilliz {
|
||||||
namespace milvus {
|
namespace milvus {
|
||||||
namespace server {
|
namespace server {
|
||||||
|
|
||||||
MetricsBase &
|
MetricsBase &
|
||||||
Metrics::CreateMetricsCollector(MetricCollectorType collector_type) {
|
Metrics::GetInstance() {
|
||||||
switch (collector_type) {
|
static MetricsBase &instance = CreateMetricsCollector();
|
||||||
case MetricCollectorType::PROMETHEUS:
|
|
||||||
static PrometheusMetrics instance = PrometheusMetrics::GetInstance();
|
|
||||||
return instance;
|
return instance;
|
||||||
default:return MetricsBase::GetInstance();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MetricsBase &
|
MetricsBase &
|
||||||
Metrics::GetInstance() {
|
Metrics::CreateMetricsCollector() {
|
||||||
ConfigNode &config = ServerConfig::GetInstance().GetConfig(CONFIG_METRIC);
|
ConfigNode &config = ServerConfig::GetInstance().GetConfig(CONFIG_METRIC);
|
||||||
std::string collector_typr_str = config.GetValue(CONFIG_METRIC_COLLECTOR);
|
std::string collector_type_str = config.GetValue(CONFIG_METRIC_COLLECTOR);
|
||||||
|
|
||||||
if (collector_typr_str == "prometheus") {
|
if (collector_type_str == "prometheus") {
|
||||||
return CreateMetricsCollector(MetricCollectorType::PROMETHEUS);
|
return PrometheusMetrics::GetInstance();
|
||||||
} else if (collector_typr_str == "zabbix") {
|
|
||||||
return CreateMetricsCollector(MetricCollectorType::ZABBIX);
|
|
||||||
} else {
|
} else {
|
||||||
return CreateMetricsCollector(MetricCollectorType::INVALID);
|
return MetricsBase::GetInstance();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,22 +5,14 @@
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "utils/Error.h"
|
|
||||||
#include <memory>
|
|
||||||
#include <vector>
|
|
||||||
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include "MetricBase.h"
|
#include "MetricBase.h"
|
||||||
//#include "PrometheusMetrics.h"
|
|
||||||
|
|
||||||
namespace zilliz {
|
namespace zilliz {
|
||||||
namespace milvus {
|
namespace milvus {
|
||||||
namespace server {
|
namespace server {
|
||||||
|
|
||||||
#define METRICS_NOW_TIME std::chrono::system_clock::now()
|
#define METRICS_NOW_TIME std::chrono::system_clock::now()
|
||||||
//#define server::Metrics::GetInstance() server::Metrics::GetInstance()
|
|
||||||
#define METRICS_MICROSECONDS(a, b) (std::chrono::duration_cast<std::chrono::microseconds> (b-a)).count();
|
#define METRICS_MICROSECONDS(a, b) (std::chrono::duration_cast<std::chrono::microseconds> (b-a)).count();
|
||||||
|
|
||||||
enum class MetricCollectorType {
|
enum class MetricCollectorType {
|
||||||
|
@ -31,15 +23,13 @@ enum class MetricCollectorType {
|
||||||
|
|
||||||
class Metrics {
|
class Metrics {
|
||||||
public:
|
public:
|
||||||
static MetricsBase &
|
static MetricsBase &GetInstance();
|
||||||
CreateMetricsCollector(MetricCollectorType collector_type);
|
|
||||||
|
|
||||||
static MetricsBase &
|
private:
|
||||||
GetInstance();
|
static MetricsBase &CreateMetricsCollector();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -448,7 +448,6 @@ InsertTask::OnExecute() {
|
||||||
|
|
||||||
// TODO: change to one dimension array in protobuf or use multiple-thread to copy the data
|
// TODO: change to one dimension array in protobuf or use multiple-thread to copy the data
|
||||||
for (size_t i = 0; i < insert_param_.row_record_array_size(); i++) {
|
for (size_t i = 0; i < insert_param_.row_record_array_size(); i++) {
|
||||||
for (size_t j = 0; j < table_info.dimension_; j++) {
|
|
||||||
if (insert_param_.row_record_array(i).vector_data().empty()) {
|
if (insert_param_.row_record_array(i).vector_data().empty()) {
|
||||||
return SetError(SERVER_INVALID_ROWRECORD_ARRAY, "Row record float array is empty");
|
return SetError(SERVER_INVALID_ROWRECORD_ARRAY, "Row record float array is empty");
|
||||||
}
|
}
|
||||||
|
@ -460,8 +459,10 @@ InsertTask::OnExecute() {
|
||||||
std::to_string(table_info.dimension_);
|
std::to_string(table_info.dimension_);
|
||||||
return SetError(error_code, error_msg);
|
return SetError(error_code, error_msg);
|
||||||
}
|
}
|
||||||
vec_f[i * table_info.dimension_ + j] = insert_param_.row_record_array(i).vector_data(j);
|
|
||||||
}
|
memcpy(&vec_f[i * table_info.dimension_],
|
||||||
|
insert_param_.row_record_array(i).vector_data().data(),
|
||||||
|
table_info.dimension_ * sizeof(float));
|
||||||
}
|
}
|
||||||
|
|
||||||
rc.ElapseFromBegin("prepare vectors data");
|
rc.ElapseFromBegin("prepare vectors data");
|
||||||
|
@ -473,8 +474,7 @@ InsertTask::OnExecute() {
|
||||||
vec_ids[i] = insert_param_.row_id_array(i);
|
vec_ids[i] = insert_param_.row_id_array(i);
|
||||||
}
|
}
|
||||||
|
|
||||||
stat = DBWrapper::DB()->InsertVectors(insert_param_.table_name(), vec_count, vec_f.data(),
|
stat = DBWrapper::DB()->InsertVectors(insert_param_.table_name(), vec_count, vec_f.data(), vec_ids);
|
||||||
vec_ids);
|
|
||||||
rc.ElapseFromBegin("add vectors to engine");
|
rc.ElapseFromBegin("add vectors to engine");
|
||||||
if (!stat.ok()) {
|
if (!stat.ok()) {
|
||||||
return SetError(SERVER_CACHE_ERROR, "Cache error: " + stat.ToString());
|
return SetError(SERVER_CACHE_ERROR, "Cache error: " + stat.ToString());
|
||||||
|
|
Loading…
Reference in New Issue