ebpf_cachestat.h 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  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. #define NETDATA_LATENCY_CACHESTAT_SLEEP_MS 600000ULL
  17. // configuration file
  18. #define NETDATA_CACHESTAT_CONFIG_FILE "cachestat.conf"
  19. // Contexts
  20. #define NETDATA_CGROUP_CACHESTAT_HIT_RATIO_CONTEXT "cgroup.cachestat_ratio"
  21. #define NETDATA_CGROUP_CACHESTAT_MODIFIED_CACHE_CONTEXT "cgroup.cachestat_dirties"
  22. #define NETDATA_CGROUP_CACHESTAT_HIT_FILES_CONTEXT "cgroup.cachestat_hits"
  23. #define NETDATA_CGROUP_CACHESTAT_MISS_FILES_CONTEXT "cgroup.cachestat_misses"
  24. #define NETDATA_SYSTEMD_CACHESTAT_HIT_RATIO_CONTEXT "services.cachestat_ratio"
  25. #define NETDATA_SYSTEMD_CACHESTAT_MODIFIED_CACHE_CONTEXT "services.cachestat_dirties"
  26. #define NETDATA_SYSTEMD_CACHESTAT_HIT_FILE_CONTEXT "services.cachestat_hits"
  27. #define NETDATA_SYSTEMD_CACHESTAT_MISS_FILES_CONTEXT "services.cachestat_misses"
  28. // variables
  29. enum cachestat_counters {
  30. NETDATA_KEY_CALLS_ADD_TO_PAGE_CACHE_LRU,
  31. NETDATA_KEY_CALLS_MARK_PAGE_ACCESSED,
  32. NETDATA_KEY_CALLS_ACCOUNT_PAGE_DIRTIED,
  33. NETDATA_KEY_CALLS_MARK_BUFFER_DIRTY,
  34. NETDATA_CACHESTAT_END
  35. };
  36. enum cachestat_account_dirty_pages {
  37. NETDATA_CACHESTAT_ACCOUNT_PAGE_DIRTY,
  38. NETDATA_CACHESTAT_SET_PAGE_DIRTY,
  39. NETDATA_CACHESTAT_FOLIO_DIRTY
  40. };
  41. enum cachestat_indexes {
  42. NETDATA_CACHESTAT_IDX_RATIO,
  43. NETDATA_CACHESTAT_IDX_DIRTY,
  44. NETDATA_CACHESTAT_IDX_HIT,
  45. NETDATA_CACHESTAT_IDX_MISS
  46. };
  47. enum cachestat_tables {
  48. NETDATA_CACHESTAT_GLOBAL_STATS,
  49. NETDATA_CACHESTAT_PID_STATS,
  50. NETDATA_CACHESTAT_CTRL
  51. };
  52. typedef struct netdata_publish_cachestat_pid {
  53. uint64_t add_to_page_cache_lru;
  54. uint64_t mark_page_accessed;
  55. uint64_t account_page_dirtied;
  56. uint64_t mark_buffer_dirty;
  57. } netdata_cachestat_pid_t;
  58. typedef struct netdata_publish_cachestat {
  59. long long ratio;
  60. long long dirty;
  61. long long hit;
  62. long long miss;
  63. netdata_cachestat_pid_t current;
  64. netdata_cachestat_pid_t prev;
  65. } netdata_publish_cachestat_t;
  66. extern void *ebpf_cachestat_thread(void *ptr);
  67. extern struct config cachestat_config;
  68. extern netdata_ebpf_targets_t cachestat_targets[];
  69. #endif // NETDATA_EBPF_CACHESTAT_H