2017-10-03 9 views
0

2つの異なるシステムでPythonコードのパフォーマンスを見つけるために使用できるさまざまなパフォーマンス特性は何か知りたいと思います。また、別のマシンでそのパフォーマンスについて拡張することも可能ですか?このようなものは可能ですか?異なるマシン上のPythonプログラムのパフォーマンスを計算する方法

2つのシステムのうちの1つがGPUで計算され、他のCPUがCPUであると仮定します。 CPUが有効な別のシステムでPythonコードのパフォーマンスを拡張したいとします。

これは分析的にも導かれますか?

+1

削除された最後のコメントは、今私が異なり、それを読んで。 Pythonランタイムをシステム特性に対してプロットして、異なるシステムでどのくらい高速なコードを実行するかを予測したいのですか?回帰分析の一種? – roganjosh

+0

多かれ少なかれ、私は同じことが欲しい。私が以前述べたように、これらの性能特性を比較し、新しいハードウェアについては、それが持続するかどうかを分析したい。 – saikishor

答えて

0

私の経験では、パフォーマンス分析の手引きに基づいた前提条件は、最初のインスタンスサイズ/要件を識別し、リアルタイムテレメトリーと計測を使用してこれらのソリューションを詳細に監視するのには十分です。ボトルネックこれは非公式に関与理解している の

  • 非公式キャラ:

    は、私が(用語は私が作ってきたちんぷんかんぷんです)の性能を通勤するために、使用されてきた、カップルの方法があります。あなたのアプリケーションのボトルネックは、容量/マシン要件の非常に大まかな考え方を与えることになりそうです。ネットワークにほとんどまたはまったくない状態でCPUバウンド計算を実行している場合は、ネットワークに最適化されたインスタンスからバイパスすることができます。また、ファイルシステムへの処理を具体化している場合に、メモリのオーバーヘッドがかなり小さいか境界がある場合は、メモリの高いインスタンスは必要ありません。

  • 外部性能実験 これは、あなたは彼らがあなたのプログラムのパフォーマンスに与える影響の種類を決定するために、コンピュータ変数を変更することができ、ベースライン実験を確立するために、パフォーマンステストハーネスを作成する必要があります。私はスループットテスト、すなわち@ 10k要求/秒でキューベースのシステムをセットアップするのが好きです。何がキューの飽和で、何がサービス時間ですか。これには、ロギング/遠隔測定をコードに追加してそれらの番号を記録することが含まれます。また、1つのインスタンスがバックログを処理する速度を理解するためにバックログを設定します。

HTTPの場合、負荷を生成するツールはたくさんあります。

あなたの入力フォーマットをサポートするための自動化されたツールがありますが、そうでない場合は、自分で作成する必要があります。

  • パフォーマンスプロファイリング

私は、この使用して「低レベル」ツールが科学的にあなたのコードは、その時間を費やしている場所を決定(非公式分析ではなく)することを検討してください。通常は、python profilerを使用して、時間を費やしているルーチンを特定し、それらを最適化しようとします。このステップのためにhttp://www.brendangregg.com/linuxperf.html

パフォーマンステストハーネスは、許容可能なパフォーマンスが、これは無視することができた場合:P

  • リアルタイムテレメトリ を許容できるパフォーマンスとインスタンスのサイズが決定された後、リアルタイムの遠隔測定が重要です実際の作業負荷に対してリアルタイムでプログラムがどのように機能するかを確認することができます。
    は、私は高性能システムを維持するために重要であること、すべてのスループット、処理数、エラーなどを見つけた: http://www.brendangregg.com/usemethod.html
関連する問題