golang
ちょうどruntime.GOMAXPROCS(1)
のアプリケーションを1つ実行するように設定するにはgoroutine
を同時に実行しますが、アプリケーションを特定のCPU上で実行させたいのですか?あなたがバイナリ行く起動するには1つのゴルーチンではなく特定のCPUで実行しますか?
答えて
、それはWindows上でのみCPU 0で実行されるように、あなたは「親和性」パラメータでstart
コマンドを使用することができますexample.exe
言う:
start /affinity 1 example.exe
私はまさにあなたが何であるかを知りません実現しようとしていますが、this document describing GOMAXPROCSを参照してください - Goランタイムが同じことをより効率的に行う場合があります。 GCコンパイラ複数のOSスレッドを利用するためのランタイム・サポートを可能にするために、デフォルト値1以上にをGOMAXPROCSを設定する必要があります(6グラムまたは8グラム)の下で
は、それがすべてですGOMAXPROCSが1より大きい値に設定されていない限り、goroutinesは同じスレッドを共有します。
GOMAXPROCSが1より大きい場合、スレッド数が多いスレッドプール上で実行されます。 gccgoコンパイラGOMAXPROCSは、実行中のゴルーチンの数と事実上同じです。 n
がマシン上のプロセッサーまたはコアの数であるとします。環境変数GOMAXPROCS >= n
を設定するか、またはruntime.GOMAXPROCS(n)
を呼び出すと、n個のプロセッサーの間でゴルーチンが分割され(配布され)、 になります。
しかし、プロセッサの数が増えると、パフォーマンスが線形に向上することは必ずしも必要ではありません。主に、より多くの通信が必要になるためです。
number of goroutines > 1 + GOMAXPROCS > 1
だから、実行する唯一のゴルーチンがある場合:親指の体験ルールは、最高のパフォーマンスが得られ、そして次も従うべきn個のコアのためのn-1にGOMAXPROCSを設定していることのようですある時点で、GOMAXPROCSを設定しないでください!
ゴルーチンを特定のOSスレッドにロックする場合は、runtime.LockOSThreadでこれを行うことができます。
LockOSThreadは呼び出し元のゴルーチンを現在の操作 システムスレッドに接続します。呼び出し元のgoroutineが終了するか、または UnlockOSThreadを呼び出すまで、スレッドは常にそのスレッドで実行され、他には のゴルーチンが実行できません。
詳細については、https://golang.org/pkg/runtime/を参照してください。
私はOPの質問に全く答えないと思います。また、OSスレッド!= CPUコア、私はOPが求めているものと信じています。 – syntagma
- 1. 1つのCPUコアで2つのサーバーを実行できますか?
- 2. OSMC:1つのコアで100%CPUを実行しているスクリプト
- 3. Tensorflow:特定のCPUコアでopsを実行する
- 4. 特定のバージョン(3ではなく2.7)でiPythonノートブックを実行
- 5. 1つのファイルからサイトの特定のページでカスタムJavaScriptを実行する
- 6. 実行時間をCPUサイクルで測定しますか?
- 7. ゴルーチン実行順序
- 8. 1つのプロセスのスレッドは、複数の物理CPUで実行できますか?
- 9. 1つのCPUコアで2つのプロセスを同時に実行できますか?
- 10. CPUプロセスには少なくとも1つのスレッドがありますか?
- 11. ゴルーチン間のコンテキスト切り替えをいつ実行するかを決定しますか?
- 12. Antlr4は改行を1つではなく無視します
- 13. レール内のcronで1つの特定のコントローラアクションを実行してください。
- 14. SQLクエリは1つのクエリで実行できますか?
- 15. tableviewのsegue viaボタンは、1つではなく2つのseguesを実行します
- 16. ランダムなレコードと特定のレコードを1つのクエリで取得しますか?
- 17. x86 CPUで特定のハードウェアウォッチポイントでgdbが停止しない
- 18. phpunitで1つのファイルまたはマップを実行します。
- 19. ビジターCPUでWebページC#の機能を実行しますか?
- 20. df.iloc [1]。列名特定の値ではなく、行全体を返しますか?
- 21. PHP MySQLは1つの接続で2つのクエリを実行しますか?
- 22. 2つのif文、なぜ1つは実行されないのですか?
- 23. Vlookup 1つのワークブックから特定のワークブックまでの特定の基準
- 24. 特定の領域でアクションを実行していますか?
- 25. 特定のエージェントセットで構成を実行しますか?
- 26. pythonで特定のユニットテストをmain()から実行します
- 27. 特定の条件で行を1つの行にマージしようとする
- 28. ではなく、1つの
- 29. 特定のマシンでSpring @Scheduledタスクを実行しないでください
- 30. GDB:特定のブレークポイントまで実行
start/affinity 1 gobinary.exe –
プロセッサアフィニティの設定は、OS固有であり、プロセス自体の外で行うのが最適です。 Linux上の 'taskset'のようなコマンドラインツールは、通常これを行うために使用します。 – JimB