recall_caps_throttle(g_conf().get_val<double>("mds_recall_max_decay_rate")),
recall_caps_throttle2o(0.5),
session_cache_liveness(g_conf().get_val<double>("mds_session_cache_liveness_decay_rate")),
+ cap_acquisition(g_conf().get_val<double>("mds_session_cap_acquisition_decay_rate")),
birth_time(clock::now())
{
set_connection(std::move(con));
}
}
- void dump(Formatter *f) const;
+ void dump(Formatter *f, bool cap_dump=false) const;
void push_pv(version_t pv)
{
ceph_assert(projected.empty() || projected.back() != pv);
auto get_session_cache_liveness() const {
return session_cache_liveness.get();
}
+ auto get_cap_acquisition() const {
+ return cap_acquisition.get();
+ }
inodeno_t take_ino(inodeno_t ino = 0) {
if (ino) {
}
}
+ void touch_readdir_cap(uint32_t count) {
+ cap_acquisition.hit(count);
+ }
+
void touch_cap(Capability *cap) {
session_cache_liveness.hit(1.0);
caps.push_front(&cap->item_session_caps);
// session caps liveness
DecayCounter session_cache_liveness;
+ // cap acquisition via readdir
+ DecayCounter cap_acquisition;
+
// session start time -- used to track average session time
// note that this is initialized in the constructor rather
// than at the time of adding a session to the sessionmap