Linux 3.10 CFSには「タイムスライス」はありますか?

Linux 3.10 CFSには「タイムスライス」はありますか?

Linux 3.10 CFSには「タイムスライス」はありますか?

私は混乱しています。計画設計 - CFS.txt具体的に定義:

CFS はナノ秒の粒度計算を使用し、 jiffies やその他の HZ の詳細に依存しません。したがって、CFSスケジューラには、以前のスケジューラと同じ「タイムスライス」という概念がなく、経験的な方法もありません。中央調整可能なパラメータは1つだけです(CONFIG_SCHED_DEBUGを有効にする必要があります)。

/proc/sys/kernel/sched_min_grinderity_ns

スケジューラを「デスクトップ」(すなわち、低レイテンシ)ワークロードから「サーバ」(すなわち、良好なバッチ)ワークロードに調整するために使用することができる。

ただし、マルチタスクスケジューラ調整ガイドでは、「タイムスライス」を計算するための2つの異なる式を提案します。 (実行可能なジョブの数によって異なります)たとえば、次のようになります。オープン水勢ガイド

私は孤立したCPUでのみSCHED_FIFOスレッドを実行します。

答え1

CFS「以前のスケジューラのような」時間はありません。

タイムCFSスライスは、基本的に同じスレッドに割り当てられたCPU実行時間の連続遷移の間の期間です。これにより、2つのオプションが提供されます。

  • すべてのスレッドはmin_granularity_ns少なくとも1回実行するのに十分な時間がありますlatency_ns。だからあなたのtimeslice = scheduling period * (task's weight/total weight of tasks in the run queue)

  • 受け入れるスレッドが多すぎるlatency_nsため、次に基づいて実行したいスレッドをより多く受け入れるには、タイムスライスが大きくなります。timeslice = number_of_running_tasks * sched_min_granularity_ns

だからCFS代表する完全公平なスケジューラは、優先順位の低いスレッドを除外することなく、すべての人の時間を無差別に拡張します。

関連情報