worker_utilization.h 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #ifndef WORKER_UTILIZATION_H
  2. #define WORKER_UTILIZATION_H 1
  3. #include "../libnetdata.h"
  4. // workers interfaces
  5. #define WORKER_UTILIZATION_MAX_JOB_TYPES 50
  6. typedef enum __attribute__((packed)) {
  7. WORKER_METRIC_EMPTY = 0,
  8. WORKER_METRIC_IDLE_BUSY = 1,
  9. WORKER_METRIC_ABSOLUTE = 2,
  10. WORKER_METRIC_INCREMENT = 3,
  11. WORKER_METRIC_INCREMENTAL_TOTAL = 4,
  12. } WORKER_METRIC_TYPE;
  13. void workers_utilization_enable(void);
  14. size_t workers_allocated_memory(void);
  15. void worker_register(const char *name);
  16. void worker_register_job_name(size_t job_id, const char *name);
  17. void worker_register_job_custom_metric(size_t job_id, const char *name, const char *units, WORKER_METRIC_TYPE type);
  18. void worker_unregister(void);
  19. void worker_is_idle(void);
  20. void worker_is_busy(size_t job_id);
  21. void worker_set_metric(size_t job_id, NETDATA_DOUBLE value);
  22. // statistics interface
  23. void workers_foreach(const char *name, void (*callback)(
  24. void *data
  25. , pid_t pid
  26. , const char *thread_tag
  27. , size_t max_job_id
  28. , size_t utilization_usec
  29. , size_t duration_usec
  30. , size_t jobs_started
  31. , size_t is_running
  32. , STRING **job_types_names
  33. , STRING **job_types_units
  34. , WORKER_METRIC_TYPE *job_metric_types
  35. , size_t *job_types_jobs_started
  36. , usec_t *job_types_busy_time
  37. , NETDATA_DOUBLE *job_custom_values
  38. )
  39. , void *data);
  40. #endif // WORKER_UTILIZATION_H