3
低速のIntel Ice Lake Xeon、動作周波数の上昇に予想より時間がかかる

インテル カスケード レイク Xeon

(画像クレジット:Shutterstock)

Linux カーネルへの最近のパッチ (Phoronix 経由) は、Intel のほぼ神話的な 10nm+ Ice Lake Xeon プロセッサの興味深い問題を指摘しています。CPU が特定のスリープ状態から抜け出した後、通常の周波数に戻るまでに予想よりも長い時間がかかり、その結果、CPU クロック レートが「不確実」になり、パフォーマンスの一貫性に影響を及ぼします。

まあ、様子を見ましょう。本題に戻りましょう。プロセッサはアイドル期間中の全体的な電力消費を削減するために、様々なCステート(スリープ)に移行します。Cステートはコアごとに異なるレベルの省電力設定が可能で、最も深いスリープレベルではコアクロックの停止、キャッシュのフラッシュ、電圧の低下が行われ、最大限の省電力効果が得られます。さらに、パッケージCステートを適用することで、ファブリックやアンコアなど、CPUパッケージ上のすべてのコアで共有されるリソースの電力とクロックを削減できます。

スリープ状態が深くなるほど、各プロセッサはより多くの電力を節約できます。しかし、深いスリープ状態からフルスピードへの復帰には、浅いスリープ状態よりも時間がかかります。レポートによると、Ice Lake Xeonプロセッサでは、特定の電力状態では、このプロセスに時間がかかるようです。 

Intelの「カーネルテストロボット」がパッチを投稿し、問題の説明を行いました。Phoronixが指摘しているように、この修正はIntelの従業員によるものであり、同社が自社のテストでこの問題に遭遇した可能性が高いと考えられます。問題の説明は以下の通りです。 

ICXプラットフォームでは、C1E以上のCステートから復帰すると、CPU周波数が徐々に上昇します。この機能は多くの場合電力を節約しますが、予期しない結果を引き起こす可能性もあります。たとえば、CPU周波数の不確実性により、ワークロードのパフォーマンスが不安定になる可能性があります。また、CPU使用率が低い場合、CPU周波数が特定のレベルに固定されない可能性があります。 

したがって、このパッチは C1E の自動プロモーションを無効にし、C1E を別のアイドル状態として公開します。これにより、必要に応じて C1E と C6 を sysfs 経由で無効にすることができます。

Tom's Hardware の最高のニュースと詳細なレビューをあなたの受信箱に直接お届けします。

この問題を解決するために、システムはC1EとC6の状態を完全に無効化し、チップが低位のスリープ状態に入るのを防ぐことができます。エンジニアはこの問題についてさらに詳しく説明しています。

C1とC1Eに加えて、C6の終了レイテンシも専用ツールで測定しました。しかし、_CSTで測定された終了レイテンシ(41us)は、実際に測定した値(128us)よりもはるかに短いです。これは、_CSTがC6の測定時にPC6+C6ではなく、PC0+C6からのウェイクアップ時の終了レイテンシを使用しているためと考えられます。理論上は最も長いレイテンシが必要なため、後者を選択します。

ここで、問題は終了レイテンシ(CPUがフルスピードに戻るまでの時間)の測定方法とカーネルへの公開方法に起因していることがわかります。Cステート情報をカーネルに伝達するACPI_CSTは、プロセッサがPC0+C6状態にあるときに測定されたレイテンシをリストします。つまり、1つまたは複数のコアがC6スリープ状態にある可能性がありますが、パッケージの残りの部分(ファブリックとアンコア)は依然としてフルスピード(PC0)で動作しています。この状態では、コアが通常動作に戻るのにかかる時間はわずか41マイクロ秒です。 

しかし、プロセッサがPC6+C6状態に入ると、コアだけでなくパッケージも電源オフ(PC6状態)になるため、プロセッサがフルスピードに戻るまでに時間がかかります。Intelは、これらの状況でのスリープ終了レイテンシを128マイクロ秒と測定しました。つまり、カーネルに誤ったスリープ終了値が与えられているだけであると考えられます。 

これが他の Intel プロセッサとどう違うのかを知るために、Skylake ベースのプロセッサの一般的なスリープ終了待ち時間を調べてみました。

(画像提供:メトロポリア応用科学大学)

メトロポリア応用科学大学のVladislav Govtva氏が昨年初めに発表した興味深い学士論文[PDF]を参考にしました。彼は複数の世代のIntelプロセッサのスリープ解除レイテンシを測定しており、上記はIntel Xeon Platinum 8170M (Skylake) を使用した結果です。 

Govtvaは、C6状態からの最大ウェイクレイテンシ(スリープ解除レイテンシと同じ)を約108マイクロ秒と測定しました。これはIce Lakeプロセッサよりも20マイクロ秒高速です。測定基準は異なる可能性がありますが、単純に比較すると、スリープ解除レイテンシが18.5%増加することがわかります。 

Intelは、特定の条件下でシステムが特定のスリープ状態を無効にできるようにすることでこの問題を「修正」したようですが、これは多くの種類のアプリケーションには当てはまらない、単なる特殊なケースである可能性があります。Intelにさらなる説明を求めていますが、Ice Lakeがまだ正式にリリースされていないため、多くの情報は得られそうにありません。 

Intelが初期段階の苦労を乗り越えながら、このパラメータをさらに調整し続けるかどうかは興味深いところです。Phoronixは、このパッチが来月開始されるLinux 5.9サイクルに組み込まれる可能性があると予測していますが、パフォーマンスの向上と引き換えに消費電力が増加する可能性があります。 

ポール・アルコーンはTom's Hardware USの編集長です。CPU、ストレージ、エンタープライズハードウェアに関するニュースやレビューも執筆しています。