From: Sage Weil Date: Wed, 13 Aug 2014 13:37:55 +0000 (-0700) Subject: osd/osd_types: add num_bytes_hit_set_archive to stats X-Git-Tag: v0.86~99^2~4 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=9edd65519c9041e4a4cc6284e36a6097585eeb23;p=ceph.git osd/osd_types: add num_bytes_hit_set_archive to stats The tiering agent's life is easier/better if it knows how many bytes these objects consume (instead of making a conservative guess). Signed-off-by: Sage Weil --- diff --git a/src/osd/osd_types.cc b/src/osd/osd_types.cc index 27f6e26c00ec..7a86236f8146 100644 --- a/src/osd/osd_types.cc +++ b/src/osd/osd_types.cc @@ -1397,11 +1397,12 @@ void object_stat_sum_t::dump(Formatter *f) const f->dump_int("num_keys_recovered", num_keys_recovered); f->dump_int("num_objects_omap", num_objects_omap); f->dump_int("num_objects_hit_set_archive", num_objects_hit_set_archive); + f->dump_int("num_bytes_hit_set_archive", num_bytes_hit_set_archive); } void object_stat_sum_t::encode(bufferlist& bl) const { - ENCODE_START(10, 3, bl); + ENCODE_START(11, 3, bl); ::encode(num_bytes, bl); ::encode(num_objects, bl); ::encode(num_object_clones, bl); @@ -1424,12 +1425,13 @@ void object_stat_sum_t::encode(bufferlist& bl) const ::encode(num_objects_omap, bl); ::encode(num_objects_hit_set_archive, bl); ::encode(num_objects_misplaced, bl); + ::encode(num_bytes_hit_set_archive, bl); ENCODE_FINISH(bl); } void object_stat_sum_t::decode(bufferlist::iterator& bl) { - DECODE_START_LEGACY_COMPAT_LEN(10, 3, 3, bl); + DECODE_START_LEGACY_COMPAT_LEN(11, 3, 3, bl); ::decode(num_bytes, bl); if (struct_v < 3) { uint64_t num_kb; @@ -1488,13 +1490,17 @@ void object_stat_sum_t::decode(bufferlist::iterator& bl) } else { num_objects_misplaced = 0; } + if (struct_v >= 11) { + ::decode(num_bytes_hit_set_archive, bl); + } else { + num_bytes_hit_set_archive = 0; + } DECODE_FINISH(bl); } void object_stat_sum_t::generate_test_instances(list& o) { object_stat_sum_t a; - o.push_back(new object_stat_sum_t(a)); a.num_bytes = 1; a.num_objects = 3; @@ -1514,6 +1520,8 @@ void object_stat_sum_t::generate_test_instances(list& o) a.num_objects_dirty = 21; a.num_whiteouts = 22; a.num_objects_misplaced = 1232; + a.num_objects_hit_set_archive = 2; + a.num_bytes_hit_set_archive = 27; o.push_back(new object_stat_sum_t(a)); } @@ -1541,6 +1549,7 @@ void object_stat_sum_t::add(const object_stat_sum_t& o) num_whiteouts += o.num_whiteouts; num_objects_omap += o.num_objects_omap; num_objects_hit_set_archive += o.num_objects_hit_set_archive; + num_bytes_hit_set_archive += o.num_bytes_hit_set_archive; } void object_stat_sum_t::sub(const object_stat_sum_t& o) @@ -1567,6 +1576,7 @@ void object_stat_sum_t::sub(const object_stat_sum_t& o) num_whiteouts -= o.num_whiteouts; num_objects_omap -= o.num_objects_omap; num_objects_hit_set_archive -= o.num_objects_hit_set_archive; + num_bytes_hit_set_archive -= o.num_bytes_hit_set_archive; } @@ -1683,7 +1693,7 @@ void pg_stat_t::dump_brief(Formatter *f) const void pg_stat_t::encode(bufferlist &bl) const { - ENCODE_START(19, 8, bl); + ENCODE_START(20, 8, bl); ::encode(version, bl); ::encode(reported_seq, bl); ::encode(reported_epoch, bl); @@ -1720,12 +1730,13 @@ void pg_stat_t::encode(bufferlist &bl) const ::encode(blocked_by, bl); ::encode(last_undegraded, bl); ::encode(last_fullsized, bl); + ::encode(hitset_bytes_stats_invalid, bl); ENCODE_FINISH(bl); } void pg_stat_t::decode(bufferlist::iterator &bl) { - DECODE_START_LEGACY_COMPAT_LEN(19, 8, 8, bl); + DECODE_START_LEGACY_COMPAT_LEN(20, 8, 8, bl); ::decode(version, bl); ::decode(reported_seq, bl); ::decode(reported_epoch, bl); @@ -1845,6 +1856,13 @@ void pg_stat_t::decode(bufferlist::iterator &bl) last_undegraded = utime_t(); last_fullsized = utime_t(); } + if (struct_v >= 20) { + ::decode(hitset_bytes_stats_invalid, bl); + } else { + // if we are decoding an old encoding of this object, then the + // encoder may not have supported num_bytes_hit_set_archive accounting. + hitset_bytes_stats_invalid = true; + } DECODE_FINISH(bl); } diff --git a/src/osd/osd_types.h b/src/osd/osd_types.h index 4368998a1edd..34c789267bf0 100644 --- a/src/osd/osd_types.h +++ b/src/osd/osd_types.h @@ -1180,6 +1180,7 @@ struct object_stat_sum_t { int64_t num_whiteouts; int64_t num_objects_omap; int64_t num_objects_hit_set_archive; + int64_t num_bytes_hit_set_archive; object_stat_sum_t() : num_bytes(0), @@ -1196,7 +1197,8 @@ struct object_stat_sum_t { num_objects_dirty(0), num_whiteouts(0), num_objects_omap(0), - num_objects_hit_set_archive(0) + num_objects_hit_set_archive(0), + num_bytes_hit_set_archive(0) {} void floor(int64_t f) { @@ -1223,6 +1225,7 @@ struct object_stat_sum_t { FLOOR(num_whiteouts); FLOOR(num_objects_omap); FLOOR(num_objects_hit_set_archive); + FLOOR(num_bytes_hit_set_archive); #undef FLOOR } @@ -1257,6 +1260,7 @@ struct object_stat_sum_t { SPLIT(num_whiteouts); SPLIT(num_objects_omap); SPLIT(num_objects_hit_set_archive); + SPLIT(num_bytes_hit_set_archive); #undef SPLIT } @@ -1393,6 +1397,7 @@ struct pg_stat_t { bool dirty_stats_invalid; bool omap_stats_invalid; bool hitset_stats_invalid; + bool hitset_bytes_stats_invalid; /// up, acting primaries int32_t up_primary; @@ -1410,6 +1415,7 @@ struct pg_stat_t { dirty_stats_invalid(false), omap_stats_invalid(false), hitset_stats_invalid(false), + hitset_bytes_stats_invalid(false), up_primary(-1), acting_primary(-1) { }