大規模なモデリングのためのPythonスクリプトを実行する新しいマシンを購入しました。それは4つのコア(Xeon、2.8GhZ)を持つ2つのCPUを持っています。各コアには、4つの論理CPUコアに対してハイパースレッディングが有効になっています。同じPythonプロセス実行時間の大きな変化
問題:私は8つの別々の端末で同じpythonプロセスを実行すると、top
コマンドは、各プロセスがCPUの100%を占めていることを示しています。しかし、端末1のプロセスは、端末8のプロセスより約4倍遅く実行されています。これは私には奇妙に思えます...
プロセスがさまざまな方法でスケジュールされる方法論理?)コア?誰も私がどのようにすべて同じスピードで走れるかという考えを持っていますか?
EDIT(larsmansへの応答):良い点。このスクリプトは約10,000回実行されるginatループです。各ループは、テキストファイル(500行)を読み込み、読み込まれた量に対して基本的な計算を実行します。ループが実行されている間は、メモリの約0.2%が使用されます。ループ中にディスクへの書き込みはありません。私は、読取りアクセスが制限要因になる可能性があることを理解できましたが、そうであれば最も遅くなる最初のプロセスであるという事実には戸惑います。私は、より多くのプロセスを開始するにつれてそれが遅くなると思っていたでしょう...
端末でtime
コマンドを使用して数回プロセスを実行しました。
EDIT2:単一のコアがすべての読み書きを処理するように指定されていることがわかったので、複数のプロセス(別々のコアで実行していても)がすべてのI/Oに対して1つのコアを使用します。ただし、これはコアの1つにのみ影響し、すべてのプロセッサがさまざまな処理速度を持つわけではありません。
これは、あなたのスクリプトが何をしているのかを知らないと答えることは不可能です。初心者の方は、ディスクI/Oをやっていますか?タイミングを一度やり直しましたか、それともやり直しましたか? –