0

スクリプトのインスタンスをいくつか実行していますが、すべて正常に動作します。私がロードする各端末は、CPUをより高く構築します。

12 個のインスタンスを実行し、デュアル コア CPU の 99% をスロットリングしています。RAM 8 GB の DDR3 を完全にスタックしました。プロジェクトのある時点で、私は mysql を使用しましたが、そこに大きなボトルネックがあり、いくつかのランダムな切断エラーが見つかりました (Google で調べたところ、NIC である可能性があります)。

とにかく..ディスクへの書き込みは、シェルから直接行う方がはるかに高速でした。使用モジュールは WWW:Mechanize

ただし、インスタンスに関する限り、プロファイルはひどいものではありません。上下に 24% バウンスします。しかし、8 つまたは 9 つのターミナル ウィンドウが実行されている状態で、負荷が 100% になる実行制限に達しました。帯域幅とダウンロード時間の結果である可能性が最も高いです。これを高速化できますか? 数キロバイト後にダウンロードを停止するとしましょう。

ありがとう、ピーター

4

2 に答える 2

1

しかし、8 または 9 のターミナル ウィンドウが実行されている状態で、負荷が 100% になる実行の制限に達します。ほとんどの場合、帯域幅とダウンロード時間の結果です。

うーん... いいえ。帯域幅の制約/ダウンロード時間のために壁にぶつかった場合、プロセスは I/O ( / のプロセスステータス) でブロックされ、D事実上スリープ状態になり、CPU サイクルがほとんど消費されなくなります。 I/O 要求が完了します。topps

あなたの現在の問題については、理想的にはソース コードを含め、コードが何をしているかについての詳細がなければ、それを言うことは不可能ですが、アルゴリズムの一般的な説明で十分かもしれません。

ただし、8 つまたは 9 つのプロセスが実行されている場合、1 つのインスタンスの平均 CPU 使用率が 11 ~ 12% を超える場合、CPU を 100% にペグすることが保証されることに注意してください。プロセスごとの平均 CPU 消費量については何も言われていませんが、定期的に 24% まで跳ね返る場合、平均がその半分以上であっても、まったく驚かないでしょう。

于 2010-12-13T11:54:58.417 に答える
0

残念ながら、perl インタプリタの動作にそのように影響を与える方法があるとは思いません。ボックス上のすべての perl スクリプトに対して cpu 制限を設定できますが、私が知る限り、perl でそれを行う方法はありません。インタープリターがすべてのメモリ割り当てなどを独自に管理するためです。

このリンクをチェックすることをお勧めします: Perl で CPU 使用率を制限する方法

また、perl のスレッドを調べることもできます。これは、インタープリターを 19 回実行するよりも確実に効率的であるためです。

于 2010-12-12T18:05:09.647 に答える