]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
Merge pull request #66577 from Jayaprakash-ibm/wip-slow-ops-warn-in-scrub
authorJaya Prakash <jayaprakash@ibm.com>
Thu, 9 Apr 2026 12:12:55 +0000 (17:42 +0530)
committerGitHub <noreply@github.com>
Thu, 9 Apr 2026 12:12:55 +0000 (17:42 +0530)
os/bluestore: separate slow scrub ops from normal slow ops

Reviewed-by: Adam Kupczyk <akupczyk@ibm.com>
Reviewed-by: Igor Fedotov <igor.fedotov@croit.io>
1  2 
src/common/options/global.yaml.in
src/os/bluestore/BlueStore.cc

Simple merge
index d1d6e931eee00145675397d112edcfc49704caaf,69b145e9f0f943ccdf5102d9e4eb0949d484a772..3eb318215b7db9241d95a4f4edcf2a1ea09188c8
@@@ -19365,35 -19422,10 +19478,36 @@@ void BlueStore::_log_alerts(osd_alert_l
    } else if (!spillover_alert.empty()){
      spillover_alert.clear();
    }
 +  // CHECK: BlueFS usage relative to main device size
 +  if (bluefs) {
 +    uint64_t db_used = bluefs->get_used(BlueFS::BDEV_DB);
 +    uint64_t wal_used = bluefs->get_used(BlueFS::BDEV_WAL);
 +    uint64_t slow_used = bluefs->get_used(BlueFS::BDEV_SLOW);
 +    uint64_t main_size = bdev->get_size();
 +
 +    if (main_size > 0) {
 +      uint64_t total_bluefs_usage = db_used + wal_used + slow_used;
 +      double ratio = static_cast<double>(total_bluefs_usage) /
 +                     static_cast<double>(main_size);
 +      double warn_ratio =
 +        cct->_conf.get_val<double>("bluestore_bluefs_warn_ratio");
 +
 +      if (ratio > warn_ratio) {
 +        ostringstream ss;
 +        ss << "BlueFS usage (" << byte_u_t(total_bluefs_usage)
 +           << ") exceeds " << std::fixed << std::setprecision(4)
 +           << (warn_ratio * 100.0) << "% of main device ("
 +           << byte_u_t(main_size) << ", "
 +           << std::fixed << std::setprecision(2)
 +           << ratio * 100.0 << "%)";
 +        alerts.emplace("BLUESTORE_BLUEFS_OVERSIZED", ss.str());
 +      }
 +    }
 +  }
    if (cct->_conf->bluestore_slow_ops_warn_threshold) {
-     size_t qsize = _trim_slow_op_event_queue(mono_clock::now());
-     if (qsize >= cct->_conf->bluestore_slow_ops_warn_threshold) {
+     auto [qsize, scrub_qsize] = _trim_slow_op_event_queue(mono_clock::now());
+     if (qsize >= cct->_conf->bluestore_slow_ops_warn_threshold ||
+         scrub_qsize >= cct->_conf->bluestore_slow_scrub_ops_warn_threshold) {
        ostringstream ss;
        ss << "observed slow operation indications in BlueStore";
        alerts.emplace("BLUESTORE_SLOW_OP_ALERT", ss.str());