38struct Disk_forecast_reset_context;
152 [[nodiscard]]
bool running()
const override;
318 double days_to_full,
double usage_rate_pct_per_day);
320 double volume_size_mb,
321 double current_usage_mb);
Implements the Holt-Winters forecasting algorithm for time series data.
Definition: fx_holt_winters_forecaster.h:44
Definition: health_monitor_collector.h:41
Cycle-driven timer.
Definition: health_monitor_timer.h:125
Definition: health_monitor_disk_forecaster.h:40
void update_forecast_tables(std::vector< Disk_Forecast > &forecasts, Disk_Forecast_Summary &summary)
Update disk forecast buffers with the lastest forecast and summary.
Definition: health_monitor_disk_forecaster_core.cc:406
std::string volume()
Definition: health_monitor_disk_forecaster.h:157
int load_unit_test_data()
Load the unit test data into the disk metrics buffer.
Definition: health_monitor_disk_forecaster_test.cc:60
Disk_Forecast_Summary_Buffer m_disk_forecast_summary_buffer
Definition: health_monitor_disk_forecaster.h:192
static constexpr int k_forecast_interval_seconds
Definition: health_monitor_disk_forecaster.h:249
void set_test_state(Dfx_Test_State state)
Definition: health_monitor_disk_forecaster_mode.cc:50
Holt_Winters_Forecaster & forecaster()
Definition: health_monitor_disk_forecaster.h:316
bool is_new_run_mode() const
Definition: health_monitor_disk_forecaster.h:119
Cycle_Timer & forecast_timer()
Definition: health_monitor_disk_forecaster.h:209
Cycle_Timer & short_report_timer()
Definition: health_monitor_disk_forecaster.h:211
time_t m_last_forecast_time
Definition: health_monitor_disk_forecaster.h:373
PSI_memory_key m_forecast_summary_memory_key
Definition: health_monitor_disk_forecaster.h:419
static const char * dfx_run_mode_names[5]
Definition: health_monitor_disk_forecaster.h:91
static char m_dfx_run_mode_name[32]
Definition: health_monitor_disk_forecaster.h:95
bool ready_to_forecast(bool log_warning=true)
Check if the forecaster is ready to produce forecasts.
Definition: health_monitor_disk_forecaster_core.cc:377
void set_run_mode(Dfx_Run_Mode mode)
Definition: health_monitor_disk_forecaster_mode.cc:36
bool m_static_settings_changed
Definition: health_monitor_disk_forecaster.h:168
Dfx_Test_State test_state() const
Definition: health_monitor_disk_forecaster.h:120
const char * run_mode_name_ptr() const
Definition: health_monitor_disk_forecaster.h:130
std::string format_forecast_summary(const Disk_Forecast_Summary &dfxs)
Generate a human-readable log message from a Disk_Forecast_Summary.
Definition: health_monitor_disk_forecaster_report.cc:284
PSI_rwlock_key m_metric_rwlock_key
Definition: health_monitor_disk_forecaster.h:403
Disk_Forecast_Summary compute_summary(const Holt_Winters_State &model, double volume_size_mb, double current_usage_mb)
Compute a summary of the forecast model and current usage.
Definition: health_monitor_disk_forecaster_core.cc:112
PSI_memory_key m_aggregate_memory_key
Definition: health_monitor_disk_forecaster.h:417
double m_used_pct
Definition: health_monitor_disk_forecaster.h:296
static constexpr int k_tier_2_rows
Definition: health_monitor_disk_forecaster.h:289
void set_total_metric_count(size_t metric_count)
Definition: health_monitor_disk_forecaster.h:335
Disk_Forecaster()
Definition: health_monitor_disk_forecaster.cc:44
Holt_Winters_Forecaster m_forecaster
Definition: health_monitor_disk_forecaster.h:349
std::mutex m_processing_mutex
Definition: health_monitor_disk_forecaster.h:165
std::string generate_report(std::vector< Disk_Forecast > &forecasts, Disk_Forecast_Summary &summary)
Format the disk forecast report for the diagnostic log.
Definition: health_monitor_disk_forecaster_report.cc:93
bool m_is_new_run_mode
Definition: health_monitor_disk_forecaster.h:144
void save_forecast_status(const std::vector< Disk_Forecast > &forecasts, const Disk_Forecast_Summary &summary)
Definition: health_monitor_disk_forecaster.h:338
static constexpr int k_time_series_interval_seconds
Definition: health_monitor_disk_forecaster.h:237
void log_forecast_status(std::vector< Disk_Forecast > &forecasts, Disk_Forecast_Summary &summary)
Send disk usage forecast summary to the error log.
Definition: health_monitor_disk_forecaster_report.cc:252
Disk_Forecast_Buffer disk_forecast_buffer()
Definition: health_monitor_disk_forecaster.h:183
std::string test_filename()
Definition: health_monitor_disk_forecaster.h:156
Disk_Metric_Buffer disk_metric_buffer()
Definition: health_monitor_disk_forecaster.h:179
bool m_volume_size_changed
Definition: health_monitor_disk_forecaster.h:300
static char m_dfx_test_state_name[32]
Definition: health_monitor_disk_forecaster.h:96
std::atomic< bool > m_disk_input_available
Definition: health_monitor_disk_forecaster.h:264
int process_test_cycle()
Runs the unit test driven by the test data file.
Definition: health_monitor_disk_forecaster_test.cc:380
Cycle_Timer m_short_report_timer
Definition: health_monitor_disk_forecaster.h:216
static const std::array< std::string, 4 > RUN_MODE_NAMES
Definition: health_monitor_disk_forecaster.h:79
void set_is_new_run_mode(bool is_new)
Definition: health_monitor_disk_forecaster.h:123
static constexpr int k_tier_2_days
Definition: health_monitor_disk_forecaster.h:286
size_t m_total_metric_count
Definition: health_monitor_disk_forecaster.h:372
void run_unit_test()
Run the unit test: Generate forecasts from the uploaded disk metric data, update the forecast tables ...
Definition: health_monitor_disk_forecaster_test.cc:331
Dfx_Status compute_status(double current_usage_pct, bool has_depletion_eta, double days_to_full, double usage_rate_pct_per_day)
Determine disk status based on usage and forecast metrics.
Definition: health_monitor_disk_forecaster_core.cc:79
std::mutex m_series_mutex
Definition: health_monitor_disk_forecaster.h:350
void set_disk_metric_buffer_size()
Resize the disk metric time series buffer if sample interval changes.
Definition: health_monitor_disk_forecaster.cc:362
const std::string & run_mode_name()
Definition: health_monitor_disk_forecaster_mode.cc:79
PSI_rwlock_key m_forecast_rwlock_key
Definition: health_monitor_disk_forecaster.h:405
std::vector< Disk_Forecast > m_last_forecasts
Definition: health_monitor_disk_forecaster.h:374
void set_disk_forecast_buffer_size()
Set the sizes for the disk forecast and disk forecast summary buffers.
Definition: health_monitor_disk_forecaster.cc:388
Cycle_Timer & report_timer()
Definition: health_monitor_disk_forecaster.h:210
static constexpr int default_sample_interval()
Definition: health_monitor_disk_forecaster.h:220
void log_resource_levels() override
Forecast status, no message.
Definition: health_monitor_disk_forecaster.cc:551
uint64_t m_used_mb
Definition: health_monitor_disk_forecaster.h:295
bool static_settings_changed() override
Indicate if the static Disk Forecast settings have changed.
Definition: health_monitor_disk_forecaster.cc:423
static constexpr int k_tier_3_days
Definition: health_monitor_disk_forecaster.h:287
int m_report_interval_seconds
Definition: health_monitor_disk_forecaster.h:256
void reset_filesystem_series()
Reset disk metrics and forecasts before sampling a different filesystem.
Definition: health_monitor_disk_forecaster_core.cc:441
bool running() const override
Return health_monitor.disk_forecast_running.
Definition: health_monitor_disk_forecaster.cc:486
const char * test_state_name_ptr() const
Definition: health_monitor_disk_forecaster.h:134
void initialize_timers()
Initialize the forecast and report timers.
Definition: health_monitor_disk_forecaster.cc:101
int generate_forecast(std::vector< Disk_Forecast > &disk_forecasts, Disk_Forecast_Summary &summary)
Terminology level - Baseline ('real') value with trend and seasonal components removed.
Definition: health_monitor_disk_forecaster_core.cc:223
void update_storage_totals(const Disk_Metric &disk_metric)
Update storage totals, convert to MiB.
Definition: health_monitor_disk_forecaster_core.cc:422
PSI_rwlock_key m_forecast_model_rwlock_key
Definition: health_monitor_disk_forecaster.h:407
void initialize()
Initialize the Disk Forecaster.
Definition: health_monitor_disk_forecaster.cc:86
Dfx_Run_Mode run_mode() const
Definition: health_monitor_disk_forecaster.h:118
bool update_settings() override
Apply pending settings unless a Disk Forecaster processing cycle is active.
Definition: health_monitor_disk_forecaster.cc:207
PSI_rwlock_key m_aggregate_rwlock_key
Definition: health_monitor_disk_forecaster.h:404
static constexpr int k_forecast_retention_seconds
Definition: health_monitor_disk_forecaster.h:271
static constexpr size_t k_metric_retention_seconds
Definition: health_monitor_disk_forecaster.h:244
virtual ~Disk_Forecaster() override
Definition: health_monitor_disk_forecaster.h:53
PSI_rwlock_info m_rwlock_info[5]
Definition: health_monitor_disk_forecaster.h:408
void process() override
Main processing loop, 10 second interval.
Definition: health_monitor_disk_forecaster.cc:147
int read_unit_test_file(std::vector< Disk_Metric > &disk_metrics)
Read the unit test file and populate the disk metrics buffer.
Definition: health_monitor_disk_forecaster_test.cc:92
PSI_memory_key m_metric_memory_key
Definition: health_monitor_disk_forecaster.h:416
Disk_Forecast_Summary_Buffer disk_forecast_summary_buffer()
Definition: health_monitor_disk_forecaster.h:184
Dfx_Test_State m_test_state
Definition: health_monitor_disk_forecaster.h:145
void log_info_message(const std::string &msg, bool levels)
Informational message with collector state and optional forecast status.
Definition: health_monitor_disk_forecaster.cc:532
Status_snapshot status_snapshot() const
Definition: health_monitor_disk_forecaster_core.cc:48
static mysql_rwlock_t m_model_lock
Definition: health_monitor_disk_forecaster.h:371
PSI_memory_info m_memory_info[4]
Definition: health_monitor_disk_forecaster.h:420
int report_interval() const
Definition: health_monitor_disk_forecaster.h:153
Cycle_Timer m_report_timer
Definition: health_monitor_disk_forecaster.h:215
uint64_t m_total_mb
Definition: health_monitor_disk_forecaster.h:293
void process_normal_cycle()
Normal processing cycle.
Definition: health_monitor_disk_forecaster.cc:247
Disk_Forecast_Summary m_last_forecast_summary
Definition: health_monitor_disk_forecaster.h:375
static constexpr int k_disk_forecast_base_interval_seconds
Definition: health_monitor_disk_forecaster.h:231
Dfx_Run_Mode
Definition: health_monitor_disk_forecaster.h:73
static constexpr int k_tier_1_rows
Definition: health_monitor_disk_forecaster.h:288
bool m_first_normal_cycle
Definition: health_monitor_disk_forecaster.h:217
PSI_rwlock_key m_forecast_summary_rwlock_key
Definition: health_monitor_disk_forecaster.h:406
void set_params() final
Set collection parameters from the system variables.
Definition: health_monitor_disk_forecaster.cc:440
static constexpr int k_report_interval_seconds
Definition: health_monitor_disk_forecaster.h:255
Disk_Forecast_Buffer m_disk_forecast_buffer
Definition: health_monitor_disk_forecaster.h:191
int m_forecast_interval_seconds
Definition: health_monitor_disk_forecaster.h:250
Disk_Forecaster & operator=(const Disk_Forecaster &)=delete
std::string m_test_filename
Definition: health_monitor_disk_forecaster.h:146
bool volume_size_changed() const
Definition: health_monitor_disk_forecaster.h:302
int initialize_test()
Initialize the unit test.
Definition: health_monitor_disk_forecaster_test.cc:48
uint64_t m_volume_generation
Definition: health_monitor_disk_forecaster.h:299
std::string format_status_info() override
Definition: health_monitor_disk_forecaster.cc:509
Dfx_Run_Mode m_run_mode
Definition: health_monitor_disk_forecaster.h:143
void set_disk_metric_aggregate_buffer_size()
Set the disk metric aggregated buffer size to include rows for all 3 aggregation tiers.
Definition: health_monitor_disk_forecaster.cc:379
static constexpr int k_tier_1_days
Definition: health_monitor_disk_forecaster.h:285
bool m_dynamic_settings_changed
Definition: health_monitor_disk_forecaster.h:169
uint64_t m_last_total_mb
Definition: health_monitor_disk_forecaster.h:294
static constexpr int default_report_interval()
Definition: health_monitor_disk_forecaster.h:223
void set_volume_size_changed(bool change)
Definition: health_monitor_disk_forecaster.h:307
std::string m_configured_volume
Definition: health_monitor_disk_forecaster.h:297
int m_short_report_interval_seconds
Definition: health_monitor_disk_forecaster.h:261
static mysql_rwlock_t * model_lock()
Definition: health_monitor_disk_forecaster_core.cc:46
bool dynamic_settings_changed() override
Indicate if the dynamic Disk Forecast settings have changed.
Definition: health_monitor_disk_forecaster.cc:405
std::string format_disk_forecast(const Disk_Forecast &dfx)
Generate a human-readable log message from a Disk_Forecast value.
Definition: health_monitor_disk_forecaster_report.cc:267
std::mutex m_settings_mutex
Definition: health_monitor_disk_forecaster.h:167
Cycle_Timer m_forecast_timer
Definition: health_monitor_disk_forecaster.h:214
PSI_memory_key m_forecast_memory_key
Definition: health_monitor_disk_forecaster.h:418
Disk_Metric_Buffer m_disk_metric_buffer
Definition: health_monitor_disk_forecaster.h:189
Disk_Metric_Aggregate_Buffer m_disk_metric_aggregate_buffer
Definition: health_monitor_disk_forecaster.h:190
Dfx_Test_State
Definition: health_monitor_disk_forecaster.h:83
void advance_cycle_timers()
Advance the timers driven by the base interval.
Definition: health_monitor_disk_forecaster.cc:118
Disk_Metric_Aggregate_Buffer disk_metric_aggregate_buffer()
Definition: health_monitor_disk_forecaster.h:180
static constexpr int k_tier_3_rows
Definition: health_monitor_disk_forecaster.h:290
void pre_process() override
Issue status before starting the collection cycle.
Definition: health_monitor_disk_forecaster.cc:138
const std::string & test_state_name()
Definition: health_monitor_disk_forecaster_mode.cc:88
static const std::array< std::string, 3 > TEST_STATE_NAMES
Definition: health_monitor_disk_forecaster.h:88
std::string format_settings() override
Definition: health_monitor_disk_forecaster.cc:494
Disk_Forecaster & operator=(Disk_Forecaster &&)=delete
Disk_Forecaster(const Disk_Forecaster &)=delete
void log_resource_status() override
Collector or forecast status.
Definition: health_monitor_disk_forecaster.cc:546
static const std::array< std::string, 4 > FORECAST_STATUS_NAMES
Definition: health_monitor_disk_forecaster.h:139
const std::string & forecast_status_name(Dfx_Status status)
Definition: health_monitor_disk_forecaster_mode.cc:97
void set_disk_input_available(bool available)
Definition: health_monitor_disk_forecaster.h:111
std::string m_volume
Definition: health_monitor_disk_forecaster.h:298
void post_process() override
Issue a status message after stopping the collection cycle.
Definition: health_monitor_disk_forecaster.cc:352
Disk_Forecaster(Disk_Forecaster &&)=delete
Scoped r/w lock.
Definition: health_monitor_lock.h:50
#define PSI_DOCUMENT_ME
Definition: component_common.h:29
#define PSI_FLAG_SINGLETON
Singleton flag.
Definition: component_common.h:35
#define mysql_rwlock_destroy(T)
Definition: mysql_rwlock.h:51
unsigned int PSI_memory_key
Instrumented memory key.
Definition: psi_memory_bits.h:49
unsigned int PSI_rwlock_key
Instrumented rwlock key.
Definition: psi_rwlock_bits.h:44
#define PSI_VOLATILITY_PROVISIONING
Definition: psi_bits.h:155
#define PSI_FLAG_ONLY_GLOBAL_STAT
Global stat only flag.
Definition: psi_bits.h:112
#define log_warning(msg,...)
Definition: health_monitor_log.h:87
Definition: component_command.h:29
Dfx_Status
Definition: health_monitor_disk_bits.h:91
constexpr bool Lock_Write
Definition: health_monitor_lock.h:31
static PSI_metric_info_v1 disk_metrics[]
Definition: health_monitor_metrics.cc:1278
std::shared_ptr< Stat_Buffer< Disk_Metric_Aggregate > > Disk_Metric_Aggregate_Buffer
Definition: health_monitor_disk_bits.h:88
std::shared_ptr< Stat_Buffer< Disk_Forecast_Summary > > Disk_Forecast_Summary_Buffer
Definition: health_monitor_disk_bits.h:135
static constexpr uint64_t minutes_per_day
Definition: health_monitor_constants.h:47
static constexpr uint64_t seconds_per_day
Definition: health_monitor_constants.h:41
std::shared_ptr< Stat_Buffer< Disk_Forecast > > Disk_Forecast_Buffer
Definition: health_monitor_disk_bits.h:116
std::shared_ptr< Metric_Buffer< Disk_Metric > > Disk_Metric_Buffer
Definition: health_monitor_disk_bits.h:72
constexpr bool Lock_Read
Definition: health_monitor_lock.h:32
static constexpr uint64_t seconds_per_hour
Definition: health_monitor_constants.h:40
Define std::hash<Gtid>.
Definition: gtid.h:355
mode
Definition: file_handle.h:61
static std::mutex lock
Definition: net_ns.cc:56
required uint32 status
Definition: replication_asynchronous_connection_failover.proto:61
Holt-Winters parameters, fitted state and residual statistics.
Definition: fx_holt_winters_state.h:44
Memory instrument information.
Definition: psi_memory_bits.h:58
Rwlock information.
Definition: psi_rwlock_bits.h:162
Definition: health_monitor_disk_bits.h:118
time_t timestamp
Definition: health_monitor_disk_bits.h:119
Forecast record.
Definition: health_monitor_disk_bits.h:97
Definition: health_monitor_disk_forecaster.h:42
Disk_Forecast_Summary summary
Definition: health_monitor_disk_forecaster.h:49
uint64_t total_mb
Definition: health_monitor_disk_forecaster.h:43
double used_pct
Definition: health_monitor_disk_forecaster.h:45
std::vector< Disk_Forecast > forecasts
Definition: health_monitor_disk_forecaster.h:48
size_t metric_count
Definition: health_monitor_disk_forecaster.h:46
time_t last_forecast_time
Definition: health_monitor_disk_forecaster.h:47
uint64_t used_mb
Definition: health_monitor_disk_forecaster.h:44
Disk metric time series.
Definition: health_monitor_disk_bits.h:56
The context reset atomically discards all forecasting state, and is used when the monitored filesyste...
Definition: health_monitor_disk_forecast_reset.h:51
An instrumented rwlock structure.
Definition: mysql_rwlock_bits.h:51