summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Zafman <david.zafman@inktank.com>2013-04-26 18:05:18 -0700
committerDavid Zafman <david.zafman@inktank.com>2013-04-29 17:46:15 -0700
commitadb7c8a0608659e339836b3f769d96a19841b6fb (patch)
tree50a00b35183d6aa46a03614af97bda73a43f0898
parentb5e246106d299af817451ecab780754c31e2d4ca (diff)
downloadceph-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.cc4
-rw-r--r--src/osd/PG.h3
-rw-r--r--src/osd/ReplicatedPG.cc2
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()