- 締切済み
プロセスが使用するCPU使用率を下げる設定は?
非常に負荷の高いプログラムを実行している時に、CPU使用率が100%になり、高負荷になることが気になっていまして、CPU使用率やマシン負荷が軽減できないか、方法などを模索しています。 少し処理時間が掛かっても良いので、負荷を減らし時間で解決できればと考えています。 niceコマンド、priocntlコマンド(root権限で実行)で、プロセスの優先度の設定をしつつ、プロセスの実行ができることは分かったのですが、topコマンドでCPU使用率のところを見ると、0% idle状態なのはnice/prioctl未使用時とくらべ、変化はなく、効果の具合がよく分かりませんでした。 また、priocntlはroot権限で実行しないといけないようで、一般ユーザでの実行を考えているので、これもNGかなと思っています。 なにか解決策はありませんでしょうか?ご存じの方がいらっしゃいましたら、教えて頂けませんか。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- notnot
- ベストアンサー率47% (4900/10358)
>こういった話しがオフィシャル文書として記載されているURLや書籍などあれば有り難いのですが、ご存じでしょうか? >つまり、CPU使用率100%が持続しても不安にならなくて良いです、という説明&説得情報が欲しいです。 書籍などでは知りませんが、仕事で、大企業のメインフレームや巨大サーバーを使った基幹業務システムのインフラ設計構築をしてきた経験からすると、日中のユーザー端末からの問い合わせ応答処理優先の時間帯ではmax80%出来れば60%くらい、夜間の大量データ処理の時はおおむねIOバウンドなので処理多重度を上げて効率的に処理できるようにして、ピーク時間帯は100%でも問題なしというのが実情です。ただ、ワークステーションのような機種だと、長時間CPU高負荷が続くことを放熱設計や部品のグレードなどの観点で想定していないことも考えられます。コンピュータールームに設置することを想定したサーバーなら大丈夫だと思いますが。 仕事でお使いならメーカーの営業マンに聞いてみてください。
- t-ta
- ベストアンサー率16% (1/6)
Solaris9以降であればSolaris 9 Resource Managerが使えるかもしれません。 ただリソースの割り当て設計は慎重に行うべきです。 下手な設計をすることで当該プログラムの処理時間が長くなる可能性もあります。
- notnot
- ベストアンサー率47% (4900/10358)
CPU100%であっても、そのために他のプログラムの動作に影響が出ていなければ問題ありません。 大企業の業務システムでもいわゆる夜間バッチ処理ではCPU使用率100%が数分から場合によっては数時間続きます。 I/O処理が入る場合はI/O待ち時間が入るのでCPU100%にはなりませんが、計算や探索などCPUとメモリしか使わない処理の場合は、いくら優先度を下げてもCPUは他にすることが無いわけで100%その処理をするしかないわけです。 発熱等の問題でCPU使用率を下げたいなら、CPUを強制的に短時間ずつ止めるようなプログラムを作って同時に走らせるしかないです。WindowsノートPC用ならそういう「ソフトCPUクーラー」というプログラムもありますが、Solaris用だと作るしか無いでしょうね。
お礼
notnotさん、ご回答ありがとうございます。 なるほど、他にすることがなければSolarisが判断してCPUをどんどん使うような動きをするわけですね。そのため、CPU使用率が100%な状態が続くということなのですね。 MRTGというフリーウェアを使い、ログファイル(200行程度)からグラフファイル(内部的にはgd,GDを使用?)を生成する処理を行っていまして、激しいI/O処理は無いと思われます。 こういった話しがオフィシャル文書として記載されているURLや書籍などあれば有り難いのですが、ご存じでしょうか? つまり、CPU使用率100%が持続しても不安にならなくて良いです、という説明&説得情報が欲しいです。