ebpf_cachestat.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. // SPDX-License-Identifier: GPL-3.0-or-later
  2. #ifndef NETDATA_EBPF_CACHESTAT_H
  3. #define NETDATA_EBPF_CACHESTAT_H 1
  4. // charts
  5. #define NETDATA_CACHESTAT_HIT_RATIO_CHART "cachestat_ratio"
  6. #define NETDATA_CACHESTAT_DIRTY_CHART "cachestat_dirties"
  7. #define NETDATA_CACHESTAT_HIT_CHART "cachestat_hits"
  8. #define NETDATA_CACHESTAT_MISSES_CHART "cachestat_misses"
  9. #define NETDATA_CACHESTAT_SUBMENU "page cache (eBPF)"
  10. #define EBPF_CACHESTAT_DIMENSION_PAGE "pages/s"
  11. #define EBPF_CACHESTAT_DIMENSION_HITS "hits/s"
  12. #define EBPF_CACHESTAT_DIMENSION_MISSES "misses/s"
  13. #define NETDATA_LATENCY_CACHESTAT_SLEEP_MS 600000ULL
  14. // configuration file
  15. #define NETDATA_CACHESTAT_CONFIG_FILE "cachestat.conf"
  16. // variables
  17. enum cachestat_counters {
  18. NETDATA_KEY_CALLS_ADD_TO_PAGE_CACHE_LRU,
  19. NETDATA_KEY_CALLS_MARK_PAGE_ACCESSED,
  20. NETDATA_KEY_CALLS_ACCOUNT_PAGE_DIRTIED,
  21. NETDATA_KEY_CALLS_MARK_BUFFER_DIRTY,
  22. NETDATA_CACHESTAT_END
  23. };
  24. enum cachestat_indexes {
  25. NETDATA_CACHESTAT_IDX_RATIO,
  26. NETDATA_CACHESTAT_IDX_DIRTY,
  27. NETDATA_CACHESTAT_IDX_HIT,
  28. NETDATA_CACHESTAT_IDX_MISS
  29. };
  30. enum cachesta_tables {
  31. NETDATA_CACHESTAT_GLOBAL_STATS,
  32. NETDATA_CACHESTAT_PID_STATS
  33. };
  34. typedef struct netdata_publish_cachestat_pid {
  35. uint64_t add_to_page_cache_lru;
  36. uint64_t mark_page_accessed;
  37. uint64_t account_page_dirtied;
  38. uint64_t mark_buffer_dirty;
  39. } netdata_cachestat_pid_t;
  40. typedef struct netdata_publish_cachestat {
  41. long long ratio;
  42. long long dirty;
  43. long long hit;
  44. long long miss;
  45. netdata_cachestat_pid_t current;
  46. netdata_cachestat_pid_t prev;
  47. } netdata_publish_cachestat_t;
  48. extern void *ebpf_cachestat_thread(void *ptr);
  49. #endif // NETDATA_EBPF_CACHESTAT_H