I want to get the overall total CPU usage for an application in C, the total CPU usage like we get in the TaskManager... I want to know ... for windows and linux :: current Total CPU utilization by all processes ..... as we see in the task manager.
相关问题
- Multiple sockets for clients to connect to
- slurm: use a control node also for computing
- What is the best way to do a search in a large fil
- glDrawElements only draws half a quad
- Index of single bit in long integer (in C) [duplic
Under POSIX, you want getrusage(2)'s ru_utime field. Use RUSAGE_SELF for just the calling process, and RUSAGE_CHILDEN for all terminated and wait(2)ed-upon children. Linux also supports RUSAGE_THREAD for just the calling thread. Use ru_stime if you want the system time, which can be summed with ru_utime for total time actively running (not wall time).
It is usually operating system specific.
You could use the clock function, returning a
clock_t
(some integer type, like perhapslong
). On Linux systems it measures the CPU time in microseconds.that is the exact thing I was looking for. Manipulating it in my way, I run it successfully.
Get total CPU usage
This is platform-specific:
GetProcessTimes()
function.clock()
.These can be used to measure the amount of CPU time taken between two time intervals.
EDIT :
To get the CPU consumption (as a percentage), you will need to divide the total CPU time by the # of logical cores that the OS sees, and then divided by the total wall-clock time:
Getting the # of logical cores is also platform-specific:
GetSystemInfo()
sysconf(_SC_NPROCESSORS_ONLN)