From: David Zafman Date: Sat, 27 Apr 2013 01:05:18 +0000 (-0700) Subject: osd: read kb stats not tracked? X-Git-Tag: v0.61~34^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=adb7c8a0608659e339836b3f769d96a19841b6fb;p=ceph.git osd: read kb stats not tracked? In read cases track stats in PG::unstable_stats Include unstable_stats in write_info() and publish_stats_to_osd() For now this information may not get persisted fixes: #2209 Signed-off-by: David Zafman --- diff --git a/src/osd/PG.cc b/src/osd/PG.cc index 3ddbe93d51df..ae88be652daa 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -2341,6 +2341,7 @@ void PG::publish_stats_to_osd() pg_stats_publish_valid = true; pg_stats_publish = info.stats; + pg_stats_publish.stats.add(unstable_stats); // calc copies, degraded unsigned target = MAX(get_osdmap()->get_pg_size(info.pgid), acting.size()); @@ -2620,6 +2621,9 @@ int PG::_write_info(ObjectStore::Transaction& t, epoch_t epoch, void PG::write_info(ObjectStore::Transaction& t) { + info.stats.stats.add(unstable_stats); + unstable_stats.clear(); + int ret = _write_info(t, get_osdmap()->get_epoch(), info, coll, past_intervals, snap_collections, osd->infos_oid, info_struct_v, dirty_big_info); diff --git a/src/osd/PG.h b/src/osd/PG.h index f74814db8694..9f10d8dfbd0e 100644 --- a/src/osd/PG.h +++ b/src/osd/PG.h @@ -716,6 +716,9 @@ protected: void requeue_object_waiters(map >& m); void requeue_ops(list &l); + // stats that persist lazily + object_stat_collection_t unstable_stats; + // publish stats Mutex pg_stats_publish_lock; bool pg_stats_publish_valid; diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index 83b4db491b78..531fa5d91fa9 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -3575,6 +3575,7 @@ int ReplicatedPG::prepare_transaction(OpContext *ctx) // read-op? done? if (ctx->op_t.empty() && !ctx->modify) { ctx->reply_version = ctx->obs->oi.user_version; + unstable_stats.add(ctx->delta_stats, ctx->obc->obs.oi.category); return result; } @@ -6335,6 +6336,7 @@ void ReplicatedPG::on_change() snap_trimmer_machine.process_event(Reset()); debug_op_order.clear(); + unstable_stats.clear(); } void ReplicatedPG::on_role_change()