summaryrefslogtreecommitdiffstats
path: root/eval
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2023-10-18 15:09:42 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2023-10-18 15:52:30 +0000
commitb2fc6977048321196ff320f6af744616d73a0615 (patch)
treeb8523cf5b7b5045772df656a9157897abcdc5f15 /eval
parent24f8d5ab63a193aeb6660eafb83a22956a679a75 (diff)
Report peak memory usage.
Diffstat (limited to 'eval')
-rw-r--r--eval/src/apps/analyze_onnx_model/CMakeLists.txt2
-rw-r--r--eval/src/apps/analyze_onnx_model/analyze_onnx_model.cpp17
2 files changed, 9 insertions, 10 deletions
diff --git a/eval/src/apps/analyze_onnx_model/CMakeLists.txt b/eval/src/apps/analyze_onnx_model/CMakeLists.txt
index a8f984550f9..6ab7a17e109 100644
--- a/eval/src/apps/analyze_onnx_model/CMakeLists.txt
+++ b/eval/src/apps/analyze_onnx_model/CMakeLists.txt
@@ -6,4 +6,6 @@ vespa_add_executable(eval_analyze_onnx_model_app
INSTALL bin
DEPENDS
vespaeval
+ EXTERNAL_DEPENDS
+ dl
)
diff --git a/eval/src/apps/analyze_onnx_model/analyze_onnx_model.cpp b/eval/src/apps/analyze_onnx_model/analyze_onnx_model.cpp
index 2358a6c263e..1fdc6fe79f0 100644
--- a/eval/src/apps/analyze_onnx_model/analyze_onnx_model.cpp
+++ b/eval/src/apps/analyze_onnx_model/analyze_onnx_model.cpp
@@ -10,6 +10,8 @@
#include <vespa/vespalib/util/guard.h>
#include <vespa/vespalib/util/stringfmt.h>
#include <charconv>
+#include <malloc.h>
+#include <dlfcn.h>
using vespalib::make_string_short::fmt;
@@ -75,17 +77,12 @@ size_t convert(const vespalib::string & s) {
}
MemoryUsage extract_memory_usage() {
- vespalib::string vm_size = UNKNOWN;
- vespalib::string vm_rss = UNKNOWN;
- FilePointer file(fopen("/proc/self/status", "r"));
- if (file.valid()) {
- vespalib::string line;
- while (read_line(file, line)) {
- extract(line, "VmSize:", vm_size);
- extract(line, "VmRSS:", vm_rss);
- }
+ struct mallinfo info = mallinfo();
+ if (dlsym(RTLD_NEXT, "is_vespamalloc") != nullptr) {
+ return {size_t(info.usmblks) << 20, size_t(info.arena + info.hblkhd) << 20};
+ } else {
+ return {size_t(info.usmblks), size_t(info.arena + info.hblkhd)};
}
- return {convert(vm_size), convert(vm_rss)};
}
void report_memory_usage(const vespalib::string &desc) {