|
20 | 20 | #include "test_util/sync_point.h"
|
21 | 21 | #include "util/random.h"
|
22 | 22 | #include "util/rate_limiter.h"
|
| 23 | +#include "util/thread_io_activity.h" |
23 | 24 |
|
24 | 25 | namespace ROCKSDB_NAMESPACE {
|
25 |
| - |
| 26 | +const std::array<Histograms, std::size_t(Env::IOActivity::kUnknown)> |
| 27 | + kReadHistograms{{ |
| 28 | + SST_READ_FLUSH_MICROS, |
| 29 | + SST_READ_COMPACTION_MICROS, |
| 30 | + }}; |
26 | 31 | inline void RecordIOStats(Statistics* stats, Temperature file_temperature,
|
27 | 32 | bool is_last_level, size_t size) {
|
28 | 33 | IOSTATS_ADD(bytes_read, size);
|
@@ -94,6 +99,9 @@ IOStatus RandomAccessFileReader::Read(
|
94 | 99 | uint64_t elapsed = 0;
|
95 | 100 | {
|
96 | 101 | StopWatch sw(clock_, stats_, hist_type_,
|
| 102 | + (opts.io_activity != Env::IOActivity::kUnknown) |
| 103 | + ? kReadHistograms[(std::size_t)(opts.io_activity)] |
| 104 | + : Histograms::HISTOGRAM_ENUM_MAX, |
97 | 105 | (stats_ != nullptr) ? &elapsed : nullptr, true /*overwrite*/,
|
98 | 106 | true /*delay_enabled*/);
|
99 | 107 | auto prev_perf_level = GetPerfLevel();
|
@@ -288,6 +296,9 @@ IOStatus RandomAccessFileReader::MultiRead(
|
288 | 296 | uint64_t elapsed = 0;
|
289 | 297 | {
|
290 | 298 | StopWatch sw(clock_, stats_, hist_type_,
|
| 299 | + (opts.io_activity != Env::IOActivity::kUnknown) |
| 300 | + ? kReadHistograms[(std::size_t)(opts.io_activity)] |
| 301 | + : Histograms::HISTOGRAM_ENUM_MAX, |
291 | 302 | (stats_ != nullptr) ? &elapsed : nullptr, true /*overwrite*/,
|
292 | 303 | true /*delay_enabled*/);
|
293 | 304 | auto prev_perf_level = GetPerfLevel();
|
@@ -476,13 +487,15 @@ IOStatus RandomAccessFileReader::ReadAsync(
|
476 | 487 |
|
477 | 488 | assert(read_async_info->buf_.CurrentSize() == 0);
|
478 | 489 |
|
479 |
| - StopWatch sw(clock_, nullptr /*stats*/, 0 /*hist_type*/, &elapsed, |
480 |
| - true /*overwrite*/, true /*delay_enabled*/); |
| 490 | + StopWatch sw(clock_, nullptr /*stats*/, 0 /*hist_type*/, |
| 491 | + Histograms::HISTOGRAM_ENUM_MAX, &elapsed, true /*overwrite*/, |
| 492 | + true /*delay_enabled*/); |
481 | 493 | s = file_->ReadAsync(aligned_req, opts, read_async_callback,
|
482 | 494 | read_async_info, io_handle, del_fn, nullptr /*dbg*/);
|
483 | 495 | } else {
|
484 |
| - StopWatch sw(clock_, nullptr /*stats*/, 0 /*hist_type*/, &elapsed, |
485 |
| - true /*overwrite*/, true /*delay_enabled*/); |
| 496 | + StopWatch sw(clock_, nullptr /*stats*/, 0 /*hist_type*/, |
| 497 | + Histograms::HISTOGRAM_ENUM_MAX, &elapsed, true /*overwrite*/, |
| 498 | + true /*delay_enabled*/); |
486 | 499 | s = file_->ReadAsync(req, opts, read_async_callback, read_async_info,
|
487 | 500 | io_handle, del_fn, nullptr /*dbg*/);
|
488 | 501 | }
|
|
0 commit comments