diff options
author | David Zafman <david.zafman@inktank.com> | 2013-04-26 18:05:18 -0700 |
---|---|---|
committer | David Zafman <david.zafman@inktank.com> | 2013-04-29 17:46:15 -0700 |
commit | adb7c8a0608659e339836b3f769d96a19841b6fb (patch) | |
tree | 50a00b35183d6aa46a03614af97bda73a43f0898 | |
parent | b5e246106d299af817451ecab780754c31e2d4ca (diff) | |
download | ceph-adb7c8a0608659e339836b3f769d96a19841b6fb.tar.gz |
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 <david.zafman@inktank.com>
-rw-r--r-- | src/osd/PG.cc | 4 | ||||
-rw-r--r-- | src/osd/PG.h | 3 | ||||
-rw-r--r-- | src/osd/ReplicatedPG.cc | 2 |
3 files changed, 9 insertions, 0 deletions
diff --git a/src/osd/PG.cc b/src/osd/PG.cc index 3ddbe93d51d..ae88be652da 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 f74814db869..9f10d8dfbd0 100644 --- a/src/osd/PG.h +++ b/src/osd/PG.h @@ -716,6 +716,9 @@ protected: void requeue_object_waiters(map<hobject_t, list<OpRequestRef> >& m); void requeue_ops(list<OpRequestRef> &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 83b4db491b7..531fa5d91fa 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() |