1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-04-18 21:44:02 +03:00

Logging of memory (#2930)

* -logging of memory WIP

* -better log for cgroup case

* -fix log

* -display in GIB

* add log for freememory for non CGROUP
(to be discussed)

* test repeated log entries

* -added counter for every 1000 call. effectivly 15m

* Name logginng period and inrease it, clear config files from PR, add .gitignore

---------

Co-authored-by: pgmabv99 <alexey.vorovich@gmail.com>
Co-authored-by: Leonid Fedorov <leonid.fedorov@mariadb.com>
This commit is contained in:
mariadb-AlexeyVorovich 2023-09-05 08:46:29 -04:00 committed by GitHub
parent add3a57e8d
commit 5b4f06bf0d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 32 additions and 3 deletions

5
.gitignore vendored
View File

@ -181,4 +181,9 @@ build/.cmake
*.vtg
*.vtg-back
'*.vtg-Stashed changes'
versioning/BRM/brmshmimpl.h
versioning/BRM/shmkeys.cpp
obj/
build/build

View File

@ -78,9 +78,21 @@ CGroupConfigurator::CGroupConfigurator()
cGroupDefined = false;
else
cGroupDefined = true;
cout << __func__ << " cGroupDefined (from getConfig)" << cGroupDefined << endl;
ifstream v2Check("/sys/fs/cgroup/cgroup.controllers");
cGroupVersion_ = (v2Check) ? v2 : v1;
string cGroupVersion_str="";
switch(cGroupVersion_){
case v1:
cGroupVersion_str="v1";
break;
case v2:
cGroupVersion_str="v2";
break;
}
cout << __func__<< " cGroupVersion_str " << cGroupVersion_str << endl;
}
CGroupConfigurator::~CGroupConfigurator()
@ -198,7 +210,7 @@ uint64_t CGroupConfigurator::getTotalMemory()
ret = getTotalMemoryFromProc();
}
cout << "Total mem available is " << ret << endl;
cout <<__func__ << " Total mem available (bytes) " << ret << " (GIB) " << ret/GIB << endl;
totalMemory = ret;
return totalMemory;
}
@ -206,7 +218,7 @@ uint64_t CGroupConfigurator::getTotalMemory()
uint64_t CGroupConfigurator::getTotalMemoryFromProc()
{
size_t memTot;
cout << __func__ << " reading /proc/meminfo " << endl;
ifstream in("/proc/meminfo");
string x;
@ -233,7 +245,9 @@ uint64_t CGroupConfigurator::getTotalMemoryFromCGroup()
{
os << "/sys/fs/cgroup/" << cGroupName << "/memory.max";
}
string filename = os.str();
cout << __func__ <<" reading " << filename << endl;
ifstream in(filename.c_str());
@ -248,6 +262,7 @@ uint64_t CGroupConfigurator::getTotalMemoryFromCGroup()
{
RETURN_READ_ERROR(0);
}
cout << __func__<< " read into memLimitStr " << memLimitStr << endl;
if (cGroupVersion_ == v2 && memLimitStr == "max")
{
@ -271,11 +286,17 @@ uint64_t CGroupConfigurator::getFreeMemory()
{
uint64_t ret;
if (!cGroupDefined)
{
ret = getFreeMemoryFromProc();
if (logCounter++ % logMemoryPeriod == 0)
cout <<__func__<< " : returned from getFreeMemoryFromProc " << ret << " (GIB) " << ret/GIB << endl;
}
else
{
uint64_t usage = getMemUsageFromCGroup();
cout << "usage " << usage << endl;
if (logCounter++ % 1000 == 0)
cout << __func__<< " : returned from getMemUsageFromCGroup : usage " << usage << " (GIB) " << usage/GIB << endl;
if (usage == 0)
ret = getFreeMemoryFromProc();

View File

@ -63,8 +63,11 @@ class CGroupConfigurator
config::Config* config;
uint64_t totalMemory = 0;
uint64_t totalSwap = 0;
const uint64_t GIB = 1024ULL * 1024ULL * 1024ULL;
bool printedWarning = false;
enum CGroupVersions cGroupVersion_;
unsigned int logCounter = 0;
static constexpr unsigned int logMemoryPeriod = 5000;
};
} // namespace utils