From: Jaya Prakash Date: Thu, 9 Apr 2026 12:12:55 +0000 (+0530) Subject: Merge pull request #66577 from Jayaprakash-ibm/wip-slow-ops-warn-in-scrub X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=f3b29afebf751a092aa73f5c18fbccfeefc27561;p=ceph.git Merge pull request #66577 from Jayaprakash-ibm/wip-slow-ops-warn-in-scrub os/bluestore: separate slow scrub ops from normal slow ops Reviewed-by: Adam Kupczyk Reviewed-by: Igor Fedotov --- f3b29afebf751a092aa73f5c18fbccfeefc27561 diff --cc src/os/bluestore/BlueStore.cc index d1d6e931eee0,69b145e9f0f9..3eb318215b7d --- a/src/os/bluestore/BlueStore.cc +++ b/src/os/bluestore/BlueStore.cc @@@ -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(total_bluefs_usage) / + static_cast(main_size); + double warn_ratio = + cct->_conf.get_val("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());