MCPcopy Create free account
hub / github.com/Oneflow-Inc/oneflow / ProcessMemUsage

Function ProcessMemUsage

oneflow/core/common/mem_util.cpp:43–67  ·  view source on GitHub ↗

Reference: https://stackoverflow.com/questions/669438/how-to-get-memory-usage-at-runtime-using-c

Source from the content-addressed store, hash-verified

41
42// Reference: https://stackoverflow.com/questions/669438/how-to-get-memory-usage-at-runtime-using-c
43void ProcessMemUsage(double* vm_usage, double* resident_set) {
44 *vm_usage = 0.0;
45 *resident_set = 0.0;
46
47#ifdef __linux__
48 // 'file' stat seems to give the most reliable results
49 std::ifstream stat_stream("/proc/self/stat", std::ios_base::in);
50 ProcStat proc_stat;
51 stat_stream >> proc_stat.pid >> proc_stat.comm >> proc_stat.state >> proc_stat.ppid
52 >> proc_stat.pgrp >> proc_stat.session >> proc_stat.tty_nr >> proc_stat.tpgid
53 >> proc_stat.flags >> proc_stat.minflt >> proc_stat.cminflt >> proc_stat.majflt
54 >> proc_stat.cmajflt >> proc_stat.utime >> proc_stat.stime >> proc_stat.cutime
55 >> proc_stat.cstime >> proc_stat.priority >> proc_stat.nice >> proc_stat.num_threads
56 >> proc_stat.itrealvalue >> proc_stat.starttime >> proc_stat.vsize
57 >> proc_stat.rss; // don't care about the rest
58
59 stat_stream.close();
60
61 long page_size_kb = sysconf(_SC_PAGE_SIZE); // in case x86-64 is configured to use 2MB pages
62 // return with MB
63 *vm_usage = proc_stat.vsize >> 20;
64 // return with MB
65 *resident_set = (proc_stat.rss * page_size_kb) >> 20;
66#endif // __linux__
67}
68
69Maybe<double> GetCPUMemoryUsed() {
70 JUST(CPUSynchronize());

Callers 2

CountMethod · 0.85
GetCPUMemoryUsedFunction · 0.85

Calls 1

closeMethod · 0.45

Tested by

no test coverage detected