l_osd_scrub_rppool_failed_elapsed,
"failed_scrubs_replicated_elapsed",
"time to scrub failure replicated");
+ osd_plb.add_u64_counter(
+ l_osd_scrub_rppool_write_intersects,
+ "scrub_replicated_io_intersects",
+ "client write op intersects chunk range");
+ osd_plb.add_u64_counter(
+ l_osd_scrub_rppool_write_blocked,
+ "scrub_replicated_io_blocked",
+ "write op did not preempt the scrub");
// the replica reservation process - replicated pool
osd_plb.add_u64_counter(
osd_plb.add_time_avg(
l_osd_scrub_ec_failed_elapsed, "failed_scrubs_ec_elapsed",
"time to scrub failure ec");
+ osd_plb.add_u64_counter(
+ l_osd_scrub_ec_write_intersects,
+ "scrub_ec_io_intersects",
+ "client write op intersects chunk range");
+ osd_plb.add_u64_counter(
+ l_osd_scrub_ec_write_blocked,
+ "scrub_ec_io_blocked",
+ "write op did not preempt the scrub");
// the secondaries reservation process - EC
osd_plb.add_u64_counter(
l_osd_scrub_rppool_successful_elapsed, ///< time to complete a successful scrub
l_osd_scrub_rppool_failed, ///< failed scrubs count
l_osd_scrub_rppool_failed_elapsed, ///< time from start to failure
+ l_osd_scrub_rppool_write_intersects, ///< client write op intersects chunk range
+ l_osd_scrub_rppool_write_blocked, ///< write op did not preempt the scrub
// ---- scrub reservation process - replicated pools
l_osd_scrub_ec_successful_elapsed, ///< time to complete a successful scrub
l_osd_scrub_ec_failed, ///< failed scrubs count
l_osd_scrub_ec_failed_elapsed, ///< time from start to failure
+ l_osd_scrub_ec_write_intersects, ///< client write op intersects chunk range
+ l_osd_scrub_ec_write_blocked, ///< write op did not preempt the scrub
// ---- scrub reservation process - EC
return false;
}
- get_labeled_counters()->inc(scrbcnt_write_blocked);
+ const auto& unlabeled_cntrs_idx = get_unlabeled_counters();
+ get_osd_perf_counters()->inc(unlabeled_cntrs_idx.write_intersects);
dout(20) << __func__ << " " << soid << " can preempt? "
<< preemption_data.is_preemptable() << " already preempted? "
<< preemption_data.was_preempted() << dendl;
return false;
}
+
+ get_osd_perf_counters()->inc(unlabeled_cntrs_idx.write_blocked);
+ // to be removed in version 'Umbrella':
+ get_labeled_counters()->inc(scrbcnt_write_blocked);
return true;
}
.successful_elapsed = l_osd_scrub_rppool_successful_elapsed,
.failed_cnt = l_osd_scrub_rppool_failed,
.failed_elapsed = l_osd_scrub_rppool_failed_elapsed,
+ .write_intersects = l_osd_scrub_rppool_write_intersects,
+ .write_blocked = l_osd_scrub_rppool_write_blocked,
// replica-reservation-related:
.rsv_successful_cnt = l_osd_scrub_rppool_reserv_success,
.rsv_successful_elapsed = l_osd_scrub_rppool_reserv_successful_elapsed,
.successful_elapsed = l_osd_scrub_ec_successful_elapsed,
.failed_cnt = l_osd_scrub_ec_failed,
.failed_elapsed = l_osd_scrub_ec_failed_elapsed,
+ .write_intersects = l_osd_scrub_ec_write_intersects,
+ .write_blocked = l_osd_scrub_ec_write_blocked,
// replica-reservation-related:
.rsv_successful_cnt = l_osd_scrub_ec_reserv_success,
.rsv_successful_elapsed = l_osd_scrub_ec_reserv_successful_elapsed,
osd_counter_idx_t successful_elapsed; ///< time to complete a successful scrub
osd_counter_idx_t failed_cnt; ///< failed scrubs count
osd_counter_idx_t failed_elapsed; ///< time from start to failure
+ osd_counter_idx_t write_intersects; ///< client write op intersects chunk range
+ osd_counter_idx_t write_blocked; ///< write op did not preempt the scrub
// reservation process related:
osd_counter_idx_t rsv_successful_cnt; ///< completed reservation processes
osd_counter_idx_t rsv_successful_elapsed; ///< time to all-reserved