2010-12-19 19 views
4

私は、マスターノードがリモートマシン上でワーカーノードの束を起動する分散システムを設計しています。私はPythonを使用しており、各物理マシンに複数のコアがあるという事実を利用したいので、マシンごとに複数のワーカーノード(GILなど)を実行する必要があります。さらに、各ワーカーノードは、各「サイクル」が必要とするCPUの量がかなり異なる可能性があります。しかし、ワーカーノードをかなりの数に分割することができます。私の最初の戦略は、マシンごとにコアがあるよりも多くのワーカーノードを生成することです。その理由は、いくつかのノードがより多くのCPUを必要とする場合、より長い期間コアを占有する可能性があるということです。 (各ノードが既にCPUにバインドされていた場合、突然より多くのCPUが必要になることはありません)PythonプロセスのCPU時間を正確に測定するにはどうすればよいですか?

質問:私はPythonプロセスのCPU時間を正確に測定できますか?

私は時間を素早く測定することはできません。特定のプロセスに実際に費やされた時間が必要です。つまり、プロセスごとに、関連性のないプロセスに関係なく、そのプロセスに排他的に費やされたCPUリソースの量を可能な限り正確に表す数値Xが必要です。 (私はPythonのgetrusageを見てきましたが、これは不十分であるubuntuの小数点以下2桁を与えるように見えます。

私の具体的な使用例は、StartからEndまでの各ノードサイクルのCPU時間を測定することです。ここで、EndはStartの約0-30ms後です。

最良の答えは、これをPythonで行うポータブルな方法です。 C拡張を使用する必要があるメソッドは正常です。

+0

'timeit'モジュールをチェックしましたか? – dheerosaur

+0

申し訳ありませんが、これはこの質問とはまったく関係ありません。 – porgarmingduod

答えて

1

クイックアンサーは、少なくともLinuxの場合、より高い解像度のタイマーを持つカーネルとともにgetrusageを使用することです。

私の初期テストでは10msのひどい精度が与えられたのは、明らかに64ビットのubuntuがデフォルトで100hzタイマーに設定されているからです。

関連する問題