| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- // Copyright (c) 2011-present, Facebook, Inc. All rights reserved.
- // This source code is licensed under both the GPLv2 (found in the
- // COPYING file in the root directory) and Apache 2.0 License
- // (found in the LICENSE.Apache file in the root directory).
- //
- // This file defines the structures for thread operation and state.
- // Thread operations are used to describe high level action of a
- // thread such as doing compaction or flush, while thread state
- // are used to describe lower-level action such as reading /
- // writing a file or waiting for a mutex. Operations and states
- // are designed to be independent. Typically, a thread usually involves
- // in one operation and one state at any specific point in time.
- #pragma once
- #include "rocksdb/thread_status.h"
- #include <string>
- namespace ROCKSDB_NAMESPACE {
- #ifdef ROCKSDB_USING_THREAD_STATUS
- // The structure that describes a major thread operation.
- struct OperationInfo {
- const ThreadStatus::OperationType type;
- const std::string name;
- };
- // The global operation table.
- //
- // When updating a status of a thread, the pointer of the OperationInfo
- // of the current ThreadStatusData will be pointing to one of the
- // rows in this global table.
- //
- // Note that it's not designed to be constant as in the future we
- // might consider adding global count to the OperationInfo.
- static OperationInfo global_operation_table[] = {
- {ThreadStatus::OP_UNKNOWN, ""},
- {ThreadStatus::OP_COMPACTION, "Compaction"},
- {ThreadStatus::OP_FLUSH, "Flush"}
- };
- struct OperationStageInfo {
- const ThreadStatus::OperationStage stage;
- const std::string name;
- };
- // A table maintains the mapping from stage type to stage string.
- // Note that the string must be changed accordingly when the
- // associated function name changed.
- static OperationStageInfo global_op_stage_table[] = {
- {ThreadStatus::STAGE_UNKNOWN, ""},
- {ThreadStatus::STAGE_FLUSH_RUN,
- "FlushJob::Run"},
- {ThreadStatus::STAGE_FLUSH_WRITE_L0,
- "FlushJob::WriteLevel0Table"},
- {ThreadStatus::STAGE_COMPACTION_PREPARE,
- "CompactionJob::Prepare"},
- {ThreadStatus::STAGE_COMPACTION_RUN,
- "CompactionJob::Run"},
- {ThreadStatus::STAGE_COMPACTION_PROCESS_KV,
- "CompactionJob::ProcessKeyValueCompaction"},
- {ThreadStatus::STAGE_COMPACTION_INSTALL,
- "CompactionJob::Install"},
- {ThreadStatus::STAGE_COMPACTION_SYNC_FILE,
- "CompactionJob::FinishCompactionOutputFile"},
- {ThreadStatus::STAGE_PICK_MEMTABLES_TO_FLUSH,
- "MemTableList::PickMemtablesToFlush"},
- {ThreadStatus::STAGE_MEMTABLE_ROLLBACK,
- "MemTableList::RollbackMemtableFlush"},
- {ThreadStatus::STAGE_MEMTABLE_INSTALL_FLUSH_RESULTS,
- "MemTableList::TryInstallMemtableFlushResults"},
- };
- // The structure that describes a state.
- struct StateInfo {
- const ThreadStatus::StateType type;
- const std::string name;
- };
- // The global state table.
- //
- // When updating a status of a thread, the pointer of the StateInfo
- // of the current ThreadStatusData will be pointing to one of the
- // rows in this global table.
- static StateInfo global_state_table[] = {
- {ThreadStatus::STATE_UNKNOWN, ""},
- {ThreadStatus::STATE_MUTEX_WAIT, "Mutex Wait"},
- };
- struct OperationProperty {
- int code;
- std::string name;
- };
- static OperationProperty compaction_operation_properties[] = {
- {ThreadStatus::COMPACTION_JOB_ID, "JobID"},
- {ThreadStatus::COMPACTION_INPUT_OUTPUT_LEVEL, "InputOutputLevel"},
- {ThreadStatus::COMPACTION_PROP_FLAGS, "Manual/Deletion/Trivial"},
- {ThreadStatus::COMPACTION_TOTAL_INPUT_BYTES, "TotalInputBytes"},
- {ThreadStatus::COMPACTION_BYTES_READ, "BytesRead"},
- {ThreadStatus::COMPACTION_BYTES_WRITTEN, "BytesWritten"},
- };
- static OperationProperty flush_operation_properties[] = {
- {ThreadStatus::FLUSH_JOB_ID, "JobID"},
- {ThreadStatus::FLUSH_BYTES_MEMTABLES, "BytesMemtables"},
- {ThreadStatus::FLUSH_BYTES_WRITTEN, "BytesWritten"}
- };
- #else
- struct OperationInfo {
- };
- struct StateInfo {
- };
- #endif // ROCKSDB_USING_THREAD_STATUS
- } // namespace ROCKSDB_NAMESPACE
|