答えて
example(これは単なるベンチマークです)、スレッドのアフィニティを設定するときに実際のパフォーマンスを得ることができます(アフィニティおよびその他のハッキングでパフォーマンスが10倍向上します)。
このベンチマークアフィニティ設定では、実際にコアクワッドの機能を利用することができます。これは実際には2つのデュアルコアプロセッサであるため、異なるコア間の通信価格は同じではありません。
2つの並列シミュレーションを実行して、コアペア間の高価な相互作用を排除します。各シミュレーションはそのコアのペアで実行され、ここで親和性はスレッドを別のコアから別のコアに移動して戻すのを避けるために再び役立ちます。
ある時点で、バッチ処理を行うためにMicrosoft Wordを自動化していて、マルチCPUシステムでランダムにクラッシュしていました。メモリアクセスのバグであり、Wordプロセスのアフィニティを単一のコアでのみ実行するように設定し始めたと考えました。それが問題を解決しました。 これは正確にあなたが探しているものではないことを知っているが、共有することに決めました:)
あなたはスケジューラを圧倒することができると思う。これはかなり珍しいはずです。
icですが、スケジューラは私のプログラムと環境についてほとんど知りません。スレッド数=ハードウェアの並列性、専用サーバーを検討してください。別のコアにスレッドを接続しないと、システムスレッドによって引き起こされるいくつかの散発的なコンテキストスイッチが削除されますか? –
@robinコンテキストスイッチは、どのコアが実行されているか、または中断できるかどうかではなく、実行中のコア(親和性)がコンテキストスイッチを排除しません。あなたが得るかもしれないのは、同じコアに戻って再スケジューリングされた場合(そしてアーキテクチャーがコアごとにローカルキャッシュをサポートしている場合)、スレッドがまだローカルキャッシュにホットメモリを持つ可能性があるということです。 –
@chibacity:ホットキャッシュは良い点です、tnx。コンテキストスイッチについて - 私はプログラムスレッドを中断するいくつかのシステムスレッドについて考えました。プログラムスレッドがコアに接続されている場合は、それが戻って2つのスイッチがあります。スケジューラがそのようなケースを完全に処理するかどうかわからない別のプログラムスレッドを中断することができます。 –
MKは、アプリケーションが一定量のコアで実行する必要があると感じる場合にのみ、この必要条件が述べられています。彼の例では合理的です。他のケースでは、アプリケーションがシステムにボトルネックを起こさないようにしたい場合があります。たとえば、プロセスが4コアのマシンで同時に実行され、余分な時間を待たなければならない他のプログラムが発生します。代わりに、2つのコアだけを使用して、他の2つのコアがさまざまなアプリケーションの他の重要な情報を処理できるようにプログラムを設定することもできます。ほとんどの場合、特定のニーズがある場合やアプリケーションが特定のパフォーマンス調整を必要とする場合を除いて、それ自体で、または他のアプリケーションと効率的に実行する必要がない限り、これを行う必要はありません。
は、前述のケースでスレッド優先順位が設計されていませんか? –
それはあなたのアプリケーションが何をするかで終わりますが、ミューテックスを使用する方が良い場合もあれば、スピンロックがうまくいく場合もあります。スレッドの優先順位は次のような状況で使用できます:私はタスク1,2,3を持っています。私は現在タスク1と2を実行しています。タスク1が終了すると、タスク3を行うことができます。そのため、タスク1当面の優先事項として、タスクをすばやく完了できるようにします。これもまた、アプリケーションに大きく依存し、何が達成される必要があるかにも依存します。 –
- 1. VSCodeの "editorWhitespace.foreground" workbench.colorCustomizations設定は実際に動作しますか?
- 2. CUDAストリームで実際にパフォーマンスを向上させることはできますか?
- 3. sys.exitは実際に複数のスレッドで何をしますか?
- 4. Java Singletonと静的 - 実際のパフォーマンス上の利点はありますか?
- 5. 実際のH2データベースの経験はありますか?
- 6. MenuBar JavaFXを実際のフレームの「上」に設定する
- 7. Swiftで一般的な被験者の実装を書く
- 8. は被験者、10未満9つの
- 9. backgroundView:willDisplayCellまたはinitを設定するとパフォーマンスが向上しますか?
- 10. asp.netグリッドのページデータを取得する際のパフォーマンスが向上
- 11. str_replaceは、検索パラメータは、被験者
- 12. 依存関係のある被験者をテストするには?
- 13. HTML5ファイルAPIは実際にユーザーのファイルアップロードの経験を変更しますか?
- 14. postgresqlのカラムに "NOT NULL"を設定するとパフォーマンスが向上しますか?
- 15. Qtの設定オプション "-commercial"は実際には何ですか
- 16. 被験者対公開
- 17. TrueとFalseの実際の値は何ですか?実際には言語ごとに変化しますか?
- 18. 設定ローカルホストと実際のホスティングのメンバーシップ
- 19. cosmosdbからデータをコピーする際のパフォーマンスを向上させる方法は?
- 20. EarlGreyアクションで実際にブレークポイントを設定することはできますか?
- 21. バックエンドサーバーにアクセスする際のAngular2レンダリングのパフォーマンスを向上させる方法は?
- 22. HandlersとThreadの実際のパフォーマンスに何か影響はありますか?
- 23. エンティティフレームワークプロバイダが実行する実際のSQLを設定することはできますか?
- 24. Webアプリケーションを実際にオブジェクト指向にすることはできますか?
- 25. Java Visual VMの実際の実行スレッド
- 26. オブザーバーデザインパターン - 具体的な被験者とオブザーバー
- 27. Rx:被験者の目的は何ですか?
- 28. ビューを50以上のビューにまたがって実行すると、クエリのパフォーマンスが向上しますか?
- 29. jQuery Cookieが実際にCookieを設定しないのはなぜですか?
- 30. は、実際にはイメージビューがnullに設定されていますか?
+1、興味深い例。他のハックや実際のアフィニティの使用に関するリンク –
http://www.rsdn.ru/forum/cpp/3539197.1.aspxここでは、C実装についての優れた記事ですが、ロシア語です。 Google翻訳で翻訳することができます:http://translate.google.com/translate?js=n&prev=_t&hl=en&ie=UTF-8&layout=2&eotf=1&sl=ru&tl=en&u=http%3A%2F%2Fwww.rsdn。 ru%2Fforum%2Fcpp%2F3539197.1.aspx – ssmir