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
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
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits