"recovery bytes",
"rbt", PerfCountersBuilder::PRIO_INTERESTING);
+ osd_plb.add_time_avg(
+ l_osd_recovery_push_queue_lat,
+ "l_osd_recovery_push_queue_latency",
+ "MOSDPGPush queue latency");
+ osd_plb.add_time_avg(
+ l_osd_recovery_push_reply_queue_lat,
+ "l_osd_recovery_push_reply_queue_latency",
+ "MOSDPGPushReply queue latency");
+ osd_plb.add_time_avg(
+ l_osd_recovery_pull_queue_lat,
+ "l_osd_recovery_pull_queue_latency",
+ "MOSDPGPull queue latency");
+ osd_plb.add_time_avg(
+ l_osd_recovery_backfill_queue_lat,
+ "l_osd_recovery_backfill_queue_latency",
+ "MOSDPGBackfill queue latency");
+ osd_plb.add_time_avg(
+ l_osd_recovery_backfill_remove_queue_lat,
+ "l_osd_recovery_backfill_remove_queue_latency",
+ "MOSDPGBackfillDelete queue latency");
+ osd_plb.add_time_avg(
+ l_osd_recovery_scan_queue_lat,
+ "l_osd_recovery_scan_queue_latency",
+ "MOSDPGScan queue latency");
+
osd_plb.add_u64(l_osd_loadavg, "loadavg", "CPU load");
osd_plb.add_u64(
l_osd_cached_crc, "cached_crc", "Total number getting crc from crc_cache");
l_osd_rop,
l_osd_rbytes,
+ l_osd_recovery_push_queue_lat,
+ l_osd_recovery_push_reply_queue_lat,
+ l_osd_recovery_pull_queue_lat,
+ l_osd_recovery_backfill_queue_lat,
+ l_osd_recovery_backfill_remove_queue_lat,
+ l_osd_recovery_scan_queue_lat,
+
l_osd_loadavg,
l_osd_cached_crc,
l_osd_cached_crc_adjusted,
PGRef& pg,
ThreadPool::TPHandle &handle)
{
+ auto latency = time_queued - ceph_clock_now();
+ switch (op->get_req()->get_type()) {
+ case MSG_OSD_PG_PUSH:
+ osd->logger->tinc(l_osd_recovery_push_queue_lat, latency);
+ case MSG_OSD_PG_PUSH_REPLY:
+ osd->logger->tinc(l_osd_recovery_push_reply_queue_lat, latency);
+ case MSG_OSD_PG_PULL:
+ osd->logger->tinc(l_osd_recovery_pull_queue_lat, latency);
+ case MSG_OSD_PG_BACKFILL:
+ osd->logger->tinc(l_osd_recovery_backfill_queue_lat, latency);
+ case MSG_OSD_PG_BACKFILL_REMOVE:
+ osd->logger->tinc(l_osd_recovery_backfill_remove_queue_lat, latency);
+ case MSG_OSD_PG_SCAN:
+ osd->logger->tinc(l_osd_recovery_scan_queue_lat, latency);
+ }
osd->dequeue_op(pg, op, handle);
pg->unlock();
}
};
class PGRecoveryMsg : public PGOpQueueable {
+ utime_t time_queued;
OpRequestRef op;
public:
- PGRecoveryMsg(spg_t pg, OpRequestRef op) : PGOpQueueable(pg), op(std::move(op)) {}
+ PGRecoveryMsg(spg_t pg, OpRequestRef op)
+ : PGOpQueueable(pg), time_queued(ceph_clock_now()), op(std::move(op)) {}
static bool is_recovery_msg(OpRequestRef &op) {
switch (op->get_req()->get_type()) {