9

Linux カーネル スケジューラで Heterogeneous Multi-Processing (HMP) スケジューリングがどのように実装されているか知っている人はいますか?

これは、ODROID-XU3 ボードに付属のカーネルに実装されています。( https://github.com/hardkernel/linux.git -b odroidxu3-3.10.y-android )

特定のプロセスの負荷を計算し、その負荷に基づいて、より高速または低速の CPU に再スケジュールすることを大まかに知っています。より詳細な説明と、可能であればこの機能を実装する関数のコードの場所を探しています。

4

1 に答える 1

12

コード:

#ifdef CONFIG_SCHED_HMP主に以下のソースコードをチェックアウトkernel/sched/core.c


(そうではない)簡単な概要:

big.LITTLE CPU は、2 つの動作モードで構成できます。

  • IKS In Kernel Switcher ( CPU マイグレーションとも呼ばれ)
  • GTS -グローバル タスク スケジューリング( big.LITTLE MPとも呼ばれます)

GTS は、操作の異種形式、つまりHMPです。

最も抽象化されたレベルでは、HMP は現在、DVFSSMP 負荷分散を拡張するだけでサポートされています。これらは両方とも、(LITTLE コアよりも) 大きなコアのパフォーマンス上の利点を十分に認識しており、それに応じて、優先度が高く、CPU を集中的に使用するフォアグラウンド タスクをスケジュールします。

動的電圧および周波数スケーリング (DVFS) を使用して、必要な性能の瞬間的な変化に適応します。big.LITTLE の移行モードは、LITTLE コアの最高の DVFS 動作点を超える「大きな」CPU コアへの移行を可能にすることで、この概念を拡張します。移行には約 30 マイクロ秒かかります。対照的に、DVFS ドライバーは OS と個々のコアのパフォーマンスを通常 50 ミリ秒ごとに評価しますが、一部の実装ではサンプリングの頻度がわずかに高くなります。電圧と周波数を変更するには、約 100 マイクロ秒かかります。CPU またはクラスターの移行にかかる時間は DVFS の変更時間よりも短く、DVFS の変更に対する OS の評価期間よりも桁違いに短いため、big.LITTLE 移行により、プロセッサはより低い動作点でより頻繁に実行できるようになります。 、 そしてさらに、

big.LITTLE コアを処理するために拡張された DVFS

グローバル タスク スケジューリング モデルでは、DVFS メカニズムは引き続き動作しますが、オペレーティング システムのカーネル スケジューラは、システム内の大きなコアと小さなコアを認識し、高性能スレッドと高性能コア、および低パフォーマンスまたはメモリへの負荷分散を試みます。スレッドを高効率コアにバインドします。これは、現在の SMP ロード バランサーに似ており、システムで使用可能なコア間でスレッドのバランスを自動的に調整し、未使用のコアをアイドル状態にします。big.LITTLE グローバル タスク スケジューリングでも同じメカニズムが動作していますが、OS は各スレッドの負荷履歴を追跡し、その履歴とリアルタイムのパフォーマンス サンプリングを使用して、ビッグ コアと LITTLE コア間でスレッドのバランスを適切にとります。

参照: community.arm.com : big.LITTLE について知っておくべき 10 のこと

于 2014-08-26T06:48:08.740 に答える