@@ -356,7 +356,122 @@ PerfCounters *build_osd_logger(CephContext *cct) {
356356 osd_plb.add_u64_counter (
357357 l_osd_watch_timeouts, " watch_timeouts" ,
358358 " Number of watches that timed out or were blocklisted" ,
359- NULL , PerfCountersBuilder::PRIO_USEFUL);
359+ nullptr , PerfCountersBuilder::PRIO_USEFUL);
360+
361+ // scrub I/O (no EC vs. replicated differentiation)
362+ osd_plb.add_u64_counter (l_osd_scrub_omapgetheader_cnt, " scrub_omapgetheader_cnt" , " scrub omap get header calls count" );
363+ osd_plb.add_u64_counter (l_osd_scrub_omapgetheader_bytes, " scrub_omapgetheader_bytes" , " scrub omap get header bytes read" );
364+ osd_plb.add_u64_counter (l_osd_scrub_omapget_cnt, " scrub_omapget_cnt" , " scrub omap get calls count" );
365+ osd_plb.add_u64_counter (l_osd_scrub_omapget_bytes, " scrub_omapget_bytes" , " scrub omap get bytes read" );
366+ // scrub I/O performed for replicated pools
367+ osd_plb.add_u64_counter (l_osd_scrub_rppool_getattr_cnt, " scrub_replicated_getattr_cnt" , " scrub replicated pool getattr calls count" );
368+ osd_plb.add_u64_counter (l_osd_scrub_rppool_stats_cnt, " scrub_replicated_stats_cnt" , " scrub replicated pool stats calls count" );
369+ osd_plb.add_u64_counter (l_osd_scrub_rppool_read_cnt, " scrub_replicated_read_cnt" , " scrub replicated pool read calls count" );
370+ osd_plb.add_u64_counter (l_osd_scrub_rppool_read_bytes, " scrub_replicated_read_bytes" , " scrub replicated pool read bytes read" );
371+ // scrub I/O performed for EC pools
372+ osd_plb.add_u64_counter (l_osd_scrub_ec_getattr_cnt, " scrub_ec_getattr_cnt" , " scrub EC getattr calls count" );
373+ osd_plb.add_u64_counter (l_osd_scrub_ec_stats_cnt, " scrub_ec_stats_cnt" , " scrub EC stats calls count" );
374+ osd_plb.add_u64_counter (l_osd_scrub_ec_read_cnt, " scrub_ec_read_cnt" , " scrub EC read calls count" );
375+ osd_plb.add_u64_counter (l_osd_scrub_ec_read_bytes, " scrub_ec_read_bytes" , " scrub EC read bytes read" );
376+
377+ // scrub - replicated pools
378+ osd_plb.add_u64_counter (
379+ l_osd_scrub_rppool_started,
380+ " num_scrubs_started_replicated" ,
381+ " replicated scrubs attempted count" );
382+ osd_plb.add_u64_counter (
383+ l_osd_scrub_rppool_active_started,
384+ " num_scrubs_past_reservation_replicated" ,
385+ " replicated scrubs count" );
386+ osd_plb.add_u64_counter (
387+ l_osd_scrub_rppool_successful,
388+ " successful_scrubs_replicated" ,
389+ " successful replicated scrubs count" );
390+ osd_plb.add_time_avg (
391+ l_osd_scrub_rppool_successful_elapsed,
392+ " successful_scrubs_replicated_elapsed" ,
393+ " time to complete a successful replicated scrub" );
394+ osd_plb.add_u64_counter (
395+ l_osd_scrub_rppool_failed, " failed_scrubs_replicated" ,
396+ " failed replicated scrubs count" );
397+ osd_plb.add_time_avg (
398+ l_osd_scrub_rppool_failed_elapsed,
399+ " failed_scrubs_replicated_elapsed" ,
400+ " time to scrub failure replicated" );
401+
402+ // the replica reservation process - replicated pool
403+ osd_plb.add_u64_counter (
404+ l_osd_scrub_rppool_reserv_success,
405+ " scrub_replicated_scrub_reservations_completed" ,
406+ " successfully completed reservation processes" );
407+ osd_plb.add_time_avg (
408+ l_osd_scrub_rppool_reserv_successful_elapsed,
409+ " scrub_replicated_successful_reservations_elapsed" ,
410+ " time to scrub reservation completion" );
411+ osd_plb.add_u64_counter (
412+ l_osd_scrub_rppool_reserv_aborted,
413+ " scrub_replicated_reservation_process_aborted" ,
414+ " scrub replicated pool reservation was aborted" );
415+ osd_plb.add_u64_counter (
416+ l_osd_scrub_rppool_reserv_rejected,
417+ " scrub_replicated_reservation_process_failure" ,
418+ " scrub replicated pool reservation failed due to replica denial" );
419+ osd_plb.add_u64_counter (
420+ l_osd_scrub_rppool_reserv_skipped,
421+ " scrub_replicated_reservation_process_skipped" ,
422+ " scrub replicated pool reservation skipped for high priority scrub" );
423+ osd_plb.add_time_avg (
424+ l_osd_scrub_rppool_reserv_failed_elapsed,
425+ " scrub_replicated_failed_reservations_elapsed" ,
426+ " scrub replicated pool time for scrub reservation to fail" );
427+ osd_plb.add_u64 (
428+ l_osd_scrub_rppool_reserv_secondaries_num,
429+ " scrub_replicated_replicas_in_reservation" ,
430+ " scrub replicated pool number of replicas to reserve" );
431+
432+ // scrub - EC
433+ osd_plb.add_u64_counter (
434+ l_osd_scrub_ec_started, " num_scrubs_started_ec" ,
435+ " EC scrubs attempted count" );
436+ osd_plb.add_u64_counter (
437+ l_osd_scrub_ec_active_started, " num_scrubs_past_reservation_ec" ,
438+ " EC scrubs count" );
439+ osd_plb.add_u64_counter (
440+ l_osd_scrub_ec_successful, " successful_scrubs_ec" ,
441+ " successful EC scrubs count" );
442+ osd_plb.add_time_avg (
443+ l_osd_scrub_ec_successful_elapsed, " successful_scrubs_ec_elapsed" ,
444+ " time to complete a successful EC scrub" );
445+ osd_plb.add_u64_counter (
446+ l_osd_scrub_ec_failed, " failed_scrubs_ec" , " failed scrubs count EC" );
447+ osd_plb.add_time_avg (
448+ l_osd_scrub_ec_failed_elapsed, " failed_scrubs_ec_elapsed" ,
449+ " time to scrub failure ec" );
450+
451+ // the replica reservation process - EC
452+ osd_plb.add_u64_counter (
453+ l_osd_scrub_ec_reserv_success, " scrub_ec_reservations_completed" ,
454+ " successfully completed reservation processes EC" );
455+ osd_plb.add_time_avg (
456+ l_osd_scrub_ec_reserv_successful_elapsed,
457+ " scrub_ec_successful_reservations_elapsed" ,
458+ " time to EC scrub reservation completion" );
459+ osd_plb.add_u64_counter (
460+ l_osd_scrub_ec_reserv_aborted, " scrub_ec_reservation_process_aborted" ,
461+ " scrub reservation was aborted EC" );
462+ osd_plb.add_u64_counter (
463+ l_osd_scrub_ec_reserv_rejected, " scrub_ec_reservation_process_failure" ,
464+ " scrub reservation failed due to replica denial EC" );
465+ osd_plb.add_u64_counter (
466+ l_osd_scrub_ec_reserv_skipped, " scrub_ec_reservation_process_skipped" ,
467+ " scrub reservation skipped for high priority scrub EC" );
468+ osd_plb.add_time_avg (
469+ l_osd_scrub_ec_reserv_failed_elapsed,
470+ " scrub_ec_failed_reservations_elapsed" ,
471+ " time for scrub reservation to fail EC" );
472+ osd_plb.add_u64 (
473+ l_osd_scrub_ec_reserv_secondaries_num, " scrub_ec_replicas_in_reservation" ,
474+ " number of replicas to reserve EC" );
360475
361476 return osd_plb.create_perf_counters ();
362477}
@@ -409,27 +524,12 @@ PerfCounters *build_scrub_labeled_perf(CephContext *cct, std::string label)
409524
410525 scrub_perf.set_prio_default (PerfCountersBuilder::PRIO_INTERESTING);
411526
412- scrub_perf.add_u64_counter (scrbcnt_started, " num_scrubs_started" , " scrubs attempted count" );
413- scrub_perf.add_u64_counter (scrbcnt_active_started, " num_scrubs_past_reservation" , " scrubs count" );
414- scrub_perf.add_u64_counter (scrbcnt_failed, " failed_scrubs" , " failed scrubs count" );
415- scrub_perf.add_u64_counter (scrbcnt_successful, " successful_scrubs" , " successful scrubs count" );
416- scrub_perf.add_time_avg (scrbcnt_failed_elapsed, " failed_scrubs_elapsed" , " time to scrub failure" );
417- scrub_perf.add_time_avg (scrbcnt_successful_elapsed, " successful_scrubs_elapsed" , " time to scrub completion" );
418-
419527 scrub_perf.add_u64_counter (scrbcnt_preempted, " preemptions" , " preemptions on scrubs" );
420528 scrub_perf.add_u64_counter (scrbcnt_chunks_selected, " chunk_selected" , " chunk selection during scrubs" );
421529 scrub_perf.add_u64_counter (scrbcnt_chunks_busy, " chunk_busy" , " chunk busy during scrubs" );
422530 scrub_perf.add_u64_counter (scrbcnt_blocked, " locked_object" , " waiting on locked object events" );
423531 scrub_perf.add_u64_counter (scrbcnt_write_blocked, " write_blocked_by_scrub" , " write blocked by scrub" );
424532
425- // the replica reservation process
426- scrub_perf.add_u64_counter (scrbcnt_resrv_success, " scrub_reservations_completed" , " successfully completed reservation processes" );
427- scrub_perf.add_time_avg (scrbcnt_resrv_successful_elapsed, " successful_reservations_elapsed" , " time to scrub reservation completion" );
428- scrub_perf.add_u64_counter (scrbcnt_resrv_aborted, " reservation_process_aborted" , " scrub reservation was aborted" );
429- scrub_perf.add_u64_counter (scrbcnt_resrv_rejected, " reservation_process_failure" , " scrub reservation failed due to replica denial" );
430- scrub_perf.add_u64_counter (scrbcnt_resrv_skipped, " reservation_process_skipped" , " scrub reservation skipped for high priority scrub" );
431- scrub_perf.add_time_avg (scrbcnt_resrv_failed_elapsed, " failed_reservations_elapsed" , " time for scrub reservation to fail" );
432- scrub_perf.add_u64 (scrbcnt_resrv_replicas_num, " replicas_in_reservation" , " number of replicas in reservation" );
433533
434534 return scrub_perf.create_perf_counters ();
435535}
0 commit comments