aboutsummaryrefslogtreecommitdiff
path: root/databases/clickhouse/files/patch-src_Common_MemoryStatisticsOS.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'databases/clickhouse/files/patch-src_Common_MemoryStatisticsOS.cpp')
-rw-r--r--databases/clickhouse/files/patch-src_Common_MemoryStatisticsOS.cpp116
1 files changed, 0 insertions, 116 deletions
diff --git a/databases/clickhouse/files/patch-src_Common_MemoryStatisticsOS.cpp b/databases/clickhouse/files/patch-src_Common_MemoryStatisticsOS.cpp
deleted file mode 100644
index b5a3d52c9114..000000000000
--- a/databases/clickhouse/files/patch-src_Common_MemoryStatisticsOS.cpp
+++ /dev/null
@@ -1,116 +0,0 @@
---- src/Common/MemoryStatisticsOS.cpp.orig 2021-12-26 09:29:33 UTC
-+++ src/Common/MemoryStatisticsOS.cpp
-@@ -1,4 +1,4 @@
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_FREEBSD)
-
- #include <sys/types.h>
- #include <sys/stat.h>
-@@ -6,6 +6,13 @@
- #include <unistd.h>
- #include <cassert>
-
-+#ifdef OS_FREEBSD
-+#include <sys/param.h>
-+#include <sys/sysctl.h>
-+#include <sys/user.h>
-+#include <libprocstat.h>
-+#endif
-+
- #include "MemoryStatisticsOS.h"
-
- #include <base/logger_useful.h>
-@@ -24,20 +31,40 @@ namespace ErrorCodes
- extern const int CANNOT_OPEN_FILE;
- extern const int CANNOT_READ_FROM_FILE_DESCRIPTOR;
- extern const int CANNOT_CLOSE_FILE;
-+#ifdef OS_FREEBSD
-+ extern const int CANNOT_ALLOCATE_MEMORY;
-+#endif
- }
-
--static constexpr auto filename = "/proc/self/statm";
-+#ifndef OS_FREEBSD
-+ static constexpr auto filename = "/proc/self/statm";
-+ static constexpr size_t PAGE_SIZE = 4096;
-+#endif
-
- MemoryStatisticsOS::MemoryStatisticsOS()
- {
-+#ifdef OS_FREEBSD
-+ pstat = ::procstat_open_sysctl();
-+ if (NULL == pstat)
-+ {
-+ throwFromErrno("Cannot open sysctl", ErrorCodes::CANNOT_ALLOCATE_MEMORY);
-+ }
-+#else
- fd = ::open(filename, O_RDONLY | O_CLOEXEC);
-
- if (-1 == fd)
- throwFromErrno("Cannot open file " + std::string(filename), errno == ENOENT ? ErrorCodes::FILE_DOESNT_EXIST : ErrorCodes::CANNOT_OPEN_FILE);
-+#endif
- }
-
- MemoryStatisticsOS::~MemoryStatisticsOS()
- {
-+#ifdef OS_FREEBSD
-+ if (NULL != pstat)
-+ {
-+ ::procstat_close(pstat);
-+ }
-+#else
- if (0 != ::close(fd))
- {
- try
-@@ -51,12 +78,42 @@ MemoryStatisticsOS::~MemoryStatisticsOS()
- DB::tryLogCurrentException(__PRETTY_FUNCTION__);
- }
- }
-+#endif
- }
-
- MemoryStatisticsOS::Data MemoryStatisticsOS::get() const
- {
- Data data;
-
-+#ifdef OS_FREEBSD
-+ size_t pagesize = ::getpagesize();
-+ unsigned int count = 0;
-+
-+ struct kinfo_proc *kp;
-+ struct kinfo_vmentry *kve;
-+
-+ kp = ::procstat_getprocs(pstat, KERN_PROC_PID, ::getpid(), &count);
-+ if (NULL == kp)
-+ {
-+ throwFromErrno("Cannot get proc info", ErrorCodes::CANNOT_ALLOCATE_MEMORY);
-+ }
-+
-+ kve = ::procstat_getvmmap(pstat, kp, &count);
-+ if (NULL == kve)
-+ {
-+ ::procstat_freeprocs(pstat, kp);
-+ throwFromErrno("Cannot get vmmap info", ErrorCodes::CANNOT_ALLOCATE_MEMORY);
-+ }
-+
-+ data.virt = kp->ki_size;
-+ data.resident = kp->ki_rssize * pagesize;
-+ data.shared = (kp->ki_rssize - kve->kve_private_resident) * pagesize;
-+ data.code = kp->ki_tsize * pagesize;
-+ data.data_and_stack = (kp->ki_dsize + kp->ki_ssize) * pagesize;
-+
-+ ::procstat_freevmmap(pstat, kve);
-+ ::procstat_freeprocs(pstat, kp);
-+#else
- constexpr size_t buf_size = 1024;
- char buf[buf_size];
-
-@@ -99,7 +156,7 @@ MemoryStatisticsOS::Data MemoryStatisticsOS::get() con
- data.shared *= page_size;
- data.code *= page_size;
- data.data_and_stack *= page_size;
--
-+#endif
- return data;
- }
-