Understand CPU utilisation with image preprocessing applications

102 views Asked by At

I'm trying to understand how to compute the CPU utilisation for audio and video use cases.

In real time audio applications, this is what I typically do: if an application takes 4ms to process 28ms of audio data, I say that the CPU utilisation is 14.28% (4/28).

How should this be done for applications like resize/crop? let's say I'm resizing an image from 162*122 to 128*128 size image at 1FPS, and it takes 11ms.. What would be the CPU utilisation?

1

There are 1 answers

4
TopchetoEU On BEST ANSWER

CPU utilization is quite complicated, and strongly depends on stuff like:

  • The CPU itself
  • The algorithms utilized for the task
  • Other tasks running alongside the CPU

CPU utilization is also strongly related to the process scheduling of your PC, hence the operating system used, so most operating systems will expose some kind of API for CPU utilization diagnostics, but such API is highly platform-dependent.

But how does CPU utilization calculations work anyway?

The most simple way in which CPU utilization is calculated is taking a (for example) 1 second period, in which you observe how long the CPU has been idling (not executing any processes), and divide that by the time interval you selected. For example, if the CPU did useful calculations for 10 milliseconds, and you were observing for 500ms, this would mean that the CPU utilization is 2%.

Answering your question / TL; DR

You can apply this principle in your program. For the case you provided (processing video), this could be done in more or less the same way: you calculate how long it takes to calculate one frame, and divide that by the length of a frame (1 / FPS). Of course, this could be done for a longer period of time, to get a more accurate reading, in the following way: you track how much time it takes to process, for example, 2 seconds of video, and divide that by 2. Then, you'll have your CPU utilization.

NOTE: if you aren't able to process the frame in time, for example, your video is 10FPS (0.1ms), and processing one frame takes 0.5ms, then your CPU utilization will be seemingly 500%, but obviously you can't utilize more than 100% of your CPU, so you should just cap the CPU utilization at 100%.