EVC モードを Ice Lake で設定しているにも関わらず、Linux OS 内で CPU が Skylake と表示される
search cancel

EVC モードを Ice Lake で設定しているにも関わらず、Linux OS 内で CPU が Skylake と表示される

book

Article ID: 436274

calendar_today

Updated On:

Products

VMware vCenter Server VMware vSphere ESXi

Issue/Introduction

免責事項: これは英文の記事 「Linux OS Identifies CPU as Skylake Despite EVC Mode Configured for Ice Lake」の日本語訳です。記事はベストエフォートで翻訳を進めているため、ローカライズ化コンテンツは最新情報ではない可能性があります。最新情報は英語版の記事で参照してください。


Enhanced vMotion Compatibility (EVC) モードを使用している環境において、Linux OS のパフォーマンス・モニタリング・ユニット (PMU) が、EVC モードの設定値から想定される世代よりも古い CPU 世代を報告する場合があります。
例えば、EVC モードを Ice Lake に設定していても、Linux 側では CPU が依然として Skylake と認識されることがあります。

Environment

VMware vCenter Server

Cause

本事象は Ice Lake EVC モードにおいて、CPUID モデル値が本来の Ice Lake(0x6A)ではなく、Skylake(0x55)と設定されるために発生します。
その結果、Ice Lake EVC モードでパワーオンされた仮想マシンでは、Linux OS が pmu_name において CPU を Skylake と表示します。

Linux では、/sys/devices/cpu/caps/pmu_name 属性を元に CPU のマイクロアーキテクチャを報告します。この挙動は、どのパフォーマンスモニタリングカウンタ (PMC) が利用可能かを判断する際に役立ちます。
このマイクロアーキテクチャレベルの識別により、Linux はたとえ Skylake と Cascade Lake のようなバージョンの違いがあったとしても、共通の基本設計を持つ CPU を Skylake などの単一の名称でグループ化することが可能になります。
Linux はマイクロアーキテクチャに着目することで、共通のコアアーキテクチャ特性を持つ CPU 間でのパフォーマンスモニタリング機能の迅速な互換性チェックを実現しています。

Resolution

VMware by Broadcom は Linux とは異なるアプローチを採用しており、モデルとステッピングの両方を考慮したバージョンレベルで CPU を識別します。
これにより、Skylake に対する Cascade Lake の追加命令セットのように、アーキテクチャ的には類似していても、特定の拡張や最適化が施された CPU を区別することが可能になります。
2 つの CPU が Linux の pmu_name に反映されるような同一のマイクロアーキテクチャを共有していても、VMware 上では異なる CPU 名(例:Skylake と Cascade Lake)として扱われるのはこのためです。
このバージョンベースの命名方式は、わずかな CPU の差異が互換性やパフォーマンスに影響を与える可能性がある仮想化やワークロード管理において、特に有効に機能します。

この識別手法の違いが、Linux の pmu_name では Cascade Lake が Skylake として認識される一方で、VMware では別物として扱われる理由です。

恐れ入りますが、既にリリース済みの EVC モードを修正することはできません。
Linux は CPU をマイクロアーキテクチャ(pmu_name)で識別し、特定のバージョンやステッピングではなくコア設計に基づいてグループ化するため、結果としてこのような挙動となります。