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.
|
||||
* Proprietary and confidential.
|
||||
******************************************************************************/
|
||||
|
||||
|
||||
#include "Metrics.h"
|
||||
#include "PrometheusMetrics.h"
|
||||
|
||||
|
||||
namespace zilliz {
|
||||
namespace milvus {
|
||||
namespace server {
|
||||
|
||||
MetricsBase &
|
||||
Metrics::CreateMetricsCollector(MetricCollectorType collector_type) {
|
||||
switch (collector_type) {
|
||||
case MetricCollectorType::PROMETHEUS:
|
||||
static PrometheusMetrics instance = PrometheusMetrics::GetInstance();
|
||||
return instance;
|
||||
default:return MetricsBase::GetInstance();
|
||||
}
|
||||
Metrics::GetInstance() {
|
||||
static MetricsBase &instance = CreateMetricsCollector();
|
||||
return instance;
|
||||
}
|
||||
|
||||
MetricsBase &
|
||||
Metrics::GetInstance() {
|
||||
Metrics::CreateMetricsCollector() {
|
||||
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") {
|
||||
return CreateMetricsCollector(MetricCollectorType::PROMETHEUS);
|
||||
} else if (collector_typr_str == "zabbix") {
|
||||
return CreateMetricsCollector(MetricCollectorType::ZABBIX);
|
||||
if (collector_type_str == "prometheus") {
|
||||
return PrometheusMetrics::GetInstance();
|
||||
} else {
|
||||
return CreateMetricsCollector(MetricCollectorType::INVALID);
|
||||
return MetricsBase::GetInstance();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -5,22 +5,14 @@
|
|||
******************************************************************************/
|
||||
#pragma once
|
||||
|
||||
#include "utils/Error.h"
|
||||
#include <memory>
|
||||
#include <vector>
|
||||
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "MetricBase.h"
|
||||
//#include "PrometheusMetrics.h"
|
||||
|
||||
|
||||
namespace zilliz {
|
||||
namespace milvus {
|
||||
namespace server {
|
||||
|
||||
#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();
|
||||
|
||||
enum class MetricCollectorType {
|
||||
|
@ -31,15 +23,13 @@ enum class MetricCollectorType {
|
|||
|
||||
class Metrics {
|
||||
public:
|
||||
static MetricsBase &
|
||||
CreateMetricsCollector(MetricCollectorType collector_type);
|
||||
static MetricsBase &GetInstance();
|
||||
|
||||
static MetricsBase &
|
||||
GetInstance();
|
||||
private:
|
||||
static MetricsBase &CreateMetricsCollector();
|
||||
};
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -448,20 +448,21 @@ InsertTask::OnExecute() {
|
|||
|
||||
// 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 j = 0; j < table_info.dimension_; j++) {
|
||||
if (insert_param_.row_record_array(i).vector_data().empty()) {
|
||||
return SetError(SERVER_INVALID_ROWRECORD_ARRAY, "Row record float array is empty");
|
||||
}
|
||||
uint64_t vec_dim = insert_param_.row_record_array(i).vector_data().size();
|
||||
if (vec_dim != table_info.dimension_) {
|
||||
ServerError error_code = SERVER_INVALID_VECTOR_DIMENSION;
|
||||
std::string error_msg = "Invalid rowrecord dimension: " + std::to_string(vec_dim)
|
||||
+ " vs. table dimension:" +
|
||||
std::to_string(table_info.dimension_);
|
||||
return SetError(error_code, error_msg);
|
||||
}
|
||||
vec_f[i * table_info.dimension_ + j] = insert_param_.row_record_array(i).vector_data(j);
|
||||
if (insert_param_.row_record_array(i).vector_data().empty()) {
|
||||
return SetError(SERVER_INVALID_ROWRECORD_ARRAY, "Row record float array is empty");
|
||||
}
|
||||
uint64_t vec_dim = insert_param_.row_record_array(i).vector_data().size();
|
||||
if (vec_dim != table_info.dimension_) {
|
||||
ServerError error_code = SERVER_INVALID_VECTOR_DIMENSION;
|
||||
std::string error_msg = "Invalid rowrecord dimension: " + std::to_string(vec_dim)
|
||||
+ " vs. table dimension:" +
|
||||
std::to_string(table_info.dimension_);
|
||||
return SetError(error_code, error_msg);
|
||||
}
|
||||
|
||||
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");
|
||||
|
@ -473,8 +474,7 @@ InsertTask::OnExecute() {
|
|||
vec_ids[i] = insert_param_.row_id_array(i);
|
||||
}
|
||||
|
||||
stat = DBWrapper::DB()->InsertVectors(insert_param_.table_name(), vec_count, vec_f.data(),
|
||||
vec_ids);
|
||||
stat = DBWrapper::DB()->InsertVectors(insert_param_.table_name(), vec_count, vec_f.data(), vec_ids);
|
||||
rc.ElapseFromBegin("add vectors to engine");
|
||||
if (!stat.ok()) {
|
||||
return SetError(SERVER_CACHE_ERROR, "Cache error: " + stat.ToString());
|
||||
|
|
Loading…
Reference in New Issue