event_loop.c 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. // SPDX-License-Identifier: GPL-3.0-or-later
  2. #include <daemon/main.h>
  3. #include "event_loop.h"
  4. // Register workers
  5. void register_libuv_worker_jobs() {
  6. static __thread bool registered = false;
  7. if(likely(registered))
  8. return;
  9. registered = true;
  10. worker_register("LIBUV");
  11. // generic
  12. worker_register_job_name(UV_EVENT_WORKER_INIT, "worker init");
  13. // query related
  14. worker_register_job_name(UV_EVENT_DBENGINE_QUERY, "query");
  15. worker_register_job_name(UV_EVENT_DBENGINE_EXTENT_CACHE_LOOKUP, "extent cache");
  16. worker_register_job_name(UV_EVENT_DBENGINE_EXTENT_MMAP, "extent mmap");
  17. worker_register_job_name(UV_EVENT_DBENGINE_EXTENT_DECOMPRESSION, "extent decompression");
  18. worker_register_job_name(UV_EVENT_DBENGINE_EXTENT_PAGE_LOOKUP, "page lookup");
  19. worker_register_job_name(UV_EVENT_DBENGINE_EXTENT_PAGE_POPULATION, "page populate");
  20. worker_register_job_name(UV_EVENT_DBENGINE_EXTENT_PAGE_ALLOCATION, "page allocate");
  21. // flushing related
  22. worker_register_job_name(UV_EVENT_DBENGINE_FLUSH_MAIN_CACHE, "flush main");
  23. worker_register_job_name(UV_EVENT_DBENGINE_EXTENT_WRITE, "extent write");
  24. worker_register_job_name(UV_EVENT_DBENGINE_FLUSHED_TO_OPEN, "flushed to open");
  25. // datafile full
  26. worker_register_job_name(UV_EVENT_DBENGINE_JOURNAL_INDEX_WAIT, "jv2 index wait");
  27. worker_register_job_name(UV_EVENT_DBENGINE_JOURNAL_INDEX, "jv2 indexing");
  28. // db rotation related
  29. worker_register_job_name(UV_EVENT_DBENGINE_DATAFILE_DELETE_WAIT, "datafile delete wait");
  30. worker_register_job_name(UV_EVENT_DBENGINE_DATAFILE_DELETE, "datafile deletion");
  31. worker_register_job_name(UV_EVENT_DBENGINE_FIND_ROTATED_METRICS, "find rotated metrics");
  32. worker_register_job_name(UV_EVENT_DBENGINE_FIND_REMAINING_RETENTION, "find remaining retention");
  33. worker_register_job_name(UV_EVENT_DBENGINE_POPULATE_MRG, "update retention");
  34. // other dbengine events
  35. worker_register_job_name(UV_EVENT_DBENGINE_EVICT_MAIN_CACHE, "evict main");
  36. worker_register_job_name(UV_EVENT_DBENGINE_BUFFERS_CLEANUP, "dbengine buffers cleanup");
  37. worker_register_job_name(UV_EVENT_DBENGINE_QUIESCE, "dbengine quiesce");
  38. worker_register_job_name(UV_EVENT_DBENGINE_SHUTDOWN, "dbengine shutdown");
  39. // metadata
  40. worker_register_job_name(UV_EVENT_HOST_CONTEXT_LOAD, "metadata load host context");
  41. worker_register_job_name(UV_EVENT_METADATA_STORE, "metadata store host");
  42. worker_register_job_name(UV_EVENT_METADATA_CLEANUP, "metadata cleanup");
  43. // netdatacli
  44. worker_register_job_name(UV_EVENT_SCHEDULE_CMD, "schedule command");
  45. static int workers = 0;
  46. int worker_id = __atomic_add_fetch(&workers, 1, __ATOMIC_RELAXED);
  47. char buf[NETDATA_THREAD_TAG_MAX + 1];
  48. snprintfz(buf, NETDATA_THREAD_TAG_MAX, "UV_WORKER[%d]", worker_id);
  49. uv_thread_set_name_np(pthread_self(), buf);
  50. }