CpuCacheMgr.cpp 1.4 KB
Newer Older
G
groot 已提交
1 2 3 4 5 6 7 8
////////////////////////////////////////////////////////////////////////////////
// Copyright 上海赜睿信息科技有限公司(Zilliz) - All Rights Reserved
// Unauthorized copying of this file, via any medium is strictly prohibited.
// Proprietary and confidential.
////////////////////////////////////////////////////////////////////////////////

#include "CpuCacheMgr.h"
#include "server/ServerConfig.h"
S
starlord 已提交
9
#include "utils/Log.h"
G
groot 已提交
10 11

namespace zilliz {
J
jinhai 已提交
12
namespace milvus {
G
groot 已提交
13 14
namespace cache {

J
jinhai 已提交
15 16 17 18
namespace {
    constexpr int64_t unit = 1024 * 1024 * 1024;
}

G
groot 已提交
19 20 21
CpuCacheMgr::CpuCacheMgr() {
    server::ConfigNode& config = server::ServerConfig::GetInstance().GetConfig(server::CONFIG_CACHE);
    int64_t cap = config.GetInt64Value(server::CONFIG_CPU_CACHE_CAPACITY, 16);
J
jinhai 已提交
22
    cap *= unit;
S
starlord 已提交
23
    cache_ = std::make_shared<Cache<DataObjPtr>>(cap, 1UL<<32);
S
starlord 已提交
24 25 26 27 28 29 30 31

    double free_percent = config.GetDoubleValue(server::CACHE_FREE_PERCENT, 0.85);
    if(free_percent > 0.0 && free_percent <= 1.0) {
        cache_->set_freemem_percent(free_percent);
    } else {
        SERVER_LOG_ERROR << "Invalid cache_free_percent: " << free_percent <<
         ", defaultly set to " << cache_->freemem_percent();
    }
G
groot 已提交
32 33
}

S
starlord 已提交
34 35 36 37 38 39 40 41 42 43 44 45 46 47
CpuCacheMgr* CpuCacheMgr::GetInstance() {
    static CpuCacheMgr s_mgr;
    return &s_mgr;
}

engine::VecIndexPtr CpuCacheMgr::GetIndex(const std::string& key) {
    DataObjPtr obj = GetItem(key);
    if(obj != nullptr) {
        return obj->data();
    }

    return nullptr;
}

G
groot 已提交
48 49 50
}
}
}