summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKlaus Aehlig <klaus.aehlig@huawei.com>2022-08-22 10:36:41 +0200
committerKlaus Aehlig <klaus.aehlig@huawei.com>2022-08-23 10:18:41 +0200
commitbc9fa36c65183a0b8e14b37c9aa2e07ce768463e (patch)
tree0e279147f1c993aba2596c6c316467dcfa0a2dcd
parent1e8066caaa711b9ab9f76b25873327779924fda6 (diff)
downloadjustbuild-bc9fa36c65183a0b8e14b37c9aa2e07ce768463e.tar.gz
Track tree references that have to be expanded
... as this is relevant for performance of analysis. We log the total numer of trees at performance level and the individual directories at debug level, if requested.
-rw-r--r--src/buildtool/build_engine/target_map/TARGETS1
-rw-r--r--src/buildtool/build_engine/target_map/result_map.hpp7
-rw-r--r--src/buildtool/build_engine/target_map/target_map.cpp8
-rw-r--r--src/buildtool/common/statistics.hpp6
4 files changed, 22 insertions, 0 deletions
diff --git a/src/buildtool/build_engine/target_map/TARGETS b/src/buildtool/build_engine/target_map/TARGETS
index e57a8c3b..2b201fbf 100644
--- a/src/buildtool/build_engine/target_map/TARGETS
+++ b/src/buildtool/build_engine/target_map/TARGETS
@@ -46,6 +46,7 @@
, ["src/buildtool/build_engine/base_maps", "targets_file_map"]
, ["src/buildtool/build_engine/expression", "expression"]
, ["src/buildtool/execution_api/local", "local"]
+ , ["src/buildtool/logging", "logging"]
, ["src/buildtool/multithreading", "async_map_consumer"]
, ["src/utils/cpp", "hash_combine"]
, ["src/utils/cpp", "path"]
diff --git a/src/buildtool/build_engine/target_map/result_map.hpp b/src/buildtool/build_engine/target_map/result_map.hpp
index ca55ee74..846a381e 100644
--- a/src/buildtool/build_engine/target_map/result_map.hpp
+++ b/src/buildtool/build_engine/target_map/result_map.hpp
@@ -16,6 +16,7 @@
#include "src/buildtool/build_engine/expression/expression.hpp"
#include "src/buildtool/build_engine/target_map/configured_target.hpp"
#include "src/buildtool/build_engine/target_map/target_cache.hpp"
+#include "src/buildtool/common/statistics.hpp"
#include "src/buildtool/common/tree.hpp"
#include "src/buildtool/logging/logger.hpp"
#include "src/buildtool/multithreading/task.hpp"
@@ -252,6 +253,12 @@ class ResultTargetMap {
});
result.actions.erase(lastaction, result.actions.end());
+ int trees_traversed = Statistics::Instance().TreesAnalysedCounter();
+ if (trees_traversed > 0) {
+ Logger::Log(LogLevel::Performance,
+ "Analysed {} non-known source trees",
+ trees_traversed);
+ }
Logger::Log(LogLevel::Info,
"Discovered {} actions, {} trees, {} blobs",
result.actions.size(),
diff --git a/src/buildtool/build_engine/target_map/target_map.cpp b/src/buildtool/build_engine/target_map/target_map.cpp
index 66e1ec73..8005a032 100644
--- a/src/buildtool/build_engine/target_map/target_map.cpp
+++ b/src/buildtool/build_engine/target_map/target_map.cpp
@@ -16,6 +16,8 @@
#include "src/buildtool/build_engine/expression/function_map.hpp"
#include "src/buildtool/build_engine/target_map/built_in_rules.hpp"
#include "src/buildtool/build_engine/target_map/utils.hpp"
+#include "src/buildtool/common/statistics.hpp"
+#include "src/buildtool/logging/logger.hpp"
#include "src/utils/cpp/path.hpp"
#include "src/utils/cpp/vector.hpp"
@@ -1342,6 +1344,12 @@ void TreeTarget(
(*setter)(std::move(analysis_result));
return;
}
+ Logger::Log(LogLevel::Debug, [&key]() {
+ return fmt::format(
+ "Source tree reference for non-known tree {}",
+ key.target.ToString());
+ });
+ Statistics::Instance().IncrementTreesAnalysedCounter();
using BuildMaps::Target::ConfiguredTarget;
diff --git a/src/buildtool/common/statistics.hpp b/src/buildtool/common/statistics.hpp
index e34ccd03..071fc199 100644
--- a/src/buildtool/common/statistics.hpp
+++ b/src/buildtool/common/statistics.hpp
@@ -18,6 +18,7 @@ class Statistics {
num_actions_flaky_tainted_ = 0;
num_rebuilt_actions_compared_ = 0;
num_rebuilt_actions_missing_ = 0;
+ num_trees_analysed_ = 0;
}
void IncrementActionsQueuedCounter() noexcept { ++num_actions_queued_; }
void IncrementActionsExecutedCounter() noexcept { ++num_actions_executed_; }
@@ -37,6 +38,7 @@ class Statistics {
void IncrementExportsNotEligibleCounter() noexcept {
++num_exports_not_eligible_;
}
+ void IncrementTreesAnalysedCounter() noexcept { ++num_trees_analysed_; }
[[nodiscard]] auto ActionsQueuedCounter() const noexcept -> int {
return num_actions_queued_;
}
@@ -67,6 +69,9 @@ class Statistics {
[[nodiscard]] auto ExportsNotEligibleCounter() const noexcept -> int {
return num_exports_not_eligible_;
}
+ [[nodiscard]] auto TreesAnalysedCounter() const noexcept -> int {
+ return num_trees_analysed_;
+ }
private:
std::atomic<int> num_actions_queued_{};
@@ -79,6 +84,7 @@ class Statistics {
std::atomic<int> num_exports_cached_{};
std::atomic<int> num_exports_uncached_{};
std::atomic<int> num_exports_not_eligible_{};
+ std::atomic<int> num_trees_analysed_{};
};
#endif // INCLUDED_SRC_BUILDTOOL_COMMON_STATISTICS_HPP