mirror of
https://github.com/ceph/ceph
synced 2025-03-07 16:58:39 +00:00
osd: add num_objects_pinned in object_stat_sum_t
To track the number of objects pinned in a PG. Signed-off-by: Zhiqiang Wang <zhiqiang.wang@intel.com>
This commit is contained in:
parent
f824c937e6
commit
0643845665
@ -3239,6 +3239,8 @@ ReplicatedPG::RepGather *ReplicatedPG::trim_object(const hobject_t &coid)
|
||||
ctx->delta_stats.num_whiteouts--;
|
||||
}
|
||||
ctx->delta_stats.num_object_clones--;
|
||||
if (coi.is_cache_pinned())
|
||||
ctx->delta_stats.num_objects_pinned--;
|
||||
obc->obs.exists = false;
|
||||
|
||||
snapset.clones.erase(p);
|
||||
@ -5087,6 +5089,7 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector<OSDOp>& ops)
|
||||
if (!oi.is_cache_pinned()) {
|
||||
oi.set_flag(object_info_t::FLAG_CACHE_PIN);
|
||||
ctx->modify = true;
|
||||
ctx->delta_stats.num_objects_pinned++;
|
||||
ctx->delta_stats.num_wr++;
|
||||
}
|
||||
result = 0;
|
||||
@ -5105,6 +5108,7 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector<OSDOp>& ops)
|
||||
if (oi.is_cache_pinned()) {
|
||||
oi.clear_flag(object_info_t::FLAG_CACHE_PIN);
|
||||
ctx->modify = true;
|
||||
ctx->delta_stats.num_objects_pinned--;
|
||||
ctx->delta_stats.num_wr++;
|
||||
}
|
||||
result = 0;
|
||||
@ -6093,6 +6097,8 @@ void ReplicatedPG::make_writeable(OpContext *ctx)
|
||||
}
|
||||
if (snap_oi->is_omap())
|
||||
ctx->delta_stats.num_objects_omap++;
|
||||
if (snap_oi->is_cache_pinned())
|
||||
ctx->delta_stats.num_objects_pinned++;
|
||||
ctx->delta_stats.num_object_clones++;
|
||||
ctx->new_snapset.clones.push_back(coid.snap);
|
||||
ctx->new_snapset.clone_size[coid.snap] = ctx->obs->oi.size;
|
||||
@ -8836,6 +8842,8 @@ void ReplicatedPG::add_object_context_to_pg_stat(ObjectContextRef obc, pg_stat_t
|
||||
stat.num_whiteouts++;
|
||||
if (oi.is_omap())
|
||||
stat.num_objects_omap++;
|
||||
if (oi.is_cache_pinned())
|
||||
stat.num_objects_pinned++;
|
||||
|
||||
if (oi.soid.snap && oi.soid.snap != CEPH_NOSNAP && oi.soid.snap != CEPH_SNAPDIR) {
|
||||
stat.num_object_clones++;
|
||||
@ -12172,6 +12180,8 @@ void ReplicatedPG::_scrub(
|
||||
++stat.num_whiteouts;
|
||||
if (oi.is_omap())
|
||||
++stat.num_objects_omap;
|
||||
if (oi.is_cache_pinned())
|
||||
++stat.num_objects_pinned;
|
||||
}
|
||||
|
||||
if (!next_clone.is_min() && next_clone != soid &&
|
||||
@ -12316,6 +12326,7 @@ void ReplicatedPG::_scrub_finish()
|
||||
<< scrub_cstat.sum.num_object_clones << "/" << info.stats.stats.sum.num_object_clones << " clones, "
|
||||
<< scrub_cstat.sum.num_objects_dirty << "/" << info.stats.stats.sum.num_objects_dirty << " dirty, "
|
||||
<< scrub_cstat.sum.num_objects_omap << "/" << info.stats.stats.sum.num_objects_omap << " omap, "
|
||||
<< scrub_cstat.sum.num_objects_pinned << "/" << info.stats.stats.sum.num_objects_pinned << " pinned, "
|
||||
<< scrub_cstat.sum.num_objects_hit_set_archive << "/" << info.stats.stats.sum.num_objects_hit_set_archive << " hit_set_archive, "
|
||||
<< scrub_cstat.sum.num_bytes << "/" << info.stats.stats.sum.num_bytes << " bytes, "
|
||||
<< scrub_cstat.sum.num_bytes_hit_set_archive << "/" << info.stats.stats.sum.num_bytes_hit_set_archive << " hit_set_archive bytes."
|
||||
@ -12327,6 +12338,8 @@ void ReplicatedPG::_scrub_finish()
|
||||
!info.stats.dirty_stats_invalid) ||
|
||||
(scrub_cstat.sum.num_objects_omap != info.stats.stats.sum.num_objects_omap &&
|
||||
!info.stats.omap_stats_invalid) ||
|
||||
(scrub_cstat.sum.num_objects_pinned != info.stats.stats.sum.num_objects_pinned &&
|
||||
!info.stats.pin_stats_invalid) ||
|
||||
(scrub_cstat.sum.num_objects_hit_set_archive != info.stats.stats.sum.num_objects_hit_set_archive &&
|
||||
!info.stats.hitset_stats_invalid) ||
|
||||
(scrub_cstat.sum.num_bytes_hit_set_archive != info.stats.stats.sum.num_bytes_hit_set_archive &&
|
||||
@ -12339,6 +12352,7 @@ void ReplicatedPG::_scrub_finish()
|
||||
<< scrub_cstat.sum.num_object_clones << "/" << info.stats.stats.sum.num_object_clones << " clones, "
|
||||
<< scrub_cstat.sum.num_objects_dirty << "/" << info.stats.stats.sum.num_objects_dirty << " dirty, "
|
||||
<< scrub_cstat.sum.num_objects_omap << "/" << info.stats.stats.sum.num_objects_omap << " omap, "
|
||||
<< scrub_cstat.sum.num_objects_pinned << "/" << info.stats.stats.sum.num_objects_pinned << " pinned, "
|
||||
<< scrub_cstat.sum.num_objects_hit_set_archive << "/" << info.stats.stats.sum.num_objects_hit_set_archive << " hit_set_archive, "
|
||||
<< scrub_cstat.sum.num_whiteouts << "/" << info.stats.stats.sum.num_whiteouts << " whiteouts, "
|
||||
<< scrub_cstat.sum.num_bytes << "/" << info.stats.stats.sum.num_bytes << " bytes, "
|
||||
|
@ -1593,11 +1593,12 @@ void object_stat_sum_t::dump(Formatter *f) const
|
||||
f->dump_int("num_flush_mode_low", num_flush_mode_low);
|
||||
f->dump_int("num_evict_mode_some", num_evict_mode_some);
|
||||
f->dump_int("num_evict_mode_full", num_evict_mode_full);
|
||||
f->dump_int("num_objects_pinned", num_objects_pinned);
|
||||
}
|
||||
|
||||
void object_stat_sum_t::encode(bufferlist& bl) const
|
||||
{
|
||||
ENCODE_START(13, 3, bl);
|
||||
ENCODE_START(14, 3, bl);
|
||||
::encode(num_bytes, bl);
|
||||
::encode(num_objects, bl);
|
||||
::encode(num_object_clones, bl);
|
||||
@ -1630,12 +1631,13 @@ void object_stat_sum_t::encode(bufferlist& bl) const
|
||||
::encode(num_flush_mode_low, bl);
|
||||
::encode(num_evict_mode_some, bl);
|
||||
::encode(num_evict_mode_full, bl);
|
||||
::encode(num_objects_pinned, bl);
|
||||
ENCODE_FINISH(bl);
|
||||
}
|
||||
|
||||
void object_stat_sum_t::decode(bufferlist::iterator& bl)
|
||||
{
|
||||
DECODE_START_LEGACY_COMPAT_LEN(13, 3, 3, bl);
|
||||
DECODE_START_LEGACY_COMPAT_LEN(14, 3, 3, bl);
|
||||
::decode(num_bytes, bl);
|
||||
if (struct_v < 3) {
|
||||
uint64_t num_kb;
|
||||
@ -1723,6 +1725,11 @@ void object_stat_sum_t::decode(bufferlist::iterator& bl)
|
||||
num_evict_mode_some = 0;
|
||||
num_evict_mode_full = 0;
|
||||
}
|
||||
if (struct_v >= 14) {
|
||||
::decode(num_objects_pinned, bl);
|
||||
} else {
|
||||
num_objects_pinned = 0;
|
||||
}
|
||||
DECODE_FINISH(bl);
|
||||
}
|
||||
|
||||
@ -1759,6 +1766,7 @@ void object_stat_sum_t::generate_test_instances(list<object_stat_sum_t*>& o)
|
||||
a.num_flush_mode_low = 1;
|
||||
a.num_evict_mode_some = 1;
|
||||
a.num_evict_mode_full = 0;
|
||||
a.num_objects_pinned = 20;
|
||||
o.push_back(new object_stat_sum_t(a));
|
||||
}
|
||||
|
||||
@ -1796,6 +1804,7 @@ void object_stat_sum_t::add(const object_stat_sum_t& o)
|
||||
num_flush_mode_low += o.num_flush_mode_low;
|
||||
num_evict_mode_some += o.num_evict_mode_some;
|
||||
num_evict_mode_full += o.num_evict_mode_full;
|
||||
num_objects_pinned += o.num_objects_pinned;
|
||||
}
|
||||
|
||||
void object_stat_sum_t::sub(const object_stat_sum_t& o)
|
||||
@ -1832,6 +1841,7 @@ void object_stat_sum_t::sub(const object_stat_sum_t& o)
|
||||
num_flush_mode_low -= o.num_flush_mode_low;
|
||||
num_evict_mode_some -= o.num_evict_mode_some;
|
||||
num_evict_mode_full -= o.num_evict_mode_full;
|
||||
num_objects_pinned -= o.num_objects_pinned;
|
||||
}
|
||||
|
||||
bool operator==(const object_stat_sum_t& l, const object_stat_sum_t& r)
|
||||
@ -1868,7 +1878,8 @@ bool operator==(const object_stat_sum_t& l, const object_stat_sum_t& r)
|
||||
l.num_flush_mode_high == r.num_flush_mode_high &&
|
||||
l.num_flush_mode_low == r.num_flush_mode_low &&
|
||||
l.num_evict_mode_some == r.num_evict_mode_some &&
|
||||
l.num_evict_mode_full == r.num_evict_mode_full;
|
||||
l.num_evict_mode_full == r.num_evict_mode_full &&
|
||||
l.num_objects_pinned == r.num_objects_pinned;
|
||||
}
|
||||
|
||||
// -- object_stat_collection_t --
|
||||
@ -1995,7 +2006,7 @@ void pg_stat_t::dump_brief(Formatter *f) const
|
||||
|
||||
void pg_stat_t::encode(bufferlist &bl) const
|
||||
{
|
||||
ENCODE_START(21, 8, bl);
|
||||
ENCODE_START(22, 8, bl);
|
||||
::encode(version, bl);
|
||||
::encode(reported_seq, bl);
|
||||
::encode(reported_epoch, bl);
|
||||
@ -2035,12 +2046,13 @@ void pg_stat_t::encode(bufferlist &bl) const
|
||||
::encode(hitset_bytes_stats_invalid, bl);
|
||||
::encode(last_peered, bl);
|
||||
::encode(last_became_peered, bl);
|
||||
::encode(pin_stats_invalid, bl);
|
||||
ENCODE_FINISH(bl);
|
||||
}
|
||||
|
||||
void pg_stat_t::decode(bufferlist::iterator &bl)
|
||||
{
|
||||
DECODE_START_LEGACY_COMPAT_LEN(20, 8, 8, bl);
|
||||
DECODE_START_LEGACY_COMPAT_LEN(22, 8, 8, bl);
|
||||
::decode(version, bl);
|
||||
::decode(reported_seq, bl);
|
||||
::decode(reported_epoch, bl);
|
||||
@ -2174,6 +2186,13 @@ void pg_stat_t::decode(bufferlist::iterator &bl)
|
||||
last_peered = last_active;
|
||||
last_became_peered = last_became_active;
|
||||
}
|
||||
if (struct_v >= 22) {
|
||||
::decode(pin_stats_invalid, bl);
|
||||
} else {
|
||||
// if we are decoding an old encoding of this object, then the
|
||||
// encoder may not have supported num_objects_pinned accounting.
|
||||
pin_stats_invalid = true;
|
||||
}
|
||||
DECODE_FINISH(bl);
|
||||
}
|
||||
|
||||
@ -2264,7 +2283,8 @@ bool operator==(const pg_stat_t& l, const pg_stat_t& r)
|
||||
l.hitset_stats_invalid == r.hitset_stats_invalid &&
|
||||
l.hitset_bytes_stats_invalid == r.hitset_bytes_stats_invalid &&
|
||||
l.up_primary == r.up_primary &&
|
||||
l.acting_primary == r.acting_primary;
|
||||
l.acting_primary == r.acting_primary &&
|
||||
l.pin_stats_invalid == r.pin_stats_invalid;
|
||||
}
|
||||
|
||||
// -- pool_stat_t --
|
||||
|
@ -1358,6 +1358,7 @@ struct object_stat_sum_t {
|
||||
int32_t num_flush_mode_low; // 1 when in low flush mode, otherwise 0
|
||||
int32_t num_evict_mode_some; // 1 when in evict some mode, otherwise 0
|
||||
int32_t num_evict_mode_full; // 1 when in evict full mode, otherwise 0
|
||||
int64_t num_objects_pinned;
|
||||
|
||||
object_stat_sum_t()
|
||||
: num_bytes(0),
|
||||
@ -1382,7 +1383,8 @@ struct object_stat_sum_t {
|
||||
num_evict_kb(0),
|
||||
num_promote(0),
|
||||
num_flush_mode_high(0), num_flush_mode_low(0),
|
||||
num_evict_mode_some(0), num_evict_mode_full(0)
|
||||
num_evict_mode_some(0), num_evict_mode_full(0),
|
||||
num_objects_pinned(0)
|
||||
{}
|
||||
|
||||
void floor(int64_t f) {
|
||||
@ -1419,6 +1421,7 @@ struct object_stat_sum_t {
|
||||
FLOOR(num_flush_mode_low);
|
||||
FLOOR(num_evict_mode_some);
|
||||
FLOOR(num_evict_mode_full);
|
||||
FLOOR(num_objects_pinned);
|
||||
#undef FLOOR
|
||||
}
|
||||
|
||||
@ -1463,6 +1466,7 @@ struct object_stat_sum_t {
|
||||
SPLIT(num_flush_mode_low);
|
||||
SPLIT(num_evict_mode_some);
|
||||
SPLIT(num_evict_mode_full);
|
||||
SPLIT(num_objects_pinned);
|
||||
#undef SPLIT
|
||||
}
|
||||
|
||||
@ -1596,6 +1600,7 @@ struct pg_stat_t {
|
||||
bool omap_stats_invalid;
|
||||
bool hitset_stats_invalid;
|
||||
bool hitset_bytes_stats_invalid;
|
||||
bool pin_stats_invalid;
|
||||
|
||||
/// up, acting primaries
|
||||
int32_t up_primary;
|
||||
@ -1614,6 +1619,7 @@ struct pg_stat_t {
|
||||
omap_stats_invalid(false),
|
||||
hitset_stats_invalid(false),
|
||||
hitset_bytes_stats_invalid(false),
|
||||
pin_stats_invalid(false),
|
||||
up_primary(-1),
|
||||
acting_primary(-1)
|
||||
{ }
|
||||
|
Loading…
Reference in New Issue
Block a user