1#ifndef TATOOINE_MEMORY_USAGE_H
2#define TATOOINE_MEMORY_USAGE_H
6#elif defined(_WIN32) || defined(WIN32)
19 std::ifstream file{
"/proc/meminfo"};
20 while (file >> token) {
21 if (token ==
"MemTotal:") {
26 throw std::runtime_error{
"could not get total RAM"};
30 file.ignore(std::numeric_limits<std::streamsize>::max(),
'\n');
32 throw std::runtime_error{
"could not get total RAM"};
39 std::ifstream stat_stream{
"/proc/self/stat", std::ios_base::in};
42 std::string pid, comm, state, ppid, pgrp, session, tty_nr, tpgid, flags,
43 minflt, cminflt, majflt, cmajflt, utime, stime, cutime, cstime, priority,
44 nice, O, itrealvalue, starttime;
50 stat_stream >> pid >> comm >> state >> ppid >> pgrp >> session >> tty_nr >>
51 tpgid >> flags >> minflt >> cminflt >> majflt >> cmajflt >> utime >>
52 stime >> cutime >> cstime >> priority >> nice >> O >> itrealvalue >>
53 starttime >> vsize >> rss;
59 auto page_size_b = sysconf(_SC_PAGE_SIZE);
60 return std::pair{vsize, rss * page_size_b};
Definition: algorithm.h:6
size_t total_memory()
Total amount of RAM in kB.
Definition: memory_usage.h:17
auto memory_usage()
Definition: memory_usage.h:37