2017-03-20 12 views
2

スレッド量子(here,hereおよびhere)に関するいくつかの記事と記事を読んでいます。どうやらWindowsは、Windowsの「モード」(サーバーなど)に応じて、スレッドクォンタムの固定数のCPUチックを割り当てます。しかし、私たちが読むことができる最後のリンクから:いくつかの 粒度が計算に導入されているがスレッド量子数:それを計算する方法

(スレッド量子)10-200クロックの間には、Linux環境下で(すなわち10-200ミリ秒)ティック

Linux上で量子長を計算する方法はありますか?とにかくそれを計算するのは意味がありますか? (私の理解からスレッドはまだ先取りされているので、何もスレッドが量子の全期間中実行されることはありません)

開発者の視点からは、スレッドの数が与えられたときのプログラムの時間と「彼らがしていること」(スレッドの最適な数を見つけるためにすべてのテストを削除することは適切かもしれないが、正しいアプローチではないとは思うかもしれません)

答えて

3
  1. Linuxでは、デフォルトのリアルタイム量子長定数は、少なくとも4.xカーネルではdeclared as RR_TIMESLICEです。カーネルの設定中にHZを定義する必要があります。
  2. の間に、量子化が終了したスレッドを一時停止してから再開すると、たとえばload averageのような多くのものに依存する可能性があります。
  3. 実行時間を少なくともある程度正確に予測できるようにするには、ターゲットプロセスにrealtime priorityを指定します。リアルタイムプロセスはround-robin algorithmに従ってスケジューリングされます。これは一般に、一般的なLinuxスケジューリングアルゴリズムより簡単で予測可能です。
  4. リアルタイム量子長を取得するには、sched_rr_get_interval()を呼び出します。
+0

私は、 'sched_rr_get_interval'への呼び出しがどう進化するかを私のシステムで調べるつもりです。 1と4の間の1つの小さな質問ですが、量子の長さは一定ですが、4からは量子が動的に進化するようですが、私の理解には欠陥がありますか? – Adonis

+0

@asettouf実際の長さはいつでも変更できるのに対し、それは既定値([1]に既に追加されている)だけであることを忘れていました。明確にするために、[このソース](http://elixir.free-electrons.com/linux/v4.12.1/source/kernel/sched/core.c#L6881)を参照してください。 – hidefromkgb

関連する問題