-
Notifications
You must be signed in to change notification settings - Fork 54
Expand file tree
/
Copy pathcache_reclaim_strategy.h
More file actions
94 lines (81 loc) · 3.68 KB
/
Copy pathcache_reclaim_strategy.h
File metadata and controls
94 lines (81 loc) · 3.68 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#pragma once
#include <cstdint>
#include <map>
#include <memory>
#include <string>
#include <vector>
#include "kv_cache_manager/common/jsonizable.h"
#include "kv_cache_manager/config/trigger_strategy.h"
namespace kv_cache_manager {
enum class ReclaimPolicy {
POLICY_UNSPECIFIED = 0,
POLICY_LRU = 1,
POLICY_LFU = 2,
POLICY_TTL = 3,
};
/**
* Cache整理策略相关的配置,包括淘汰策略
*/
class CacheReclaimStrategy : public Jsonizable {
public:
CacheReclaimStrategy() = default;
CacheReclaimStrategy(const std::string &storage_unique_name,
ReclaimPolicy reclaim_policy,
const TriggerStrategy &trigger_strategy,
int32_t trigger_period_seconds,
int32_t reclaim_step_size,
int32_t reclaim_step_percentage,
int32_t delay_before_delete_ms = 0,
bool enable_instance_fairness = true)
: storage_unique_name_(storage_unique_name)
, reclaim_policy_(reclaim_policy)
, trigger_strategy_(trigger_strategy)
, trigger_period_seconds_(trigger_period_seconds)
, reclaim_step_size_(reclaim_step_size)
, reclaim_step_percentage_(reclaim_step_percentage)
, delay_before_delete_ms_(delay_before_delete_ms)
, enable_instance_fairness_(enable_instance_fairness) {}
~CacheReclaimStrategy() override;
const std::string GetAlgorithm() const { return "LRU"; }
void GetTTL() {}
// Getters
const std::string &storage_unique_name() const { return storage_unique_name_; }
ReclaimPolicy reclaim_policy() const { return reclaim_policy_; }
const TriggerStrategy &trigger_strategy() const { return trigger_strategy_; }
int32_t trigger_period_seconds() const { return trigger_period_seconds_; }
int32_t reclaim_step_size() const { return reclaim_step_size_; }
int32_t reclaim_step_percentage() const { return reclaim_step_percentage_; }
int32_t delay_before_delete_ms() const { return delay_before_delete_ms_; }
bool enable_instance_fairness() const { return enable_instance_fairness_; }
// Setters
void set_storage_unique_name(const std::string &storage_unique_name) { storage_unique_name_ = storage_unique_name; }
void set_reclaim_policy(ReclaimPolicy reclaim_policy) { reclaim_policy_ = reclaim_policy; }
void set_trigger_strategy(const TriggerStrategy &trigger_strategy) { trigger_strategy_ = trigger_strategy; }
void set_trigger_period_seconds(int32_t trigger_period_seconds) {
trigger_period_seconds_ = trigger_period_seconds;
}
void set_reclaim_step_size(int32_t reclaim_step_size) { reclaim_step_size_ = reclaim_step_size; }
void set_reclaim_step_percentage(int32_t reclaim_step_percentage) {
reclaim_step_percentage_ = reclaim_step_percentage;
}
void set_delay_before_delete_ms(int32_t delay_before_delete_ms) {
delay_before_delete_ms_ = delay_before_delete_ms;
}
void set_enable_instance_fairness(bool enable_instance_fairness) {
enable_instance_fairness_ = enable_instance_fairness;
}
public:
bool FromRapidValue(const rapidjson::Value &rapid_value) override;
void ToRapidWriter(rapidjson::Writer<rapidjson::StringBuffer> &writer) const noexcept override;
bool ValidateRequiredFields(std::string &invalid_fields) const;
private:
std::string storage_unique_name_;
ReclaimPolicy reclaim_policy_;
TriggerStrategy trigger_strategy_;
int32_t trigger_period_seconds_;
int32_t reclaim_step_size_;
int32_t reclaim_step_percentage_;
int32_t delay_before_delete_ms_;
bool enable_instance_fairness_{true};
};
} // namespace kv_cache_manager