2017-11-29 15 views
1

マルチコアマシンでは、CPUがロードされているかどうかを知るための最良のメトリクスは何ですか?マルチコアマシン - cpuロードメトリック

私はApacheのCGIサーバーに投稿要求を送信するWebアプリケーションを持っています。 CGIサーバーは、ポストデータをループし、ループ内の各アイテムのperlプロセスを起動します。クライアントからの要求が単一のエンドポイントに達してしまうため、私のサーバーでは処理できない多くのプロセスを作成することになります。したがって、ループから新しいプロセスを開始する前に、どのシステムメトリックを調べるべきかを理解したかったのです。

enter image description here

注:私は20コアのマシンを持っています。

答えて

2

答えが見つからない理由は、プロセスの性質や制限要因に依存していることです。

CPUを大量に使用する場合、見るべき基準は負荷平均です - 負荷平均は実行可能な状態のプロセスの測定値です - 非常に大まかに、LAがコアの数と同じであれば、CPUを実行しています最大で

しかし、CPUが制限要因ではないことがますます増えています。限られた量のメモリがあり、メモリが空いているプロセスがそれを消費するケースが増えています。キャッシュには「スペア」メモリが使用されているため、実際にはいっぱいになるとキャッシュが小さくなります。利用可能なものがこぼれ過ぎると、スワッピングまたはOOMkillerが発生します。

しかし、あなたはApacheとWebに言及しているように、ネットワークパイプが制限要因である可能性は非常に高いです - ローカルホストからの帯域幅を制御することは実際には驚くほど困難です。

また、ディスクIOもあります。これは要因でもあります。通常、アウトバウンドネットワークは厳しい制限になるため、Webサーバーではそうは考えにくいと思います。

すべてがあなたのプロセスが何をしているかに依存します。軽い「ヘルパー」が大部分はアイドルであるか、重い「グラインダ」がすべて目立つ負荷を導入しています。

私が与えることができる最もよい答えは、非常に曖昧な見積もりです。プロセスがCPUを大量に使用している場合は、1コアあたり2個の上限を設定してください。プロセスがメモリである場合は、システムRAMの約50%を消費することを目指してください。プロセスがIO集中型である場合は、IO(ネットワークまたはディスク)の約50%を消費することを目指してください。

関連する問題