問題タブ [affinity]
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.
windows - Apache サービスのプロセッサ アフィニティを設定するには?
Windows マシンで複数の apache インスタンスを実行していますが、Python の GIL が原因で発生する IO のボトルネックを回避するには、apache のワーカー プロセスのアフィニティを設定する必要があります。
Apache はメインのウォッチドッグ プロセスの PID を書き込みますが、埋め込まれた WSGI (modwsgi) を含むプロセスの PID は書き込まれません。
一度に 1 つのサービスを再起動して新しい WSGI PID を見つけ、そのアフィニティを設定する以外に、WSGI プロセスの PID を記録する、または事前定義されたアフィニティを使用するように apache サービスにフラグを立てる方法はありますか?
linux - プロセスが特定の物理CPUコアとスレッドで実行されるようにするにはどうすればよいですか?
この質問は、2つのプロセスが同じCPUで実行されるようにすることについて質問します。を使用sched_setaffinity
すると、プロセスを多数の論理CPUに制限できますが、これらが特定の物理CPUおよびスレッドにマップされていることを確認するにはどうすればよいですか?
マッピングは次のようになると思います。
0-CPU0スレッド
01-CPU0スレッド
12-CPU1スレッド03
-CPU1スレッド1
など..
ここで、左側の数字はで使用されている関連CPUsched_setaffinity
です。
しかし、私がこれをテストしようとしたとき、これは必ずしもそうではないように見えました。
これをテストするためCPUID
に、現在のコアの初期APICIDをEBX
次の場所に返す命令を使用しました。
次に、CPUマスクのビットをループして、一度に1つずつ設定し、OSがプロセスを各論理CPUに順番に移行するようにしてから、現在のCPUを出力しました。
これは私が得たものです:
CPUが上記のスキームに従って初期APICIDを割り当てると仮定すると、cpuマスクは実際には物理コアとスレッドに対応していないように見えます。
sched_setaffinity
マスク内のビットの物理コアへの正しいマッピングを見つけるにはどうすればよいですか?
process - 特に各プロセッサについて知る必要があるのはなぜですか?
Windows8タスクマネージャーが焦点を当てているように見える各仮想プロセッサーの詳細の背後にある動機が何であるかを理解したいと思います。
これがスクリーンショットです(ここから):
このセットアップは、非標準でコストのかかる重要なサーバー環境(1TB RAM!)にのみ存在する可能性があることを私は知っていますが、ヒートマップの使用は何ですか?または、プロセッサアフィニティを設定します。
私が求めているのは、特定のプロセッサXがプロセッサYよりも多く使用されているかどうかを開発者が気にする状況です(単一の非マルチスレッドプロセスがコアを最大限に活用していることを知っているだけでなく、プロセッサヒートマップの代わりにプロセスヒートマップ)、またはプロセスがこれまたはそのプロセッサを使用するかどうかを気にしますか(人間が自動バランシングアルゴリズムよりもよく推測することは期待できません)?
c++ - MATLAB エンジンのプロセッサ アフィニティの設定 (Windows 7)
私はc++でアプリケーションを開発しています。アプリケーションのコンポーネントの 1 つは、データ処理に (Matlab エンジンを介して) Matlab を使用します。同時に、データ取得システムがデータをディスクにストリーミングしています。ときどき、集中的な Matlab 処理の期間中に、取得システムがクラッシュします。Matlab のプロセッサ アフィニティを使用可能なプロセッサのサブセットに設定することで、この問題は解決されます。ただし、アプリケーションは 1 日に数回、複数のマシンで起動されるため、毎回アフィニティを手動で設定するのは不便です。エンジンはショートカット経由ではなくアプリケーション内から起動されるため、ショートカットのコマンドライン経由でプロセッサ アフィニティを設定するトリックは機能しません。プログラムでアフィニティを設定する方法を探していましたが、成功は限られていました。
私は次のオプションを検討しました(優先順にランク付けされています):
- エンジンの起動時に、アプリケーション内から matlab エンジンのプロセッサ アフィニティを指定します。
- 完全な Matlab アプリケーション自体とは別に、matlab エンジンの既定のプロセッサ アフィニティを指定します。
- 最後の手段として、Matlab の既定のアフィニティを設定します (エンジンと非エンジンの両方の使用)。Matlab は展開マシンで他の目的に使用されるため、これは最も望ましくありません。他の用途に制限しないことが望ましいでしょう。
アプリケーション内からプロセッサ アフィニティを設定することは可能ですか。そうでない場合、この問題に取り組む正しい方法は何ですか? これらのオプションに関するアドバイス、またはその他の提案/解決策は大歓迎です。
matlab - matlab からプロセッサ アフィニティを取得する
Matlab 環境から実行時にプロセッサ アフィニティを取得することは可能ですか? もしそうなら、どのように?
linux - Linux でデフォルトのプロセッサ アフィニティを変更するにはどうすればよいですか?
Linux を実行しているマルチコア システムで多くのベンチマークを実行したいと考えています。ベンチマーク用にコアの 1 つを予約したいと考えています。sched_setaffinity
ベンチマークをそのコアに制限するために使用できることを知っています。他のすべてのプロセスをコアから切り離すにはどうすればよいですか? つまり、すべてのプロセスのデフォルトのアフィニティに自分のコアが含まれないように設定するにはどうすればよいでしょうか?
process - 1 つの CPU に 1 つのプロセスをバインドし、すべての IRQ、deamin、rpci を他の CPU に移動する
16 コアの Linux マシンがあります。
1 つの CPU が完全に 1 つのプロセス専用になるようにプロセス アフィニティをスケジュールしたいと考えています。
IRQ-nnnn, rpciod/nn
私が完全に専用であると言うとき、他の実行中のデーモンなどを、私のプロセスが興味を持っているものを除いて、利用可能なすべての CPUにバインドしたいという意味です。(私のOSでは、約500のプロセスを数えることができます)。
- そうすることで安全ですか、それとも現在実行中の CPU でそれらの一部を使用できるようにする必要がありますか?
- 少なくとも IRQ をバインドすると、パフォーマンスは向上しますか?
これらは頻繁にトリガーされる割り込みに接続されているため、カーネルがそれらを呼び出さなければならないため、頻繁なプロセス コンテキスト スイッチが発生します。
以下のメリットを期待しています。
- 1 つの CPU を実行する 1 つのプロセスが存在するため、プロセス コンテキストの切り替えはまったくありません。
- その CPU 上のプロセスに割り当てられたタイム スライスが増加するため、プロセス コンテキスト スイッチ (存在する場合) の前により長く実行されます。
敬具AFG
.net - プロセスとジョブオブジェクトの優先度クラスとプロセッサアフィニティの設定
.NETプロセッサでは、すべてのスレッドと子プロセスのアフィニティと優先度クラスは、プロパティを使用して設定できProcess.ProcessorAffinity
ますProcess.PriorityClass
。ジョブオブジェクトを使用するJOB_OBJECT_LIMIT_AFFINITY
と、JOB_OBJECT_LIMIT_PRIORITY_CLASS
フラグを使用して同じように設定できるようです。
では、ジョブオブジェクトとプロセスに上記のような特定の制限を設定することの違いは何ですか?
編集:ジョブオブジェクトの制限を低い値に設定した後でも、特権の低いプロセスがそれらを上書きする可能性があります。それは、ジョブオブジェクトの制限が強化されていないことを意味しますか?特権の低いアカウント/プロセスがそれらを上書きしないようにするにはどうすればよいですか?
設定内容:
特権の低いプロセスによってどのようにオーバーライドされるか:
c - LinuxでCからsched_getaffinityとsched_setaffinityを使用するにはどうすればよいですか?
私は。。をしようとしています:
プロセッサのピン留めと同時に16コピーを実行します(コアごとに2コピー)
プロセッサのピン留め(コアあたり2コピー)と同時に8コピーを実行し、特定の機能(機能1が終了した場合など)の後でプロセッサコアを最も遠いコアに反転します。
私が直面している問題は、最も遠いプロセッサをどのように選択するかです。
sched_getaffinityとsched_setaffinityの使用を提案した友人もいますが、良い例は見つかりません。
c - Linuxcpu_affinityは使い捨てを保証しました
各スレッドが各コアで実行されるマルチスレッドプログラムのLinuxでCPUアフィニティを設定すると、他のプロセスがそのコアのOSによってスケジュールされるのを効果的にブロックできます。事実上、プロセスでのコアの使用を保証し、他のすべての重要ではないプログラムを最小限の数のコアにバインドしたいと考えています。
または、Linuxスケジューラーで何かが足りないのでしょうか、それとも自分で何かが必要なのかもしれません。