19 #include <boost/algorithm/string.hpp>
20 #include <boost/lexical_cast.hpp>
32 using boost::algorithm::is_any_of;
33 using boost::algorithm::split;
34 using boost::algorithm::token_compress_on;
47 int64_t mem_total_kb = StringParser::StringToInt<int64_t>(val,
51 return mem_total_kb * 1024L;
59 ifstream meminfo(
"/proc/meminfo", ios::in);
61 while (meminfo.good() && !meminfo.eof()) {
62 getline(meminfo, line);
63 vector<string> fields;
64 split(fields, line, is_any_of(
" "), token_compress_on);
66 if (fields.size() < 3)
continue;
69 DCHECK_EQ(fields[2],
"kB");
71 if (fields[0].compare(
"MemTotal:") == 0) {
73 }
else if (fields[0].compare(
"CommitLimit:") == 0) {
77 if (meminfo.is_open()) meminfo.close();
80 LOG(WARNING) <<
"Could not determine amount of physical memory on this machine "
81 <<
"using /proc/meminfo.";
85 LOG(WARNING) <<
"Could not determine memory commit limit on this machine "
86 <<
"using /proc/meminfo.";
92 ifstream overcommit_s(
"/proc/sys/vm/overcommit_memory", ios::in);
99 stream <<
"Physical Memory: "
int64_t ParseMemString(const char *val, size_t len)
static int32_t vm_overcommit_
Indicating the kernel overcommit settings.
static void Init()
Initialize MemInfo.
static int64_t physical_mem_
static std::string Print(bool value, TUnit::type ignored, bool verbose=false)
static std::string DebugString()
static void ParseOvercommit()
static int64_t commit_limit_
If overcommit is turned off the maximum allocatable memory.