[PATCH] D88415: [clangd] Introduce memory usage dumping to TUScheduler, for Preambles and ASTCache
Kadir Cetinkaya via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Oct 7 08:31:13 PDT 2020
kadircet updated this revision to Diff 296691.
kadircet marked 3 inline comments as done.
kadircet added a comment.
- Rename attachMemoryUsage to profile
- Group by filename, rather than ast_cache vs preamble
- Make use of UsedBytesAST rather than profiling IdleASTs
- Rebase
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D88415/new/
https://reviews.llvm.org/D88415
Files:
clang-tools-extra/clangd/TUScheduler.cpp
clang-tools-extra/clangd/TUScheduler.h
clang-tools-extra/clangd/unittests/ClangdTests.cpp
Index: clang-tools-extra/clangd/unittests/ClangdTests.cpp
===================================================================
--- clang-tools-extra/clangd/unittests/ClangdTests.cpp
+++ clang-tools-extra/clangd/unittests/ClangdTests.cpp
@@ -565,7 +565,9 @@
}
MATCHER_P4(Stats, Name, UsesMemory, PreambleBuilds, ASTBuilds, "") {
- return arg.first() == Name && (arg.second.UsedBytes != 0) == UsesMemory &&
+ return arg.first() == Name &&
+ (arg.second.UsedBytesAST + arg.second.UsedBytesPreamble != 0) ==
+ UsesMemory &&
std::tie(arg.second.PreambleBuilds, ASTBuilds) ==
std::tie(PreambleBuilds, ASTBuilds);
}
Index: clang-tools-extra/clangd/TUScheduler.h
===================================================================
--- clang-tools-extra/clangd/TUScheduler.h
+++ clang-tools-extra/clangd/TUScheduler.h
@@ -14,6 +14,7 @@
#include "GlobalCompilationDatabase.h"
#include "index/CanonicalIncludes.h"
#include "support/Function.h"
+#include "support/MemoryTree.h"
#include "support/Path.h"
#include "support/Threading.h"
#include "llvm/ADT/Optional.h"
@@ -207,7 +208,8 @@
~TUScheduler();
struct FileStats {
- std::size_t UsedBytes = 0;
+ std::size_t UsedBytesAST = 0;
+ std::size_t UsedBytesPreamble = 0;
unsigned PreambleBuilds = 0;
unsigned ASTBuilds = 0;
};
@@ -311,6 +313,8 @@
// FIXME: move to ClangdServer via createProcessingContext.
static llvm::Optional<llvm::StringRef> getFileBeingProcessedInContext();
+ void profile(MemoryTree &MT) const;
+
private:
const GlobalCompilationDatabase &CDB;
Options Opts;
Index: clang-tools-extra/clangd/TUScheduler.cpp
===================================================================
--- clang-tools-extra/clangd/TUScheduler.cpp
+++ clang-tools-extra/clangd/TUScheduler.cpp
@@ -56,6 +56,7 @@
#include "support/Cancellation.h"
#include "support/Context.h"
#include "support/Logger.h"
+#include "support/MemoryTree.h"
#include "support/Path.h"
#include "support/Threading.h"
#include "support/Trace.h"
@@ -932,9 +933,9 @@
// Note that we don't report the size of ASTs currently used for processing
// the in-flight requests. We used this information for debugging purposes
// only, so this should be fine.
- Result.UsedBytes = IdleASTs.getUsedBytes(this);
+ Result.UsedBytesAST = IdleASTs.getUsedBytes(this);
if (auto Preamble = getPossiblyStalePreamble())
- Result.UsedBytes += Preamble->Preamble.getSize();
+ Result.UsedBytesPreamble = Preamble->Preamble.getSize();
return Result;
}
@@ -1429,5 +1430,14 @@
return P;
}
+void TUScheduler::profile(MemoryTree &MT) const {
+ for (const auto &Elem : fileStats()) {
+ MT.detail(Elem.first())
+ .child("preamble")
+ .addUsage(Opts.StorePreamblesInMemory ? Elem.second.UsedBytesPreamble
+ : 0);
+ MT.detail(Elem.first()).child("ast").addUsage(Elem.second.UsedBytesAST);
+ }
+}
} // namespace clangd
} // namespace clang
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D88415.296691.patch
Type: text/x-patch
Size: 3020 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20201007/23c4a5be/attachment.bin>
More information about the cfe-commits
mailing list