get_cpu_stats_linux.cc
Go to the documentation of this file.
1 /*
2  *
3  * Copyright 2018 gRPC authors.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  */
18 
20 
21 #include <utility>
22 
23 #ifdef GPR_LINUX
24 
25 #include <inttypes.h>
26 
27 #include <cstdio>
28 
30 
31 namespace grpc {
32 namespace load_reporter {
33 
34 std::pair<uint64_t, uint64_t> GetCpuStatsImpl() {
35  uint64_t busy = 0, total = 0;
36  FILE* fp;
37  fp = fopen("/proc/stat", "r");
38  uint64_t user, nice, system, idle;
39  if (fscanf(fp, "cpu %" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64, &user,
40  &nice, &system, &idle) != 4) {
41  // Something bad happened with the information, so assume it's all invalid
42  user = nice = system = idle = 0;
43  }
44  fclose(fp);
45  busy = user + nice + system;
46  total = busy + idle;
47  return std::make_pair(busy, total);
48 }
49 
50 } // namespace load_reporter
51 } // namespace grpc
52 
53 #endif // GPR_LINUX
idle
static uv_idle_t idle
Definition: test-poll-oob.c:37
grpc
Definition: grpcpp/alarm.h:33
grpc::load_reporter::GetCpuStatsImpl
std::pair< uint64_t, uint64_t > GetCpuStatsImpl()
Definition: get_cpu_stats_unsupported.cc:30
total
size_t total
Definition: cord_analysis.cc:59
uint64_t
unsigned __int64 uint64_t
Definition: stdint-msvc2008.h:90
get_cpu_stats.h
benchmark.FILE
FILE
Definition: benchmark.py:21
grpc::fclose
fclose(creds_file)
port_platform.h


grpc
Author(s):
autogenerated on Thu Mar 13 2025 02:59:26