How to limit CPU usage within C++ (Linux)

  • Thread starter Alexander Dong Back Kim
  • Start date
A

Alexander Dong Back Kim

Dear members,

First of all, I apologize that this question is not 100% pure C++
question so some might be annoyed by this.

I'm writing a multithreading based application. The application can
use flexible number of threads while it's running (between 2~32
threads when it's needed or configured). My development machine has 8
CPU so the application I'm writing sometimes uses 600% of CPU usage
which was very impressive at the beginning. However, since the real
target machine has only 1 CPU and requires to run many other
applications at the same time, I think I should somehow limit the CPU
usage of my application (let say 30%.

I tried to use sleep() but I found out it's not good enough because I
want to explicitly define maximum CPU usage rate for this application.
Any suggestion or recommendation are welcomed and appreciated.

regards,
 
P

peter koch

Dear members,

First of all, I apologize that this question is not 100% pure C++
question so some might be annoyed by this.

I'm writing a multithreading based application. The application can
use flexible number of threads while it's running (between 2~32
threads when it's needed or configured). My development machine has 8
CPU so the application I'm writing sometimes uses 600% of CPU usage
which was very impressive at the beginning. However, since the real
target machine has only 1 CPU and requires to run many other
applications at the same time, I think I should somehow limit the CPU
usage of my application (let say 30%.

I tried to use sleep() but I found out it's not good enough because I
want to explicitly define maximum CPU usage rate for this application.
Any suggestion or recommendation are welcomed and appreciated.

regards,

There is no good C++ answer to your question - using sleep is
certainly not a good solution.
The way to go is to have "nice" threads - giving them a lower priority
than the normal user threads. This way you can get all the CPU-time
when noone else is using the CPU(s) without impeding them they want to
run something "more important".

/Peter
 
L

Lionel B

Dear members,

First of all, I apologize that this question is not 100% pure C++
question so some might be annoyed by this.

I'm writing a multithreading based application. The application can use
flexible number of threads while it's running (between 2~32 threads when
it's needed or configured). My development machine has 8 CPU so the
application I'm writing sometimes uses 600% of CPU usage which was very
impressive at the beginning. However, since the real target machine has
only 1 CPU and requires to run many other applications at the same time,
I think I should somehow limit the CPU usage of my application (let say
30%.

I tried to use sleep() but I found out it's not good enough because I
want to explicitly define maximum CPU usage rate for this application.
Any suggestion or recommendation are welcomed and appreciated.

man nice
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,962
Messages
2,570,134
Members
46,690
Latest member
MacGyver

Latest Threads

Top