OmarchyでのiGPUとdGPU運用の検討

関連記録: 2026-09-13-GPU切替テスト障害ポストモーテム

結論

このMacBook Proでは、macOSはiGPUとdGPUの自動切り替えに対応していた。現在のOmarchyでもiGPUを中心にした運用は技術的に可能と考えられるが、macOSと同等の安全でシームレスな自動切り替えは期待しない方がよい。

最初はiGPU固定運用として検証し、安定性と消費電力を確認した後に、必要であればアプリ単位のdGPUオフロードを試す。

機体とmacOSの仕様

実機のモデル識別子は MacBookPro11,5。GPUは次の2基。

  • iGPU: Intel Crystal Well Integrated Graphics Controller(Intel Iris Pro 5200)
  • dGPU: AMD Radeon R9 M370X 2GB

Appleの「MacBook Pro (Retina, 15-inch, Mid 2015)」仕様にも、Intel Iris Pro GraphicsとAMD Radeon R9 M370X、およびautomatic graphics switchingが記載されている。

macOSではautomatic graphics switchingが既定で有効になり、実行中のアプリに適したGPUへ自動的に切り替える。これは単純な負荷の閾値による切り替えというより、アプリが必要とするグラフィックス機能に応じた選択と考えるのが適切である。外部ディスプレイを接続している間は高性能側のdGPUを使用する。

2026-09-13時点のOmarchyの状態

  • Omarchy: 4.0.3-1
  • Kernel: 7.2.3-arch1-3
  • セッション: Wayland / Hyprland
  • Intel GPUのドライバ: i915
  • AMD GPUのドライバ: amdgpu
  • Apple gmuxドライバ: apple_gmux がロード済み
  • 起動GPU: AMD dGPU(boot_vga=1
  • 内蔵パネル: AMD側の eDP-1 に接続
  • HyprlandとXwayland: IntelとAMDの両方のDRM deviceを開いている
  • QuickshellやChromiumなどの主なプロセス: AMDのrender nodeを使用
  • AMD GPUのruntime power control: on、状態は active
  • Intel GPU: 未使用時には suspended へ移行
  • バッテリー放電量: 調査時点で約26W(瞬間値)

現在は「通常はiGPU、必要時だけdGPU」ではなく、dGPUが表示の中心となっている。二つのGPUは認識されているが、dGPUを停止して節電する構成にはなっていない。

Linux側の切り替え機構

この世代のMacBook Proには、内蔵パネルの接続先とdGPUの電源を制御するApple gmuxがある。Linuxカーネルには apple_gmux とハイブリッドグラフィックス用の vga_switcheroo があり、内蔵パネルをIntel側へ切り替え、dGPUの電源を切る能力が実装されている。

ただし、一般的なmuxlessノートとは構成が異なる。外部映像出力は基本的にdGPU側へ接続されているため、iGPU固定中は外部ディスプレイが使えないか、dGPUを再び有効にする必要がある。

Hyprlandでは AQ_DRM_DEVICES によって優先GPUを指定できる。ただし、これだけではgmuxによる内蔵パネルの切り替えやdGPUの電源断は完了しない。

Omarchyの omarchy toggle hybrid gpusupergfxd 対応機種向けであり、Apple gmuxを操作する機能ではないため、この機体では使用しない。

検討できる運用

1. iGPU固定

起動時にgmuxをIntel側へ切り替え、HyprlandもIntelだけを使い、AMDを停止する。

利点:

  • 最も省電力化しやすい
  • AMD GPUに起因するサスペンド復帰障害を回避できる可能性がある

制約:

  • 外部ディスプレイの利用が難しくなる
  • 切り替え手順を誤ると、再起動後に内蔵画面が表示されない可能性がある

2. iGPUを通常使用し、アプリ単位でdGPUへオフロード

HyprlandをIntelで動かし、重いアプリだけ DRI_PRIME などでAMDへ描画をオフロードする。

理想に近い構成だが、R9 M370X、amdgpu、Apple gmuxの組み合わせで、アプリ終了後にdGPUが確実に停止するかは実機検証が必要。macOSと同等の自動運用になる保証はない。

3. 再起動を伴う手動切り替え

普段はiGPUを使用し、外部画面や高性能GPUが必要なときだけdGPUへ切り替えて再起動する。

利便性は落ちるが、この機種では状態を予測しやすい。

過去に確認した障害との関係

2026-09-12の調査では、サスペンド復帰時にAMD Radeon R9 M370Xの amdgpu がタイムアウトし、画面描画系が停止していた。

主なログ:

  • amdgpu ... ring gfx test failed (-110)
  • GPU Recovery Failed: -110
  • QuickshellとChromiumのcore dump
  • 同日に類似障害が複数回発生

このため、iGPU中心の運用は消費電力だけでなく、サスペンド復帰の安定性改善策としても検討する価値がある。

次回の検証手順

  1. root権限で /sys/kernel/debug/vgaswitcheroo/switch を読み、IGD、DIS、DIS-Audioの登録状態と電源状態を確認する
  2. 現在のEFI/gmux状態と、元へ戻す手順を確保する
  3. 外部ディスプレイを用意したうえで、ログアウト状態からIntel側への一時切り替えを試す
  4. 内蔵画面、バックライト輝度、Hyprland、音声を確認する
  5. サスペンドと復帰を複数回確認する
  6. dGPUが実際に Off または DynOff になったことと、バッテリー放電量の変化を測定する
  7. 安定してからiGPU起動を恒久化する
  8. その後、必要であればアプリ単位のdGPUオフロードを別段階で検証する

事前調査の時点では設定変更を行わず、vga_switcheroo の状態確認までを実施した。その後の切替試験と障害については次節に記録する。

2026-09-13の実機検証結果

vga_switcheroo を使ったiGPUへの切替には成功したが、90秒後にAMD dGPUを再開できず、画面表示と一部のシステム処理が停止した。電源ボタン長押しによる再起動後は正常に復旧した。

この結果から、現在のKernel 7.2.3と amdgpu では、稼働中にiGPUとdGPUを往復する方式を採用しない。詳細は 2026-09-13-GPU切替テスト障害ポストモーテム を参照。

出典