GNU/Linux >> Linux の 問題 >  >> Linux

Linuxスケジューラのタイムスライスを知るには?

CFS (プロセスのデフォルト スケジューラ) には固定のタイムスライスがなく、対象のレイテンシ (sysctl_sched_latency) に応じて実行時に計算されます。 ) および実行中のプロセスの数。タイムスライスが最小粒度 (sysctl_sched_min_granularity) より小さくなることはありません ).

タイムスライスは常に sysctl_sched_min_granularity の間になります そして sysctl_sched_latency 、デフォルトはそれぞれ 0.75 ミリ秒と 6 ミリ秒で、kernel/sched/fair.c で定義されています。

ただし、実際のタイムスライスはユーザー空間にエクスポートされません。


特定のプロセスに割り当てられるクォンタムは異なる場合があります:

<ブロック引用>

sched_latency_ns を調整することで「スライス」を調整できます およびsched_min_granularity_ns ただし、「スライス」は固定量ではないことに注意してください。また、CFS プリエンプションの決定は、瞬間的な状態に基づいていることに注意してください。タスクは CPU 時間の完全な (可変の) 「スライス」を受け取った可能性がありますが、より価値のあるタスクが利用可能な場合にのみプリエンプションがトリガーされます。 ..しかし、多少似ています。

これは、デフォルトの Linux スケジューラである Completely Fair Scheduler が、固定のタイムスライスではなく、ある割合のプロセッサをプロセスに割り当てるためです。つまり、各プロセスのタイムスライスは現在の負荷に比例し、プロセスの優先度値によって重み付けされます。

SCHED_RR を使用する特殊な目的のリアルタイム プロセスの場合、デフォルトのタイムスライスは Linux カーネルで RR_TIMESLICE として定義されています。 include/linux/sched/rt.h にあります。

/*
 * default timeslice is 100 msecs (used only for SCHED_RR tasks).
 * Timeslices get refilled after they expire.
 */
#define RR_TIMESLICE            (100 * HZ / 1000)

sched_rr_get_interval() を使用できます 特定の SCHED_RR プロセスの SCHED_RR 間隔を取得します。


Linux
  1. Linuxでウェブサイトの読み込み速度をテストする方法

  2. Linuxでタイムゾーンを設定または変更する方法

  3. Linux –ファイルの作成日を見つける方法は?

  1. Linux – Dmesgで何をgrepするかを知る方法は?

  2. Linux で at を使用してタスクをスケジュールする方法

  3. Linux でデフォルトのシェルを変更する方法

  1. LinuxでVimをデフォルトのエディターとして設定する方法

  2. LinuxでデフォルトゲートウェイIPを見つける方法

  3. Linuxでプログラムがスタックしている場所を知る方法は?