2016-09-17 14 views
0

C++でCPU使用を制限する方法はありますか?C++でCPU使用を制限する

私は、入力されたCPUを使用して、そのCPUの最大量を最大限使用するプログラムを書くことができます。

基本的には、プログラム内でcpulimitコマンドの機能を内部的に追加したいと考えています。

どうすればいいですか?

編集:

環境:Linux(debian)with gcc 6.1。可能な限り多くの任意の数をサポートする必要があります。すなわち1%〜100%の範囲である。 OSが実行できない場合は、エラーをログに記録し、最も近い値を使用するか、またはOSがその数を制限するときに推奨されるその他の解決策を使用できます。

+2

質問に答えるには:はい、そうする方法があります。 –

+0

@SamVarshavchik私は今質問を編集したと思いますが、どうすればこれを達成することができますか? – BEC

+0

どのオペレーティングシステムですか? –

答えて

0

使用getrusage()、数ミリ秒をスリープ状態にnanosleep()を使用し、Linux commands to detect the computer resource usage of a program

を参照してくださいそして、あなたがチェックしたとき、あなたはあなたが欲しいランタイムのしかし、多くのミリ秒を使用しました。要件に合わせてパーセンテージを調整します。

+0

Linuxカーネルはこのような機能を提供していないので、意味があります。私はそのようなことをすることができます。 – BEC

1

Linuxでは、特定の割合を設定する手段はありません。しかし、nice(2)システムコールは、システム上の他のプロセスとの関係でプロセスの優先順位を下げ、システムの他のプロセスと比較して何らかの相対的なCPUパーセンテージを達成します。

システムコールsetrlimit(2)を使用して、プロセスのRLIMIT_CPUを固定金額として設定することもできます。

+0

これは、パーセンテージではなく、秒単位の制限です。 –

+0

RLIMIT_CPUは時間制限を設けていますが、上のすべてのプロセスで表示されるCPU%を制御したいと思っています。 – BEC

+0

Ok、十分に公平に更新されました。 –

関連する問題