ebpf_cachestat.h 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. // SPDX-License-Identifier: GPL-3.0-or-later
  2. #ifndef NETDATA_EBPF_CACHESTAT_H
  3. #define NETDATA_EBPF_CACHESTAT_H 1
  4. // Module name
  5. #define NETDATA_EBPF_MODULE_NAME_CACHESTAT "cachestat"
  6. // charts
  7. #define NETDATA_CACHESTAT_HIT_RATIO_CHART "cachestat_ratio"
  8. #define NETDATA_CACHESTAT_DIRTY_CHART "cachestat_dirties"
  9. #define NETDATA_CACHESTAT_HIT_CHART "cachestat_hits"
  10. #define NETDATA_CACHESTAT_MISSES_CHART "cachestat_misses"
  11. #define NETDATA_CACHESTAT_SUBMENU "page_cache"
  12. #define NETDATA_CACHESTAT_CGROUP_SUBMENU "page cache (eBPF)"
  13. #define EBPF_CACHESTAT_DIMENSION_PAGE "pages/s"
  14. #define EBPF_CACHESTAT_DIMENSION_HITS "hits/s"
  15. #define EBPF_CACHESTAT_DIMENSION_MISSES "misses/s"
  16. // configuration file
  17. #define NETDATA_CACHESTAT_CONFIG_FILE "cachestat.conf"
  18. // Contexts
  19. #define NETDATA_CGROUP_CACHESTAT_HIT_RATIO_CONTEXT "cgroup.cachestat_ratio"
  20. #define NETDATA_CGROUP_CACHESTAT_MODIFIED_CACHE_CONTEXT "cgroup.cachestat_dirties"
  21. #define NETDATA_CGROUP_CACHESTAT_HIT_FILES_CONTEXT "cgroup.cachestat_hits"
  22. #define NETDATA_CGROUP_CACHESTAT_MISS_FILES_CONTEXT "cgroup.cachestat_misses"
  23. #define NETDATA_SYSTEMD_CACHESTAT_HIT_RATIO_CONTEXT "services.cachestat_ratio"
  24. #define NETDATA_SYSTEMD_CACHESTAT_MODIFIED_CACHE_CONTEXT "services.cachestat_dirties"
  25. #define NETDATA_SYSTEMD_CACHESTAT_HIT_FILE_CONTEXT "services.cachestat_hits"
  26. #define NETDATA_SYSTEMD_CACHESTAT_MISS_FILES_CONTEXT "services.cachestat_misses"
  27. // ARAL Name
  28. #define NETDATA_EBPF_CACHESTAT_ARAL_NAME "ebpf_cachestat"
  29. // variables
  30. enum cachestat_counters {
  31. NETDATA_KEY_CALLS_ADD_TO_PAGE_CACHE_LRU,
  32. NETDATA_KEY_CALLS_MARK_PAGE_ACCESSED,
  33. NETDATA_KEY_CALLS_ACCOUNT_PAGE_DIRTIED,
  34. NETDATA_KEY_CALLS_MARK_BUFFER_DIRTY,
  35. NETDATA_CACHESTAT_END
  36. };
  37. enum cachestat_account_dirty_pages {
  38. NETDATA_CACHESTAT_ACCOUNT_PAGE_DIRTY,
  39. NETDATA_CACHESTAT_SET_PAGE_DIRTY,
  40. NETDATA_CACHESTAT_FOLIO_DIRTY,
  41. NETDATA_CACHESTAT_ACCOUNT_DIRTY_END
  42. };
  43. enum cachestat_indexes {
  44. NETDATA_CACHESTAT_IDX_RATIO,
  45. NETDATA_CACHESTAT_IDX_DIRTY,
  46. NETDATA_CACHESTAT_IDX_HIT,
  47. NETDATA_CACHESTAT_IDX_MISS
  48. };
  49. enum cachestat_tables {
  50. NETDATA_CACHESTAT_GLOBAL_STATS,
  51. NETDATA_CACHESTAT_PID_STATS,
  52. NETDATA_CACHESTAT_CTRL
  53. };
  54. typedef struct netdata_publish_cachestat_pid {
  55. uint64_t add_to_page_cache_lru;
  56. uint64_t mark_page_accessed;
  57. uint64_t account_page_dirtied;
  58. uint64_t mark_buffer_dirty;
  59. } netdata_cachestat_pid_t;
  60. typedef struct netdata_publish_cachestat {
  61. long long ratio;
  62. long long dirty;
  63. long long hit;
  64. long long miss;
  65. netdata_cachestat_pid_t current;
  66. netdata_cachestat_pid_t prev;
  67. } netdata_publish_cachestat_t;
  68. void *ebpf_cachestat_thread(void *ptr);
  69. void ebpf_cachestat_release(netdata_publish_cachestat_t *stat);
  70. extern struct config cachestat_config;
  71. extern netdata_ebpf_targets_t cachestat_targets[];
  72. extern ebpf_local_maps_t cachestat_maps[];
  73. #endif // NETDATA_EBPF_CACHESTAT_H