問題タブ [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.
c++ - APIC ID を検出するためのコードは、異なる論理プロセッサに対して同じ ID を返します
NT サービスを Intel Core2 ベースの Win2k3 マシンで実行し、すべての論理 CPU (プロセス アフィニティのすべてのビット) を反復処理する必要があります。そのために、GetProcessAffinityMask() を呼び出してシステム アフィニティ マスクを取得し、プロセスを各プロセッサに順番に切り替えます。
各反復で、ここからコードを呼び出して、現在のプロセッサ APIC ID を取得します。問題は、プロセッサが異なると、同じ APIC ID が返される場合があることです。ドキュメントによると、システム内の各プロセッサは同一の ID を持つ必要があります。
これをデバッグしてみました-Windowsが実際にアフィニティを変更するかどうかを確認しました:
予想どおりのアフィニティ マスクが返されますが、APIC ID は異なるプロセッサでも同じである可能性があります。
この奇妙な状況に説明はありますか?
windows - アフィニティを設定すると、1 つのコア リソースのみが使用されることが保証されますか?
CPUアフィニティを設定すると、アプリケーションがそのコアでのみ実行されることが保証されるかどうかを知りたかっただけですか?
bash - Bashで符号なし番号を否定する
数値(16進数)があり、その補数が必要です。たとえば、X = 20
bashで否定を実行して、を返す場合Y = ~X = DF
です。bashである必要はありませんが、スクリプトにラップできる一般的なコマンドラインツールを使用する必要があります。また、数値はすべて符号なしである必要があり、使用可能なビットをオーバーフローさせないようにする必要があることに注意してください(たとえば、20
8ビットのみであるため、出力は8ビットの1の補数である必要があります)。
bashとbcを使用してさまざまなことを試しましたが、適切なコンボが見つかりませんでした。何か案は?
(誰かが気にかけている場合、目標はIRQアフィニティを特定のCPUに設定してから、他のIRQを他のすべてのプロセッサに設定することです。)
multithreading - sched_setaffinity() を使用して cpumask への変更をすぐに行う
2 つの異なる CPU に 2 つのスレッドを固定する必要がある Linux カーネル モジュールを作成しています。カーネルにエクスポートした後、sched_setaffinity() を使用する予定です。同じための他のエクスポートされた関数はありますか?
また、cpumask に 1 つの CPU のみを設定した場合、スレッドはその CPU に移動してすぐに有効になりますか? そうでない場合、どうすれば同じことを強制できますか? sched_setaffinity() の直後に schedule() を呼び出すと役立ちますか?
linux-kernel - Linuxカーネルモジュールのプロセッサアフィニティ設定?
Windowsでは、KeSetSystemAffinityThreadを使用してドライバーコードのプロセッサー親和性を設定し、KeGetCurrentProcessorNumberを使用してコードが実行されているプロセッサーを確認できます。
Linuxカーネルモジュールで同様のことをしようとしていますが、表示されるアフィニティ呼び出しはユーザーランドプロセスのみです。特定のプロセッサでアセンブリコードを実行できるように、これを行う方法はありますか?(つまりsgdt)
編集:
現在のプロセッサを入手する方法を理解したと思います。smp_processor_id()は機能するはずです。
windows - 特定のスレッドで使用されているプロセッサ(コア)を特定する
スレッドが使用する物理プロセッサ(コア)を特定のスレッドで識別できるかどうか知りたいのですがthread-id
?
thread-id = 10
たとえば、2つのスレッド(たとえば、と)を持つマルチスレッドアプリケーションがありthread-id = 20
ます。デュアルコアプロセッサ(コア1とコア2)を搭載したシステムでアプリケーションを実行します。では、スレッドで使用されるコア番号を取得するにはどうすればよいthread-id = 20
ですか?
PSWindowsプラットフォーム。
ありがとうございました、
デニス。
c# - performanceCounter の NextValue 呼び出しがスレッド アフィニティ マスクを変更するのはなぜですか
私は C# プロジェクトを持っています。このプロジェクトでは、プロセッサの現在のワークロードにアクセスし、プロセッサのすべてのカーネルで特定のコードを実行する必要があります。私の問題は、プロセッサのワークロードにアクセスすると、スレッド アフィニティ マスクを正しく割り当てることができないように見えることです。問題を説明するコードがいくつかあります。
このコードを実行すると、次の出力が得られます。
そのため、cpuUsage.NextValue 呼び出しは何らかの形でスレッド アフィニティ マスクを変更し、マスクを 1 に変更することも不可能にします。Nextvalue 呼び出しが何らかの方法でスレッド アフィニティ マスクと対話する必要があることは理にかなっています、各カーネルからパフォーマンス カウントを集計しているが、スレッド アフィニティ マスクの今後の変更に影響する理由が理解できない場合。この問題の説明や回避策はありますか?
ruby-on-rails - 2 人のユーザー間のアフィニティ スコアを構築/維持する方法は?
つまり、2 人のユーザー プロファイルを分析すると、相反するというスコアが得られます。
a.affinity(b) == b.affinity(a)
特に知りたいのは:
アフィニティ テーブルを実装するために使用するスキーマ
どのデータベースmysql、redis、..
アフィニティ スコアをバックグラウンドで更新するには、どのテクノロジを使用しますか?
ありがとう
c - include/sched.h 関数の実装
マルチコア マシンの特定のコアに手動でスレッドを割り当てる方法を調べたいと思いました。include/sched.h は、これに役立ついくつかのマクロと関数 (sched_setaffinity など) を定義していることがわかりました。ただし、関数は外部化されており、それらの定義が見つかりません。それらの機能はどこかに実装されていますか? はいの場合、デフォルトの実装をオーバーライドすることはどこで可能ですか? いいえの場合、どのように実装できますか?
また、新しい実装を追加すると、Linux カーネルを再コンパイルする必要がありますか?
multicore - 子が親の CPU/コア アフィニティを継承するのを防ぐことは可能ですか?
Java プログラムに関しては、Linux でこれを行うことに特に興味があります。Java からは制御できないという質問がいくつかあり、Sun/Oracle によってクローズされた RFE もあります。
ソース コードにアクセスでき、低水準言語を使用している場合は、関連するシステム コールを確実に行うことができます。ただし、サンドボックス化されたシステム (ソース コードがない可能性がある) は、より多くの課題を提示します。このプロセスごとまたはカーネルパラメーターを設定するツールは、親プロセスの外部からこれを制御できると考えていました。これは本当に私が求めているものです。
これがデフォルトである理由がわかりました。一部のバージョンの Windows では、これをある程度制御できるように見えますが、ほとんどの場合は制御できません。Linux で制御できると思っていましたが、オプションではないようです。