問題タブ [hyperthreading]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
multithreading - ハイパースレッディングと CPU バウンド プロセス
そのため、i7 ラップトップで並列化されていない CPU 集中型のタスクを実行しています。
KSysGuard は、使用可能な CPU の 12.5% を使用していると報告しています。
ハイパー スレッディングを無効にすると、パフォーマンスが大幅に向上する可能性はありますか? 新しい BIOS をフラッシュする必要があるので、このアイデアに深く入り込む前に意見が欲しかったのです...
ありがとう、
N
cpu-usage - マルチコア/ハイパースレッドの CPU 時間
マルチコア/ハイパースレッドでプロセスにかかる CPU 時間を観察する必要があります。Xeon、Opteronなどを想定してください。
4 つのコア、ハイパー スレッド、つまり 8 つの「仮想」コアがあるとします。私が実行したいプログラムを X とし、それがどれだけの CPU 時間を要したかを観察します。
CPU でプロセス X を実行すると、CPU 時間 A が得られます。A が 5 分以上あるとします。
同じプロセス X の 8 つのコピーを実行すると、CPU 時間は B1、B2…、B8 になります。
同じプロセス X の 7 つのコピーを実行すると、CPU 時間は C1、C2…、C7 になります。
同じプロセス X の 4 つのコピーを実行すると、CPU 時間は D1、D2…、D4 になります。
質問:
数 A、Bi、Ci、Di の関係は何ですか?
A は Bi より小さいですか? いくら?Ci、Diはどうですか?
それらの間でBiの時間は異なりますか?Ci、Diはどうですか?
performance - HT を使用すると並列コンパイルのパフォーマンスが低下するのはなぜですか?
Linux 2.6.39 x86_64 の Core i7 930 @2.8GHz (クアッドコア) の BIOS でハイパースレッディングを有効または無効にして、wine のコンパイル時間をいくつか測定しました。各測定値は次のようになりました。
ここで、N
は 1 から 8 までの数字です。
結果は次のとおりです (「速度」は time(1) から 60/real です):
ここで、青色の線は HT 無効、紫色の線は HT 有効に対応しています。HT が有効な場合、1 ~ 4 スレッドを使用すると、HT がない場合よりも遅くなるようです。これは、カーネルがプロセスを異なるコアに分散せず、すでに使用中のコアの 2 番目のスレッドを再利用していることに関連している可能性があると思います。
では、私の質問: 同じコアの別のスレッドにプロセスを追加するよりも、コア スケジューリングごとに 1 つのプロセスを優先させるようにカーネルを強制するにはどうすればよいでしょうか? または、私の推論が間違っている場合、1 ~ 4 個のプロセスを並行して実行する場合に、HT を使用しない場合よりも HT を使用した場合のパフォーマンスが低下しないようにするにはどうすればよいでしょうか?
linux-kernel - デフォルトの pthread アフィニティ ポリシーとそれに続く Linux カーネル 2.6.32 を見つけます。
HT システムで pthread を作成するときに、Scientific Linux Kernel 2.6.32 が従うデフォルトのアフィニティ ポリシーを調べようとしています。それを知る方法はありますか?pthreads の作成ではアフィニティへの呼び出しがないため、アフィニティは OS に任されていると思います。
multithreading - コアごとに複数のスレッドに存在する並列処理のレベル
そのため、コアごとに複数のスレッドを実装するいくつかのテクノロジ (インテルのハイパースレッディングなど) を調べていて、これらの種類のテクノロジの並列処理の程度を知りたいと思っています。それは真の並列処理ですか、それともより効果的な同時実行処理ですか? それらはまだ同じ実行ユニットとコアリソースを共有しているようで、基本的には使用法を仮想化しているだけのようです。したがって、真の並列処理がどのように発生するかはわかりません。そして、これが事実である場合、利点は何ですか?効果的なスレッド コンテキストの切り替えにより、同時実行を実現できます。