28 #include <sys/resource.h>
31 static double time_double(
struct timeval* tv) {
40 return ts.tv_sec + 1e-9 * ts.tv_nsec;
46 getrusage(RUSAGE_SELF, &
usage);
47 *utime = time_double(&
usage.ru_utime);
48 *stime = time_double(&
usage.ru_stime);
56 unsigned long long* idle_cpu_time) {
58 std::ifstream proc_stat(
"/proc/stat");
62 std::getline(proc_stat, first_line);
63 std::stringstream first_line_s(first_line);
64 for (
int i = 0;
i < 10; ++
i) {
65 std::getline(first_line_s, cpu_time_str,
' ');
66 *total_cpu_time += std::stol(cpu_time_str);
68 *idle_cpu_time = std::stol(cpu_time_str);
75 gpr_log(
GPR_INFO,
"get_cpu_usage(): Non-linux platform is not supported.");