プロセッサに何の関係もない場合はどうすればよいですか?

カーネルが何もしないのは非常に簡単だと仮定するのは理にかなっていますが、そうではありません。 Kernel Recipes 2018カンファレンスで、 Rafael Vysotskyは、プロセッサが何をするのか、何をする必要がないのか、カーネルがそれをどのように処理するのか、現在の戦略は何であるのか、そしてアイドルサイクルでの最近の作業が何もしないシステムのエネルギー状況をどのように改善したのかについて話しました。 。



Vysotskyがサポートするカーネルサブシステムの1つである非アクティブサイクルは、プロセスを実行する必要がない場合のCPUの動作を制御します。 Vysotskyはすべての定義を非常に正確に提供しました。CPUは、メモリから命令を受け取り、同じシステム内で同じことを処理する他のエンティティと同時に実行できるエンティティです。 1つのコアを持つ最も単純なシングルプロセッサシステムでは、このコアがCPUです。 プロセッサに複数のコアがある場合、これらの各コアはCPUです。 各コアが命令を同時に実行するための複数のインターフェースを持っている場合-Intelはそのようなシステムを「 ハイパースレッディング 」と呼びます-これらのスレッドのそれぞれはCPUになります。



実行するタスクがない場合、CPUはアイドル状態です。 または、より正確には、Linuxカーネルにはディスパッチ用のいくつかの内部クラスがあり、そのうちの1つは特別なアイドルクラスです。 非アクティブクラスを除き、クラスのいずれかのCPUにタスクがない場合、CPUは非アクティブと見なされます。 装置がこれを許可しない場合、CPUは実際の作業が完了するまで無駄な命令を実行する必要があります。 ただし、これは非常に非効率的な電気の使用であるため、ほとんどのプロセッサは、有用な作業を行うまでコアが転送するいくつかの低エネルギー状態をサポートしています。



単に非活動状態に出入りすることはできません。 出入りするのに時間がかかります。さらに、この状態に入ると、現在の状態の消費電力がわずかに増加し、終了すると、プロセッサが入った状態を消費します。 また、非アクティブ状態が深くなるほど、プロセッサが消費するエネルギーは少なくなりますが、そのような状態に出入りするコストは増加します。 これは、非アクティブの期間が短い場合、コンピューターリソースの最適な使用は浅い非アクティブであることを意味します。 より長い期間、より深い不活動状態に移行するコストは、節約されるエネルギー量の増加によって正当化されます。 したがって、必要な非アクティブ状態の深さを決定する前に、プロセッサがアイドル状態になる時間を予測することはカーネルの利益になります。 これは、非活動サイクルのタスクです。



このサイクルでは、スケジューラはCPUがアイドル状態であることに気付きます。これは、CPUに割り当てることができるタスクがないためです。 次に、スケジューラーはレギュレーターを呼び出します。レギュレーターは、入力可能な適切な非アクティブ状態の最適な予測を提供しようとします。 カーネルには、メニューとラダーの2つのノブがあります。 これらはさまざまな場合に使用されますが、どちらもほぼ同じことを試みます。CPUがアイドル状態になったときのシステムの状態と、非アクティブに費やした時間を監視します。 これは、CPUがアイドル状態になる時間を予測するために行われます。したがって、この状態に最も適した状態はどれですか。



この作業は、CPUスケジューラタイマーによって特に複雑になります。 スケジューラーはこのタイマーを開始して、CPUへのアクセス時間を分割します。複数のタスクを1つのプロセッサーで実行する必要がある場合、各タスクを少しだけ実行し、別のタスクを優先して定期的に延期できます。 CPUを分割する必要のあるタスクはないため、アイドルCPUでこのタイマーを実行する必要はありません。 さらに、タイマーがアイドルCPUで実行できる場合、コントローラーがディープアイドル状態を選択できなくなり、CPUがアイドル状態になる間隔が制限されます。 したがって、4.16までのカーネルでは、スケジューラーはレギュレーターを呼び出す前にタイマーをオフにしました。 CPUが中断時に目覚めると、スケジューラーは実行に必要なタスクがあるかどうかを判断し、タスクがある場合はタイマーを再起動しました。



