| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- // 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).
- #include <sstream>
- #include "monitoring/iostats_context_imp.h"
- #include "rocksdb/env.h"
- namespace ROCKSDB_NAMESPACE {
- #ifdef ROCKSDB_SUPPORT_THREAD_LOCAL
- __thread IOStatsContext iostats_context;
- #endif
- IOStatsContext* get_iostats_context() {
- #ifdef ROCKSDB_SUPPORT_THREAD_LOCAL
- return &iostats_context;
- #else
- return nullptr;
- #endif
- }
- void IOStatsContext::Reset() {
- thread_pool_id = Env::Priority::TOTAL;
- bytes_read = 0;
- bytes_written = 0;
- open_nanos = 0;
- allocate_nanos = 0;
- write_nanos = 0;
- read_nanos = 0;
- range_sync_nanos = 0;
- prepare_write_nanos = 0;
- fsync_nanos = 0;
- logger_nanos = 0;
- }
- #define IOSTATS_CONTEXT_OUTPUT(counter) \
- if (!exclude_zero_counters || counter > 0) { \
- ss << #counter << " = " << counter << ", "; \
- }
- std::string IOStatsContext::ToString(bool exclude_zero_counters) const {
- std::ostringstream ss;
- IOSTATS_CONTEXT_OUTPUT(thread_pool_id);
- IOSTATS_CONTEXT_OUTPUT(bytes_read);
- IOSTATS_CONTEXT_OUTPUT(bytes_written);
- IOSTATS_CONTEXT_OUTPUT(open_nanos);
- IOSTATS_CONTEXT_OUTPUT(allocate_nanos);
- IOSTATS_CONTEXT_OUTPUT(write_nanos);
- IOSTATS_CONTEXT_OUTPUT(read_nanos);
- IOSTATS_CONTEXT_OUTPUT(range_sync_nanos);
- IOSTATS_CONTEXT_OUTPUT(fsync_nanos);
- IOSTATS_CONTEXT_OUTPUT(prepare_write_nanos);
- IOSTATS_CONTEXT_OUTPUT(logger_nanos);
- std::string str = ss.str();
- str.erase(str.find_last_not_of(", ") + 1);
- return str;
- }
- } // namespace ROCKSDB_NAMESPACE
|