thread_status_util_debug.cc 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. // Copyright (c) 2011-present, Facebook, Inc. All rights reserved.
  2. // This source code is licensed under both the GPLv2 (found in the
  3. // COPYING file in the root directory) and Apache 2.0 License
  4. // (found in the LICENSE.Apache file in the root directory).
  5. #include <atomic>
  6. #include "monitoring/thread_status_updater.h"
  7. #include "monitoring/thread_status_util.h"
  8. #include "rocksdb/system_clock.h"
  9. namespace ROCKSDB_NAMESPACE {
  10. #ifndef NDEBUG
  11. // the delay for debugging purpose.
  12. static std::atomic<int> states_delay[ThreadStatus::NUM_STATE_TYPES];
  13. void ThreadStatusUtil::TEST_SetStateDelay(const ThreadStatus::StateType state,
  14. int micro) {
  15. states_delay[state].store(micro, std::memory_order_relaxed);
  16. }
  17. void ThreadStatusUtil::TEST_StateDelay(const ThreadStatus::StateType state) {
  18. auto delay = states_delay[state].load(std::memory_order_relaxed);
  19. if (delay > 0) {
  20. SystemClock::Default()->SleepForMicroseconds(delay);
  21. }
  22. }
  23. Env::IOActivity ThreadStatusUtil::TEST_GetExpectedIOActivity(
  24. ThreadStatus::OperationType thread_op) {
  25. switch (thread_op) {
  26. case ThreadStatus::OperationType::OP_FLUSH:
  27. return Env::IOActivity::kFlush;
  28. case ThreadStatus::OperationType::OP_COMPACTION:
  29. return Env::IOActivity::kCompaction;
  30. case ThreadStatus::OperationType::OP_DBOPEN:
  31. return Env::IOActivity::kDBOpen;
  32. case ThreadStatus::OperationType::OP_GET:
  33. return Env::IOActivity::kGet;
  34. case ThreadStatus::OperationType::OP_MULTIGET:
  35. return Env::IOActivity::kMultiGet;
  36. case ThreadStatus::OperationType::OP_DBITERATOR:
  37. return Env::IOActivity::kDBIterator;
  38. case ThreadStatus::OperationType::OP_VERIFY_DB_CHECKSUM:
  39. return Env::IOActivity::kVerifyDBChecksum;
  40. case ThreadStatus::OperationType::OP_VERIFY_FILE_CHECKSUMS:
  41. return Env::IOActivity::kVerifyFileChecksums;
  42. case ThreadStatus::OperationType::OP_GETENTITY:
  43. return Env::IOActivity::kGetEntity;
  44. case ThreadStatus::OperationType::OP_MULTIGETENTITY:
  45. return Env::IOActivity::kMultiGetEntity;
  46. case ThreadStatus::OperationType::
  47. OP_GET_FILE_CHECKSUMS_FROM_CURRENT_MANIFEST:
  48. return Env::IOActivity::kGetFileChecksumsFromCurrentManifest;
  49. default:
  50. return Env::IOActivity::kUnknown;
  51. }
  52. }
  53. #endif // !NDEBUG
  54. } // namespace ROCKSDB_NAMESPACE