コントローラーが長期間の非アクティブを予測し、この期間が実際に長いことが判明した場合、コントローラーは「勝ちます」:CPUは深い非アクティブの状態になり、エネルギーが節約されます。 しかし、規制当局が長期間の非活動状態を予測し、この期間が短いことが判明した場合、規制当局は、「非活動」状態に陥る費用が短期間の非活動期間のエネルギー節約によって報われないため、「負け」ます。 さらに悪いことに、レギュレータが短いダウンタイムを予測すると、ダウンタイムに関係なく「損失」します。期間が長くなった場合、節約の機会を逃し、短い場合、タイマーの停止と再起動のコストが無駄になりました。 または、言い換えると、リソースはタイマーの停止と開始に費やされるため、コントローラーが短いダウンタイムを予測したときにタイマーを停止しても意味がありません。



Vysotskyは、レギュレーターの動作を変更することを決定しましたが、主な問題は、レギュレーターが呼び出される前、つまり推奨される非アクティブ状態がわかる前にタイマーが停止することであるという結論に達しました。 カーネル4.17で非アクティブサイクルを返したため、タイマーを停止する決定は、規制当局が推奨した後に行われました。 彼が長いダウンタイムを予測した場合、タイマーを停止して、CPUを事前に起動させないようにします。 ダウンタイムが短いと想定される場合、シャットダウン時のリソースの浪費を避けるためにタイマーは残されます。 これは、タイマーがセキュリティ機能も実行し、ダウンタイムが予測よりも長くなった場合にCPUを起動し、レギュレーターに正しい判断の機会を与えることを意味します。



アイドルCPUが割り込みを介してウェイクアップすると、それが止められないタイマーまたは他のイベントであるかどうかにかかわらず、スケジューラーはすぐに作業の可用性について決定を下します。 作業がある場合、必要に応じてタイマーが再起動します。 そうでない場合、コントローラーが呼び出されます。 これは、タイマーが作動しているときと作動していないときの両方でレギュレーターを呼び出せることを意味しているため、これを考慮するためにレギュレーターを呼び出す必要があります。



勝ち負けの表を研究したヴィソツキーは、自分の変化が状況を改善すると信じています。 長期間の非アクティブを予測する場合、タイマーはまだ停止しているため、ここでは何も変わりません。 ダウンタイムが長い場合は勝ち、短い場合は負けます。 しかし、ダウンタイムの短い期間が予測される場合、私たちは勝ちます:期間が実際に短いことが判明した場合、タイマーの停止と開始を節約し、長い場合、停止されていないタイマーが私たちを目覚めさせ、別の予測をする機会を与えます。









ゲーム理論は実際の状況を完全に置き換えることはできないため、Vysotskyはこのアプローチを多くのシステムでテストしました。 上記のグラフは、テストされたすべてのシステムの典型的なものです。 アイドルシステムでの電力消費の時間依存性を示しています。 緑色の線は古い非動作サイクル、赤色の線は新しい動作サイクルです。 新しいスキームによれば、消費されるエネルギーが少なく、さらに予測可能です。 テストされたすべてのCPUがライン間に大きなギャップを持っているわけではありませんが、すべてのCPUが不均一な緑の下に平らな赤いラインを示しました。 ヴィソツキーが言ったように、この新しいスキームは短期間の非活動状態を予測する可能性は低いですが、多くの場合、その短い期間については正しいことが判明しています。



聴衆からの質問に答えて、ヴィソツキーはこの仕事は建築に依存していると言った。 特に、Intelプロセッサにはかなりの数の非アクティブ状態があり、予測が正しい場合にレギュレータが成功の可能性が最も高い状態をレギュレータから選択できるため、Intelプロセッサのメリットが得られます。 しかし、ARMプロセッサは新しい回路の恩恵も受けます。









アイドル時の電力消費の20%の低下は、取るに足らない成果のように思えるかもしれませんが、実際にはそうではありません。 ピーク負荷にうまく対処したいシステムでは、通常モードでパワーリザーブを設定する必要があります。これは、非アクティブ時に表示されます。 上記のグラフは、メール、ファイル転送、VPN、NTPなどを扱うサーバーでの年間のプロセッサ使用量を示しています。 黄色は単純な時間を意味します。 このエネルギーの20%を節約することは、私のプロバイダーにとって快適であり、地球にとってはより良いことです。



All Articles