This is an automated email from the ASF dual-hosted git repository. morningman pushed a commit to branch branch-hive-test in repository https://gitbox.apache.org/repos/asf/doris.git
commit cb29ad5708a7932e5b6e0760eb2d622a089cebe0 Author: Ashin Gau <ashin...@users.noreply.github.com> AuthorDate: Mon Jan 30 10:46:31 2023 +0800 [improvement](filecache) add profile for file cache (#16223) --- be/src/io/cache/block/block_file_cache_profile.h | 45 ++++++++++++++++++++++++ be/src/vec/exec/scan/vfile_scanner.cpp | 6 ++++ 2 files changed, 51 insertions(+) diff --git a/be/src/io/cache/block/block_file_cache_profile.h b/be/src/io/cache/block/block_file_cache_profile.h index 64ca4eee9b..dfbd026f6c 100644 --- a/be/src/io/cache/block/block_file_cache_profile.h +++ b/be/src/io/cache/block/block_file_cache_profile.h @@ -29,6 +29,7 @@ #include "olap/olap_common.h" #include "util/doris_metrics.h" #include "util/metrics.h" +#include "util/runtime_profile.h" namespace doris { namespace io { @@ -111,5 +112,49 @@ struct FileCacheProfile { FileCacheStatistics report(int64_t table_id, int64_t partition_id); }; +struct FileCacheProfileReporter { + RuntimeProfile::Counter* num_io_total; + RuntimeProfile::Counter* num_io_hit_cache; + RuntimeProfile::Counter* num_io_bytes_read_total; + RuntimeProfile::Counter* num_io_bytes_read_from_file_cache; + RuntimeProfile::Counter* num_io_bytes_read_from_write_cache; + RuntimeProfile::Counter* num_io_written_in_file_cache; + RuntimeProfile::Counter* num_io_bytes_written_in_file_cache; + RuntimeProfile::Counter* num_io_bytes_skip_cache; + + FileCacheProfileReporter(RuntimeProfile* profile) { + static const char* cache_profile = "FileCache"; + ADD_TIMER(profile, cache_profile); + num_io_total = ADD_CHILD_COUNTER(profile, "IOTotalNum", TUnit::UNIT, cache_profile); + num_io_hit_cache = ADD_CHILD_COUNTER(profile, "IOHitCacheNum", TUnit::UNIT, cache_profile); + num_io_bytes_read_total = + ADD_CHILD_COUNTER(profile, "ReadTotalBytes", TUnit::BYTES, cache_profile); + num_io_bytes_read_from_file_cache = + ADD_CHILD_COUNTER(profile, "ReadFromFileCacheBytes", TUnit::BYTES, cache_profile); + num_io_bytes_read_from_write_cache = + ADD_CHILD_COUNTER(profile, "ReadFromWriteCacheBytes", TUnit::BYTES, cache_profile); + num_io_written_in_file_cache = + ADD_CHILD_COUNTER(profile, "WriteInFileCacheNum", TUnit::UNIT, cache_profile); + num_io_bytes_written_in_file_cache = + ADD_CHILD_COUNTER(profile, "WriteInFileCacheBytes", TUnit::BYTES, cache_profile); + num_io_bytes_skip_cache = + ADD_CHILD_COUNTER(profile, "SkipCacheBytes", TUnit::BYTES, cache_profile); + } + + void update(FileCacheStatistics* statistics) { + COUNTER_UPDATE(num_io_total, statistics->num_io_total); + COUNTER_UPDATE(num_io_hit_cache, statistics->num_io_hit_cache); + COUNTER_UPDATE(num_io_bytes_read_total, statistics->num_io_bytes_read_total); + COUNTER_UPDATE(num_io_bytes_read_from_file_cache, + statistics->num_io_bytes_read_from_file_cache); + COUNTER_UPDATE(num_io_bytes_read_from_write_cache, + statistics->num_io_bytes_read_from_write_cache); + COUNTER_UPDATE(num_io_written_in_file_cache, statistics->num_io_written_in_file_cache); + COUNTER_UPDATE(num_io_bytes_written_in_file_cache, + statistics->num_io_bytes_written_in_file_cache); + COUNTER_UPDATE(num_io_bytes_skip_cache, statistics->num_io_bytes_skip_cache); + } +}; + } // namespace io } // namespace doris \ No newline at end of file diff --git a/be/src/vec/exec/scan/vfile_scanner.cpp b/be/src/vec/exec/scan/vfile_scanner.cpp index f78892fa0d..abebb723ab 100644 --- a/be/src/vec/exec/scan/vfile_scanner.cpp +++ b/be/src/vec/exec/scan/vfile_scanner.cpp @@ -25,6 +25,7 @@ #include "common/logging.h" #include "common/utils.h" #include "exec/text_converter.hpp" +#include "io/cache/block/block_file_cache_profile.h" #include "olap/iterators.h" #include "runtime/descriptors.h" #include "runtime/raw_value.h" @@ -752,6 +753,11 @@ Status VFileScanner::close(RuntimeState* state) { _push_down_expr->close(state); } + if (config::enable_file_cache) { + io::FileCacheProfileReporter cache_profile(_profile); + cache_profile.update(_file_cache_statistics.get()); + } + RETURN_IF_ERROR(VScanner::close(state)); return Status::OK(); } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org