ebpf_cachestat.h 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  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 & description
  5. #define NETDATA_EBPF_MODULE_NAME_CACHESTAT "cachestat"
  6. #define NETDATA_EBPF_CACHESTAT_MODULE_DESC "Monitor Linux page cache internal functions. This thread is integrated with apps and cgroup."
  7. // charts
  8. #define NETDATA_CACHESTAT_HIT_RATIO_CHART "cachestat_ratio"
  9. #define NETDATA_CACHESTAT_DIRTY_CHART "cachestat_dirties"
  10. #define NETDATA_CACHESTAT_HIT_CHART "cachestat_hits"
  11. #define NETDATA_CACHESTAT_MISSES_CHART "cachestat_misses"
  12. #define NETDATA_CACHESTAT_SUBMENU "page_cache"
  13. #define NETDATA_CACHESTAT_CGROUP_SUBMENU "page cache (eBPF)"
  14. #define EBPF_CACHESTAT_DIMENSION_PAGE "pages/s"
  15. #define EBPF_CACHESTAT_DIMENSION_HITS "hits/s"
  16. #define EBPF_CACHESTAT_DIMENSION_MISSES "misses/s"
  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. // ARAL Name
  29. #define NETDATA_EBPF_CACHESTAT_ARAL_NAME "ebpf_cachestat"
  30. // variables
  31. enum cachestat_counters {
  32. NETDATA_KEY_CALLS_ADD_TO_PAGE_CACHE_LRU,
  33. NETDATA_KEY_CALLS_MARK_PAGE_ACCESSED,
  34. NETDATA_KEY_CALLS_ACCOUNT_PAGE_DIRTIED,
  35. NETDATA_KEY_CALLS_MARK_BUFFER_DIRTY,
  36. NETDATA_CACHESTAT_END
  37. };
  38. enum cachestat_account_dirty_pages {
  39. NETDATA_CACHESTAT_ACCOUNT_PAGE_DIRTY,
  40. NETDATA_CACHESTAT_SET_PAGE_DIRTY,
  41. NETDATA_CACHESTAT_FOLIO_DIRTY,
  42. NETDATA_CACHESTAT_ACCOUNT_DIRTY_END
  43. };
  44. enum cachestat_indexes {
  45. NETDATA_CACHESTAT_IDX_RATIO,
  46. NETDATA_CACHESTAT_IDX_DIRTY,
  47. NETDATA_CACHESTAT_IDX_HIT,
  48. NETDATA_CACHESTAT_IDX_MISS
  49. };
  50. enum cachestat_tables {
  51. NETDATA_CACHESTAT_GLOBAL_STATS,
  52. NETDATA_CACHESTAT_PID_STATS,
  53. NETDATA_CACHESTAT_CTRL
  54. };
  55. typedef struct netdata_publish_cachestat_pid {
  56. uint64_t add_to_page_cache_lru;
  57. uint64_t mark_page_accessed;
  58. uint64_t account_page_dirtied;
  59. uint64_t mark_buffer_dirty;
  60. } netdata_cachestat_pid_t;
  61. typedef struct netdata_publish_cachestat {
  62. long long ratio;
  63. long long dirty;
  64. long long hit;
  65. long long miss;
  66. netdata_cachestat_pid_t current;
  67. netdata_cachestat_pid_t prev;
  68. } netdata_publish_cachestat_t;
  69. void *ebpf_cachestat_thread(void *ptr);
  70. void ebpf_cachestat_release(netdata_publish_cachestat_t *stat);
  71. extern struct config cachestat_config;
  72. extern netdata_ebpf_targets_t cachestat_targets[];
  73. extern ebpf_local_maps_t cachestat_maps[];
  74. #endif // NETDATA_EBPF_CACHESTAT_H