「NVIDIA Optimus」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(カテゴリを修正)
 
(他の1人の利用者による、間の10版が非表示)
1行目: 1行目:
[[Category:グラフィック]]
+
[[Category:グラフィック]]
 
[[en:NVIDIA Optimus]]
 
[[en:NVIDIA Optimus]]
 
[[es:NVIDIA Optimus]]
 
[[es:NVIDIA Optimus]]
11行目: 11行目:
 
{{Related|NVIDIA}}
 
{{Related|NVIDIA}}
 
{{Related|nvidia-xrun}}
 
{{Related|nvidia-xrun}}
{{Related|External GPU}}
+
{{Related|外付け GPU}}
 
{{Related articles end}}
 
{{Related articles end}}
   
23行目: 23行目:
 
* [[#NVIDIA グラフィックスのみを使う]] - 内蔵グラフィックスよりも優れたパフォーマンスを発揮します。ただし、より多くの電力を消費します (これはモバイル端末においては喜ばしいことではありません)。この方法は、[[#optimus-manager を使う|optimus-manager]] と [[#nvidia-xrun を使う|nvidia-xrun]] と同じ基本プロセスを利用しており、より自動化されたアプローチを取る前にトラブルシューティングや一般的な機能検証のためにこの方法を利用するべきです。
 
* [[#NVIDIA グラフィックスのみを使う]] - 内蔵グラフィックスよりも優れたパフォーマンスを発揮します。ただし、より多くの電力を消費します (これはモバイル端末においては喜ばしいことではありません)。この方法は、[[#optimus-manager を使う|optimus-manager]] と [[#nvidia-xrun を使う|nvidia-xrun]] と同じ基本プロセスを利用しており、より自動化されたアプローチを取る前にトラブルシューティングや一般的な機能検証のためにこの方法を利用するべきです。
 
* 両方を使う (必要なときに NVIDIA GPU を使用し、それ以外のときは電源を落として電力を節約する):
 
* 両方を使う (必要なときに NVIDIA GPU を使用し、それ以外のときは電源を落として電力を節約する):
** [[#PRIME render offload を使う]] - NVIDIA が公式にサポートしている方法です。
+
** [[#PRIME レンダーオフロードを使う]] - NVIDIA が公式にサポートしている方法です。
** [[#optimus-manager を使う]] - 1つのコマンドでグラフィックスを切り替えます (適用させるにはログインし直さなければなりません)。NVIDIA GPU の性能を最大限に引き出し、使用していない場合はオフにします。1.4 リリース以降では、AMD と NVIDIA の組み合わせもサポートされています。
+
** [[#optimus-manager を使う]] - 1つのコマンドでグラフィックスを切り替えます (適用させるにはログインし直さなければなりません)。また、PRIME レンダーオフロードとのハイブリッドモードもサポートしています。NVIDIA GPU の性能を最大限に引き出し、使用していない場合はオフにします。1.4 リリース以降では、AMD と NVIDIA の組み合わせもサポートされています。
 
** [[#nvidia-xrun を使う]] - NVIDIA グラフィックスを使用して別の TTY で別の X セッションを実行します。NVIDIA GPU の性能を最大限に引き出し、使用していない場合はオフにします。
 
** [[#nvidia-xrun を使う]] - NVIDIA グラフィックスを使用して別の TTY で別の X セッションを実行します。NVIDIA GPU の性能を最大限に引き出し、使用していない場合はオフにします。
 
** [[#Bumblebee を使う]] - 指定したアプリケーションに対しては NVIDIA グラフィックスを使用し、その他のアプリケーションに対しては Intel グラフィックスを使えるようにすることで、Windows ライクな機能を提供します。しかし、重大なパフォーマンスの問題を抱えています。
 
** [[#Bumblebee を使う]] - 指定したアプリケーションに対しては NVIDIA グラフィックスを使用し、その他のアプリケーションに対しては Intel グラフィックスを使えるようにすることで、Windows ライクな機能を提供します。しかし、重大なパフォーマンスの問題を抱えています。
50行目: 50行目:
 
# rmmod nvidia
 
# rmmod nvidia
   
== nvidia グラフィックのみを使 ==
+
== NVIDIA グラフィックのみを使 ==
   
[[NVIDIA|プロプライエタリ NVIDIA ドライバー]] nouveau ドライバーのような動的な切り替えはサポートしていません (つまり NVIDIA デバイか使用できません)また、NVIDIA は画面にティアリングが発生する問題を認識ていますが未だに修正がなされていませんそのかわり、ディスクリート GPU をして nouveau ドライバーよりも高い性能を発揮することができます (2017年1月現在)。
+
プロプライエタリ NVIDIA ドライバは、プライマリレンダリングプロバイダとて設定することができま[[NVIDIA#DRM カーネルモード設定]] を有効化することよって prime sync を有効化しない限り、顕著なスクリーンティアリングの問題が発生します (詳細は [https://devtalk.nvidia.com/default/topic/957814/linux/prime-and-prime-synchronization/] を参照)。ディスクリート GPU を使用することができ ([https://www.phoronix.com/scan.php?page=article&item=nouveau-410-blob&num=1 2017年1月]現在)、パフォーマンスにおいて nouveau ドライバよりも顕著な優位性を持っています
   
  +
まず、[[NVIDIA]] ドライバと {{Pkg|xorg-xrandr}} を[[インストール]]してください。そして、{{ic|/etc/X11/xorg.conf.d/10-nvidia-drm-outputclass.conf}} を設定してください。この設定ファイルのオプションは、このセットアップとの互換性を提供するために、パッケージによって提供されている {{ic|/usr/share/X11/xorg.conf.d/10-nvidia-drm-outputclass.conf}} と組み合わされます。
まず {{Pkg|nvidia}} と {{Pkg|xorg-xrandr}} パッケージをインストールしてください。
 
   
  +
{{Note|セットアップによっては EDID ファイルによる nvidia ドライバーのディスプレイの値の自動検出がされなくなることがあります。回避策は [[#解像度や画面スキャンが正しく認識されず Xorg.log に EDID のエラーが表示される]] を見て下さい。}}
そして、{{ic|xorg.conf}} を設定します。NVIDIA カードの PCI アドレスを知る必要があるので、次のコマンドを実行してください:
 
 
$ lspci | grep -E "VGA|3D"
 
 
NVIDIA と書かれた行の最初の7文字が PCI アドレスです。例えば {{ic|01:00.0}} などと表記されます。{{ic|xorg.conf}} では {{ic|#:#:#}} という形式で表記する必要があります。例えば {{ic|01:00.0}} の場合 {{ic|1:0:0}} となります。
 
 
{{Note|セットアップによっては EDID ファイルによる nvidia ドライバーのディスプレイの値の自動検出がされなくなることがあります。解決方法は [[#解像度や画面スキャンが正しく認識されず Xorg.log に EDID のエラーが表示される]] を見て下さい。}}
 
   
 
{{hc|/etc/X11/xorg.conf.d/10-nvidia-drm-outputclass.conf|
 
{{hc|/etc/X11/xorg.conf.d/10-nvidia-drm-outputclass.conf|
80行目: 74行目:
 
ModulePath "/usr/lib/xorg/modules"
 
ModulePath "/usr/lib/xorg/modules"
 
EndSection
 
EndSection
 
 
}}
 
}}
   
次に、{{ic|~/.xinitrc}} の最初に以下の2行を追加してください:
+
次に、{{ic|~/.xinitrc}} の先頭に以下の2行を追加してください:
   
 
{{hc|~/.xinitrc|
 
{{hc|~/.xinitrc|
90行目: 83行目:
 
}}
 
}}
   
そしてドライバをロードするために再起動し、X を起動させます。
+
そしてドライバをロードするために再起動し、X を起動させます。
   
 
ディスプレイの dpi が正しくない場合は以下の行を追加してください:
 
ディスプレイの dpi が正しくない場合は以下の行を追加してください:
96行目: 89行目:
 
xrandr --dpi 96
 
xrandr --dpi 96
   
X の起動時に黒画面が表示される場合、{{ic|~/.xinitrc}} に記述した {{ic|xrandr}} コマンドの後にアンパサンドがないことを確認してください。アンパサンドがある場合、{{ic|xrandr}} コマンドが実行し終える前にウィンドウマネージャが起動してしまうことがあり、そうなると黒画面になってしまいます。
+
X の起動時に黒画面が表示される場合、{{ic|~/.xinitrc}} に記述した 2 つの {{ic|xrandr}} コマンドの後にアンパサンド (アンド記号) がないことを確認してください。アンパサンドがある場合、{{ic|xrandr}} コマンドが実行し終える前にウィンドウマネージャが起動してしまうことがあり、そうなると黒画面になってしまいます。
 
アンパサンドがないのに黒画面になる場合、下の [[#別の設定]] を見て下さい。
 
   
 
=== ディスプレイマネージャ ===
 
=== ディスプレイマネージャ ===
   
ディスプレイマネージャを使用する場合、{{ic|~/.xinitrc}} の代わりにディスプレイマネージャのディスプレイ設定スクリプトを作成編集する必要があります。
+
[[ディスプレイマネージャ]]を使用する場合、{{ic|~/.xinitrc}} を使うではなく、使用しているディスプレイマネージャのディスプレイセットアップスクリプトを作成あるいは編集する必要があります。
   
 
==== LightDM ====
 
==== LightDM ====
114行目: 105行目:
 
}}
 
}}
   
スクリプトに実行可能属性を付与:
+
スクリプトに[[実行可能属性]]を付与してください。
   
  +
次に、そのスクリプトを実行するように lightdm を設定します。{{ic|/etc/lightdm/lightdm.conf}} 内の {{ic|[Seat:*]}} セクションを編集してください:
# chmod +x /etc/lightdm/display_setup.sh
 
 
{{ic|/etc/lightdm/lightdm.conf}} の {{ic|[Seat:*]}} セクションを編集してスクリプトを実行するように lightdm を設定:
 
   
 
{{hc|/etc/lightdm/lightdm.conf|output=
 
{{hc|/etc/lightdm/lightdm.conf|output=
125行目: 114行目:
 
}}
 
}}
   
再起動し、ディスプレイマネージャ起動するのを確認してください。
+
そして、再起動し、ディスプレイマネージャ起動させてください。
   
 
==== SDDM ====
 
==== SDDM ====
  +
[[SDDM]] ディスプレイマネージャの場合:
 
  +
[[SDDM]] ディスプレイマネージャの場合 (SDDM は [[KDE]] のデフォルトのディスプレイマネージャです):
   
 
{{hc|/usr/share/sddm/scripts/Xsetup|
 
{{hc|/usr/share/sddm/scripts/Xsetup|
136行目: 126行目:
   
 
==== GDM ====
 
==== GDM ====
[[GDM]] ディスプレイマネージャの場合 {{ic|.desktop}} ファイルを作成します:
 
   
  +
[[GDM]] ディスプレイマネージャの場合、2つの .desktop ファイルを新規作成してください:
{{hc|/usr/share/gdm/greeter/autostart/optimus.desktop|
 
  +
  +
{{hc|/usr/share/gdm/greeter/autostart/optimus.desktop
  +
/etc/xdg/autostart/optimus.desktop|
 
<nowiki>[Desktop Entry]
 
<nowiki>[Desktop Entry]
 
Type=Application
 
Type=Application
147行目: 139行目:
 
}}
 
}}
   
また、GDM が [[GDM#Xorg バックエンドを使う|Xorg バックエンド使う]]ようになっているか確認してください。
+
GDM が [[GDM#Xorg バックエンドを使う|X をデフォルトバックエンドとして使う]]ように設定してください。
 
==== KDM ====
 
 
KDE の [[KDM]] の場合、{{ic|/usr/share/config/kdm/Xsetup}} に xrandr の行を追加してください。
 
   
=== 3D 確認 ===
+
=== 3D 確認する ===
   
NVIDIA グラフィックが使れているかどうかは {{Pkg|mesa-demos}} をインストールして次のコマンドを実行することで確認できます:
+
NVIDIA グラフィックが使用されているかどうかは{{Pkg|mesa-utils}} をインストールして次のコマンドを実行することで確認できます:
   
 
$ glxinfo | grep NVIDIA
 
$ glxinfo | grep NVIDIA
161行目: 149行目:
 
=== 詳細情報 ===
 
=== 詳細情報 ===
   
しい情報は、NVIDIA の公式ページ [http://us.download.nvidia.com/XFree86/Linux-x86/370.28/README/randr14.html] を見てさい。
+
情報は、このトピックに関する NVIDIA の公式ページ [http://us.download.nvidia.com/XFree86/Linux-x86/370.28/README/randr14.html] を見てください。
   
== 切り替え可能なグラフィックスを使 ==
+
== 切り替え可能なグラフィックスを使 ==
   
=== PRIME レンダリングオフロードを使用する===
+
=== PRIME レンダオフロードを使===
   
これは、切可能なグラフィックスをサポートする公式の NVIDIA メソッドです。
+
これは、切替可能なグラフィックスをサポートする NVIDIA 公式の方法です。
   
詳細について [[PRIME#PRIME render offload]] を参照してください。
+
詳細は [[PRIME#PRIME レンダーオフロード]] を参照してください。
   
=== nouveau を使う===
+
=== nouveau を使う ===
   
グラフィックスイッチングについては [[PRIME]] を、オープンソース NVIDIA ドライバについては [[nouveau]] を参照してください。
+
グラフィックスの切り替えについては [[PRIME]] を、オープンソース NVIDIA ドライバについては [[nouveau]] を参照してください。
   
=== Bumblebee を使===
+
=== Bumblebee を使===
   
 
[[Bumblebee]] を参照してください。
 
[[Bumblebee]] を参照してください。
   
=== nvidia-xrun を使用する ===
+
=== switcheroo-control を使 ===
  +
  +
[[PRIME#Gnome 統合]] を参照してください。
  +
  +
=== nvidia-xrun を使う ===
   
 
[[nvidia-xrun]] を参照してください。
 
[[nvidia-xrun]] を参照してください。
   
=== optimus-manager を使用する ===
+
=== optimus-manager を使 ===
   
[https://github.com/Askannz/optimus-manager Optimus-manager] アップストリームのドキュメントを参照してください。Arch Linux システムでのインストールと設定の両方の説明あります。
+
上流のドキュメント [https://github.com/Askannz/optimus-manager Optimus-manager] を参照してください。Arch Linux システムにおけるインストールと設定方法の両方がカバーされています。
   
=== EnvyControl を使用する ===
+
=== EnvyControl を使 ===
   
アップストリームのドキュメント [https://github.com/geminis3/envycontrol EnvyControl] を参照してください。インストール方法と使方の説明あります。
+
上流のドキュメント [https://github.com/geminis3/envycontrol EnvyControl] を参照してください。インストール方法と使両方カバーされています。
   
=== NVidia-eXec を使用する ===
+
=== NVidia-eXec を使 ===
   
アップストリームのドキュメント [https://github.com/pedro00dk/nvidia-exec NVidia-eXec] を参照してください。インストール方法と使方の説明あります。
+
上流のドキュメント [https://github.com/pedro00dk/nvidia-exec NVidia-eXec] を参照してください。インストール方法と使両方カバーされています。
   
=== nvidia-switch を使用する ===
+
=== nvidia-switch を使 ===
   
アップストリームのドキュメント [https://github.com/nvidiaswitch/nvidia-switch nvidia-switch] を参照してください。インストール方法と使方の説明あります。
+
上流のドキュメント [https://github.com/nvidiaswitch/nvidia-switch nvidia-switch] を参照してください。インストール方法と使両方カバーされています。
   
 
== トラブルシューティング ==
 
== トラブルシューティング ==
   
=== 垂直同期が機能せずティアリングが発生する ===
+
=== ティアリング/垂直同期が機能しない ===
   
解決するには {{pkg|xorg-server}} 1.19 以上、{{pkg|linux}} カーネル 4.5 以上、{{pkg|nvidia}} 370.23 以上が必須です。[[NVIDIA#DRM カーネルモードセッティング]]を有効にすることで PRIME 同期が有効になりティアリングが解消されます。
+
[[NVIDIA#DRM カーネルモード設定|DRM カーネルモード設定]]を有効化してください。これより、PRIME 同期が有効化され、ティアリングが修正されます。
   
しくは公式の [https://devtalk.nvidia.com/default/topic/957814/linux/prime-and-prime-synchronization/ フォーラムスレッド] を参照してください
+
は公式の[https://devtalk.nvidia.com/default/topic/957814/linux/prime-and-prime-synchronization/ フォーラムスレッド]で確認できます
   
 
=== Failed to initialize the NVIDIA GPU at PCI:1:0:0 (GPU fallen off the bus / RmInitAdapter failed!) ===
 
=== Failed to initialize the NVIDIA GPU at PCI:1:0:0 (GPU fallen off the bus / RmInitAdapter failed!) ===
   
カーネルパラメータに {{ic|1=rcutree.rcu_idle_gp_delay=1}} を追加してください。詳しくは [https://bbs.archlinux.org/viewtopic.php?id=169742 こちら] を参照
+
カーネルパラメータに {{ic|1=rcutree.rcu_idle_gp_delay=1}} を追加してください。オリジナルのトピック [https://github.com/Bumblebee-Project/Bumblebee/issues/455#issuecomment-22497464] と [https://bbs.archlinux.org/viewtopic.php?id=169742] で確認できます
   
 
=== 解像度や画面スキャンが正しく認識されず Xorg.log に EDID のエラーが表示される ===
 
=== 解像度や画面スキャンが正しく認識されず Xorg.log に EDID のエラーが表示される ===
   
nVidia ドライバがディスプレイの EDID を検出できないが原因です。手動で EDID ファイルのパスを指定するか、同じような方法で同一の情報を提供する必要があります。
+
NVIDIA ドライバがディスプレイの EDID を検出できていないことが原因です。手動で EDID ファイルのパスを指定するか、同じような方法で同一の情報を提供する必要があります。
   
EDID ファイルのパスを指定するには {{ic|Xorg.conf}} の nvidia カードの Device セクションを編集して、以下のを追加して適当にパスを置き換えてください:
+
EDID ファイルのパスを指定するには {{ic|Xorg.conf}} の NVIDIA カードの Device セクションを編集して、以下の記述を追加して適当にパスを置き換えてください:
   
 
{{hc|/etc/X11/xorg.conf|
 
{{hc|/etc/X11/xorg.conf|
226行目: 218行目:
 
}}
 
}}
   
Xorg が起動しない場合は、CRT という文字列を全て DFB に置き換えてみて下さい。card0 は intel カードの識別子でディスプレイは LVDS で接続されています。edid バイナリはこのディレクトリに存在します。ハードウェアの構成が異なっている場合、CustomEDID の値も変わってくるので確認するようにしてください。パスの先頭の {{ic|/sys/class/drm}} は変わらないはずです
+
Xorg が起動しない場合は、CRT という文字列を全て DFB に置き換えてみて下さい。
  +
{{ic|card0}} は、LVDS でディスプレイに接続されている Intel カードの識別子です。edid バイナリはこのディレクトリに存在します。ハードウェアの構成が異なっている場合、CustomEDID の値も変わってくるので確認するようにしてください。どのような場合でも、パスは {{ic|/sys/class/drm}} で始まります。
   
または、{{Pkg|read-edid}} などのツールを使って edid を自分で作成して、作成したファイルを使うようにドライバーを設定することもできます。modeline も使えますが、"UseEDID""IgnoreEDID" は変更するようにしてください。
+
または、{{Pkg|read-edid}} などのツールを使って edid を自分で作成して、作成したファイルを使うようにドライバーを設定することもできます。modelines も使えますが、{{ic|UseEDID}}{{ic|IgnoreEDID}} は変更するようにしてください。
   
=== Wrong resolution without EDID errors ===
+
=== 解像度が間違っているが、EDID エラー無し ===
   
  +
''nvidia-xconfig'' を使っていると、不適切な情報 (特に、利用可能な解像度を制限するモニタのリフレッシュレート) が {{ic|xorg.conf}} 内に生成されてしまうことがあります。{{ic|HorizSync}}/{{ic|VertRefresh}} の行をコメントアウトしてみてください。これで解決するならば、この記事で言及していないその他すべての項目も削除できるでしょう。
Using ''nvidia-xconfig'', incorrect information might be generated in Xorg.conf and in particular wrong monitor refresh rates that restruct the possible resolutions. Try commenting out the {{ic|HorizSync}}/{{ic|VertRefresh}} lines. If this helps, you can probably also remove everything else not mentioned in this article.
 
   
 
=== ロックアップ問題 (lspci がフリーズ) ===
 
=== ロックアップ問題 (lspci がフリーズ) ===
  +
GTX 965M が搭載された最新のノートパソコンで (Bumblebee などで) bbswitch や nouveau を使ったときに lspci がフリーズしたり、サスペンドが失敗したり、シャットダウン時に止まってしまったり、optirun でフリーズが発生することがあります。
 
  +
症状: lspci がハングする。システムのサスペンドが失敗する。シャットダウン時にハングする。optirun がハングする。
  +
  +
対象: GTX 965M やそれと似たようなカードを搭載した新しいノート PC で、bbswitch (例: Bumblebee 経由) や nouveau を使用している時。
   
 
dGPU 電源リソースがオンになっている場合、ACPI コードで失敗してフリーズが起こることがあります ([https://bugzilla.kernel.org/show_bug.cgi?id=156341 カーネルバグ 156341])。
 
dGPU 電源リソースがオンになっている場合、ACPI コードで失敗してフリーズが起こることがあります ([https://bugzilla.kernel.org/show_bug.cgi?id=156341 カーネルバグ 156341])。
   
  +
nouveau を使用している際に、ランタイムの電源管理を無効化すると、nouveau が電源状態を変更しなくなるため、この問題を回避できます。
解決方法については [https://github.com/Bumblebee-Project/Bumblebee/issues/764#issuecomment-234494238 こちら] を見てください。また、{{ic|1=acpi_osi="!Windows 2015"}} や {{ic|1=acpi_osi=! acpi_osi="Windows 2009"}} を[[カーネルパラメータ]]に追加して起動することで解決することもあります。
 
  +
ランタイムの電源管理を無効化するには、カーネルパラメータに {{ic|1=nouveau.runpm=0}} を追加してください。
  +
  +
モデル固有の既知の解決策については、[https://github.com/Bumblebee-Project/Bumblebee/issues/764#issuecomment-234494238 この issue] を見てください。
  +
その他の場合、{{ic|1=acpi_osi="!Windows 2015"}} や {{ic|1=acpi_osi=! acpi_osi="Windows 2009"}} を[[カーネルパラメータ]]に追加して起動することで解決することもあります。(あなたのノート PC を先の issue で報告することを検討してください)
  +
  +
=== ノート PC/NVIDIA Optimus で画面が見つからない ===
  +
  +
以下のような出力がないか調べてください:
  +
  +
{{hc|$ lspci {{!}} grep VGA|
  +
00:02.0 VGA compatible controller: Intel Corporation Core Processor Integrated Graphics Controller (rev 02)
  +
01:00.0 VGA compatible controller: nVidia Corporation Device 0df4 (rev a1)
  +
}}
  +
  +
NVIDIA ドライバ 319.12 Beta [https://www.nvidia.com/object/linux-display-amd64-319.12-driver.html] と Linux カーネル 3.9 以降では、NVIDIA ドライバは Optimus のサポートを提供します。
  +
  +
他の解決策は、[[Intel]] ドライバをインストールして、Intel ドライバにスクリーンを処理させることです。3D ソフトウェアを使用したい場合は、[[Bumblebee]] を使ってそのソフトウェアを実行し、NVIDIA カードを使うようにソフトウェアに指示する必要があります。
  +
  +
=== ランダムなフリーズ "(EE) NVIDIA(GPU-0): WAIT" ===
  +
  +
内蔵 AMD カードを搭載していて、専用 NVIDIA カードのみを使用するように設定している環境でプロプライエタリな (NVIDIA) ドライバを使用していると、最大 10 秒フリーズし、Xorg のログに以下のエラーが出力されると報告されています:
  +
  +
[ 219.796] (EE) NVIDIA(GPU-0): WAIT (2, 8, 0x8000, 0x0002e1c4, 0x0002e1cc)
  +
[ 226.796] (EE) NVIDIA(GPU-0): WAIT (1, 8, 0x8000, 0x0002e1c4, 0x0002e1cc)
  +
  +
これはまだ根本的な原因ではありませんが、内蔵カードと専用カードが Xorg とやり取りする過程で競合が発生することと関連があるようです。
  +
  +
回避策は、切り替え可能なグラフィックスを使うことです。詳細は [[PRIME#PRIME レンダーオフロード]] を参照してください。
  +
  +
=== optimus-manager で "No Devices detected" ===
  +
  +
'lspci' が PCI ドメインを最初の出力列に出力してしまい、''optimus-manager'' が {{ic|BusID}} を複数のノート PC モデルにマッピングしようとして、{{ic|optimus-manager}} によって生成されたファイルが壊れてしまうことがあります。
  +
  +
GUI のロードが終わらない黒画面が発生する場合や、GUI が部分的にロードされたがコンソールにアーティファクトが発生する場合、Xorg が {{ic|(EE) - No Devices detected}} でクラッシュする場合には、[https://github.com/Askannz/optimus-manager/issues/471#issuecomment-1315628537 上流の GitHub ページ]に回避策とバグレポートがあります.
  +
  +
=== Xorg: マウスを動かしたときにだけ外部モニタが更新される ===
  +
  +
この問題に対する回避策は、iGPU の Xorg ドライバをアンインストールすることです (例: {{Pkg|xf86-video-amdgpu}} や {{Pkg|xf86-video-intel}}) [https://bbs.archlinux.org/viewtopic.php?id=284651]。この方法は、外部モニタのポート (HDMI/DP/USB-C) が NVIDIA dGPU に直接接続されている限り、うまく行くはずです。
  +
  +
{{Tip|デスクトップの挙動が奇妙になる場合があります (例: 仮想デスクトップを切り替えたり、Alt-Tab を使用したときに外部モニタの画像がフリーズするなど)。これは、ノート PC のモニタを無効化することで回避できます。}}
   
  +
=== 消費電力が低いままになる (TDP) ===
=== No screens found on a laptop/NVIDIA Optimus ===
 
   
  +
ドライバのバージョン 530.41 から、カードの消費電力が低く制限された状態に固定されてしまうというケースが発生し始めました ([https://github.com/NVIDIA/open-gpu-kernel-modules/issues/483 GitHub issue 483] を参照)。NVIDIA ドライバは、{{ic|nvidia-smi}} を使用して電力制限を手動で設定する機能を無効化していますが、多くのノート PC で低消費電力状態に固定されてしまい、パフォーマンスが悪化してしまいます。
Check if {{ic|<nowiki>$ lspci | grep VGA</nowiki>}}
 
outputs something similar to:
 
00:02.0 VGA compatible controller: Intel Corporation Core Processor Integrated Graphics Controller (rev 02)
 
01:00.0 VGA compatible controller: nVidia Corporation Device 0df4 (rev a1)
 
   
  +
(Ampere 世代及びそれ以降で) この問題を回避するには、[https://download.nvidia.com/XFree86/Linux-x86_64/535.54.03/README/dynamicboost.html DynamicBoost] を有効化する {{ic|nvidia-powerd.service}} を[[起動/有効化]]してください。
NVIDIA drivers now offer Optimus support since 319.12 Beta [https://www.nvidia.com/object/linux-display-amd64-319.12-driver.html] with kernels above and including 3.9.
 
   
  +
{{TranslationStatus|NVIDIA Optimus|2023-08-20|785744}}
Another solution is to install the [[Intel]] driver to handle the screens, then if you want 3D software you should run them through [[Bumblebee]] to tell them to use the NVIDIA card.
 

2024年9月3日 (火) 22:39時点における最新版

関連記事

NVIDIA Optimus は、内蔵 GPU とディスクリート NVIDIA GPU をノート PC に組み込み、さらにノート PC からアクセスできるようにする技術です。

利用可能な方法

複数の方法が利用できます:

  • #内蔵グラフィックスのみを使う - NVIDIA GPU は完全に電源オフになるので、消費電力を削減できます。
  • #NVIDIA グラフィックスのみを使う - 内蔵グラフィックスよりも優れたパフォーマンスを発揮します。ただし、より多くの電力を消費します (これはモバイル端末においては喜ばしいことではありません)。この方法は、optimus-managernvidia-xrun と同じ基本プロセスを利用しており、より自動化されたアプローチを取る前にトラブルシューティングや一般的な機能検証のためにこの方法を利用するべきです。
  • 両方を使う (必要なときに NVIDIA GPU を使用し、それ以外のときは電源を落として電力を節約する):
    • #PRIME レンダーオフロードを使う - NVIDIA が公式にサポートしている方法です。
    • #optimus-manager を使う - 1つのコマンドでグラフィックスを切り替えます (適用させるにはログインし直さなければなりません)。また、PRIME レンダーオフロードとのハイブリッドモードもサポートしています。NVIDIA GPU の性能を最大限に引き出し、使用していない場合はオフにします。1.4 リリース以降では、AMD と NVIDIA の組み合わせもサポートされています。
    • #nvidia-xrun を使う - NVIDIA グラフィックスを使用して別の TTY で別の X セッションを実行します。NVIDIA GPU の性能を最大限に引き出し、使用していない場合はオフにします。
    • #Bumblebee を使う - 指定したアプリケーションに対しては NVIDIA グラフィックスを使用し、その他のアプリケーションに対しては Intel グラフィックスを使えるようにすることで、Windows ライクな機能を提供します。しかし、重大なパフォーマンスの問題を抱えています。
    • #switcheroo-control を使う - Bumblebee と似ていますが、特に GNOME ユーザ向けです。デスクトップエントリ内で専用 GPU を優先するかどうかを指定できるようになり、さらに右クリックメニューから手動で NVIDIA GPU でアプリケーションを実行できるようになります。
    • #nouveau を使う - (プロプライエタリな NVIDIA ドライバと比較して) パフォーマンスが劣っており、スリープやハイバネートの問題が発生することがあります。最新の NVIDIA GPU では動作しません。
    • #EnvyControl を使う - optimus-manager と似ていますが、多くの設定を必要とせず、バックグラウンドでデーモンを実行する必要もありませんし、GNOME を使用している場合でもパッチ適用済みの GDM バージョンをインストールする必要はありません。
    • #NVidia-eXec を使う - Bumblebee と似ていますが、パフォーマンスが低下することはありません。Xorg と Wayland の両方で動作します。このパッケージは実験的であり、現在、GNOME/GDM においてテストされています。
    • #nvidia-switch を使う - nvidia-xrun と似ていますが、TTY を変更する必要はありません。切り替えは、ディスプレイマネージャでログインとログアウトをすることにより、行われます。このパッケージは、Debian ベースのシステムでテストされていますが、nvidia-xrun のように、全ての Linux システムで動作するはずです。
ノート: これらのオプションはすべて相互に排他的です。1つの方法をテストして別の方法を選択する場合は、別の方法を試行する前に、1つの方法に従って行われた構成変更を必ず元に戻す必要があります。そうしないと、ファイルの競合や未定義の動作が発生する可能性があります。

内蔵グラフィックスのみを使う

GPU を切り替えることに興味はなく、特定の GPU のみを使いたい場合は、システムの BIOS で関連するオプションを確認してください。いずれかのカードを無効にするオプションがあるはずです。ラップトップによっては、ディスクリートカードを有効化したり無効化したりしかできないことがあります。とはいえ、どれかのカードだけを使用する予定であるかを確認することは、損ではありません。

BIOS で Nvidia グラフィックスを無効にできない場合は、Linux カーネル自体から無効にできます。ハイブリッドグラフィック#ディスクリート GPU の完全な電源オフ を参照してください。

レンダリングプロバイダを切り替えずに CUDA を使う

CUDA は、NVIDIA グラフィックスにレンダリングを切り替えることなく使用できます。CUDA アプリケーションを起動する前に、NVIDIA カードの電源が入っていることを確認するだけです。詳細については、ハイブリッドグラフィック#ディスクリート GPU の完全な電源オフ を参照してください。

これで、CUDA アプリケーションを起動すると、必要なすべてのカーネルモジュールが自動的にロードされます。CUDA の使用後に NVIDIA カードの電源を切る前に、まず nvidia カーネルモジュールをアンロードする必要があります:

# rmmod nvidia_uvm
# rmmod nvidia

NVIDIA グラフィックスのみを使う

プロプライエタリな NVIDIA ドライバは、プライマリレンダリングプロバイダとして設定することができます。NVIDIA#DRM カーネルモード設定 を有効化することによって prime sync を有効化しない限り、顕著なスクリーンティアリングの問題が発生します (詳細は [1] を参照)。ディスクリート GPU を使用することができ (2017年1月現在)、パフォーマンスにおいて nouveau ドライバよりも顕著な優位性を持っています。

まず、NVIDIA ドライバと xorg-xrandrインストールしてください。そして、/etc/X11/xorg.conf.d/10-nvidia-drm-outputclass.conf を設定してください。この設定ファイルのオプションは、このセットアップとの互換性を提供するために、パッケージによって提供されている /usr/share/X11/xorg.conf.d/10-nvidia-drm-outputclass.conf と組み合わされます。

ノート: セットアップによっては EDID ファイルによる nvidia ドライバーのディスプレイの値の自動検出がされなくなることがあります。回避策は #解像度や画面スキャンが正しく認識されず Xorg.log に EDID のエラーが表示される を見て下さい。
/etc/X11/xorg.conf.d/10-nvidia-drm-outputclass.conf
Section "OutputClass"
    Identifier "intel"
    MatchDriver "i915"
    Driver "modesetting"
EndSection

Section "OutputClass"
    Identifier "nvidia"
    MatchDriver "nvidia-drm"
    Driver "nvidia"
    Option "AllowEmptyInitialConfiguration"
    Option "PrimaryGPU" "yes"
    ModulePath "/usr/lib/nvidia/xorg"
    ModulePath "/usr/lib/xorg/modules"
EndSection

次に、~/.xinitrc の先頭に以下の2行を追加してください:

~/.xinitrc
xrandr --setprovideroutputsource modesetting NVIDIA-0
xrandr --auto

そしてドライバをロードするために再起動し、X を起動させます。

ディスプレイの dpi が正しくない場合は以下の行を追加してください:

xrandr --dpi 96

X の起動時に黒画面が表示される場合、~/.xinitrc に記述した 2 つの xrandr コマンドの後にアンパサンド (アンド記号) がないことを確認してください。アンパサンドがある場合、xrandr コマンドが実行し終える前にウィンドウマネージャが起動してしまうことがあり、そうなると黒画面になってしまいます。

ディスプレイマネージャ

ディスプレイマネージャを使用する場合、~/.xinitrc を使うのではなく、使用しているディスプレイマネージャのディスプレイセットアップスクリプトを作成あるいは編集する必要があります。

LightDM

LightDM ディスプレイマネージャの場合:

/etc/lightdm/display_setup.sh
#!/bin/sh
xrandr --setprovideroutputsource modesetting NVIDIA-0
xrandr --auto

スクリプトに実行可能属性を付与してください。

次に、そのスクリプトを実行するように lightdm を設定します。/etc/lightdm/lightdm.conf 内の [Seat:*] セクションを編集してください:

/etc/lightdm/lightdm.conf
[Seat:*]
display-setup-script=/etc/lightdm/display_setup.sh

そして、再起動し、ディスプレイマネージャを起動させてください。

SDDM

SDDM ディスプレイマネージャの場合 (SDDM は KDE のデフォルトのディスプレイマネージャです):

/usr/share/sddm/scripts/Xsetup
xrandr --setprovideroutputsource modesetting NVIDIA-0
xrandr --auto

GDM

GDM ディスプレイマネージャの場合、2つの .desktop ファイルを新規作成してください:

/usr/share/gdm/greeter/autostart/optimus.desktop
/etc/xdg/autostart/optimus.desktop
[Desktop Entry]
Type=Application
Name=Optimus
Exec=sh -c "xrandr --setprovideroutputsource modesetting NVIDIA-0; xrandr --auto"
NoDisplay=true
X-GNOME-Autostart-Phase=DisplayServer

GDM が X をデフォルトバックエンドとして使うように設定してください。

3D を確認する

NVIDIA グラフィックスが使用されているかどうかは、mesa-utils をインストールして次のコマンドを実行することで確認できます:

$ glxinfo | grep NVIDIA

詳細情報

詳細情報は、このトピックに関する NVIDIA の公式ページ [2] を見てください。

切り替え可能なグラフィックスを使う

PRIME レンダーオフロードを使う

これは、切替可能なグラフィックスをサポートする NVIDIA 公式の方法です。

詳細は PRIME#PRIME レンダーオフロード を参照してください。

nouveau を使う

グラフィックスの切り替えについては PRIME を、オープンソースな NVIDIA ドライバについては nouveau を参照してください。

Bumblebee を使う

Bumblebee を参照してください。

switcheroo-control を使う

PRIME#Gnome 統合 を参照してください。

nvidia-xrun を使う

nvidia-xrun を参照してください。

optimus-manager を使う

上流のドキュメント Optimus-manager を参照してください。Arch Linux システムにおけるインストールと設定方法の両方がカバーされています。

EnvyControl を使う

上流のドキュメント EnvyControl を参照してください。インストール方法と使用方法の両方がカバーされています。

NVidia-eXec を使う

上流のドキュメント NVidia-eXec を参照してください。インストール方法と使用方法の両方がカバーされています。

nvidia-switch を使う

上流のドキュメント nvidia-switch を参照してください。インストール方法と使用方法の両方がカバーされています。

トラブルシューティング

ティアリング/垂直同期が機能しない

DRM カーネルモード設定を有効化してください。これにより、PRIME 同期が有効化され、ティアリングが修正されます。

詳細は公式のフォーラムスレッドで確認できます。

Failed to initialize the NVIDIA GPU at PCI:1:0:0 (GPU fallen off the bus / RmInitAdapter failed!)

カーネルパラメータに rcutree.rcu_idle_gp_delay=1 を追加してください。オリジナルのトピックは [3][4] で確認できます。

解像度や画面スキャンが正しく認識されず Xorg.log に EDID のエラーが表示される

NVIDIA ドライバがディスプレイの EDID を検出できていないことが原因です。手動で EDID ファイルへのパスを指定するか、同じような方法で同一の情報を提供する必要があります。

EDID ファイルへのパスを指定するには Xorg.conf の NVIDIA カードの Device セクションを編集して、以下の記述を追加して適当にパスを置き換えてください:

/etc/X11/xorg.conf
Section "Device"
       	Option		"ConnectedMonitor" "CRT-0"
       	Option		"CustomEDID" "CRT-0:/sys/class/drm/card0-LVDS-1/edid"
	Option		"IgnoreEDID" "false"
	Option		"UseEDID" "true"
EndSection

Xorg が起動しない場合は、CRT という文字列を全て DFB に置き換えてみて下さい。 card0 は、LVDS でディスプレイに接続されている Intel カードの識別子です。edid バイナリはこのディレクトリに存在します。ハードウェアの構成が異なっている場合、CustomEDID の値も変わってくるので確認するようにしてください。どのような場合でも、パスは /sys/class/drm で始まります。

または、read-edid などのツールを使って edid を自分で作成して、作成したファイルを使うようにドライバーを設定することもできます。modelines も使えますが、UseEDIDIgnoreEDID は変更するようにしてください。

解像度が間違っているが、EDID エラー無し

nvidia-xconfig を使っていると、不適切な情報 (特に、利用可能な解像度を制限するモニタのリフレッシュレート) が xorg.conf 内に生成されてしまうことがあります。HorizSync/VertRefresh の行をコメントアウトしてみてください。これで解決するならば、この記事で言及していないその他すべての項目も削除できるでしょう。

ロックアップ問題 (lspci がフリーズ)

症状: lspci がハングする。システムのサスペンドが失敗する。シャットダウン時にハングする。optirun がハングする。

対象: GTX 965M やそれと似たようなカードを搭載した新しいノート PC で、bbswitch (例: Bumblebee 経由) や nouveau を使用している時。

dGPU 電源リソースがオンになっている場合、ACPI コードで失敗してフリーズが起こることがあります (カーネルバグ 156341)。

nouveau を使用している際に、ランタイムの電源管理を無効化すると、nouveau が電源状態を変更しなくなるため、この問題を回避できます。 ランタイムの電源管理を無効化するには、カーネルパラメータに nouveau.runpm=0 を追加してください。

モデル固有の既知の解決策については、この issue を見てください。 その他の場合、acpi_osi="!Windows 2015"acpi_osi=! acpi_osi="Windows 2009"カーネルパラメータに追加して起動することで解決することもあります。(あなたのノート PC を先の issue で報告することを検討してください)

ノート PC/NVIDIA Optimus で画面が見つからない

以下のような出力がないか調べてください:

$ lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation Core Processor Integrated Graphics Controller (rev 02)
01:00.0 VGA compatible controller: nVidia Corporation Device 0df4 (rev a1)

NVIDIA ドライバ 319.12 Beta [5] と Linux カーネル 3.9 以降では、NVIDIA ドライバは Optimus のサポートを提供します。

他の解決策は、Intel ドライバをインストールして、Intel ドライバにスクリーンを処理させることです。3D ソフトウェアを使用したい場合は、Bumblebee を使ってそのソフトウェアを実行し、NVIDIA カードを使うようにソフトウェアに指示する必要があります。

ランダムなフリーズ "(EE) NVIDIA(GPU-0): WAIT"

内蔵 AMD カードを搭載していて、専用 NVIDIA カードのみを使用するように設定している環境でプロプライエタリな (NVIDIA) ドライバを使用していると、最大 10 秒フリーズし、Xorg のログに以下のエラーが出力されると報告されています:

[   219.796] (EE) NVIDIA(GPU-0): WAIT (2, 8, 0x8000, 0x0002e1c4, 0x0002e1cc)
[   226.796] (EE) NVIDIA(GPU-0): WAIT (1, 8, 0x8000, 0x0002e1c4, 0x0002e1cc)

これはまだ根本的な原因ではありませんが、内蔵カードと専用カードが Xorg とやり取りする過程で競合が発生することと関連があるようです。

回避策は、切り替え可能なグラフィックスを使うことです。詳細は PRIME#PRIME レンダーオフロード を参照してください。

optimus-manager で "No Devices detected"

'lspci' が PCI ドメインを最初の出力列に出力してしまい、optimus-managerBusID を複数のノート PC モデルにマッピングしようとして、optimus-manager によって生成されたファイルが壊れてしまうことがあります。

GUI のロードが終わらない黒画面が発生する場合や、GUI が部分的にロードされたがコンソールにアーティファクトが発生する場合、Xorg が (EE) - No Devices detected でクラッシュする場合には、上流の GitHub ページに回避策とバグレポートがあります.

Xorg: マウスを動かしたときにだけ外部モニタが更新される

この問題に対する回避策は、iGPU の Xorg ドライバをアンインストールすることです (例: xf86-video-amdgpuxf86-video-intel) [6]。この方法は、外部モニタのポート (HDMI/DP/USB-C) が NVIDIA dGPU に直接接続されている限り、うまく行くはずです。

ヒント: デスクトップの挙動が奇妙になる場合があります (例: 仮想デスクトップを切り替えたり、Alt-Tab を使用したときに外部モニタの画像がフリーズするなど)。これは、ノート PC のモニタを無効化することで回避できます。

消費電力が低いままになる (TDP)

ドライバのバージョン 530.41 から、カードの消費電力が低く制限された状態に固定されてしまうというケースが発生し始めました (GitHub issue 483 を参照)。NVIDIA ドライバは、nvidia-smi を使用して電力制限を手動で設定する機能を無効化していますが、多くのノート PC で低消費電力状態に固定されてしまい、パフォーマンスが悪化してしまいます。

(Ampere 世代及びそれ以降で) この問題を回避するには、DynamicBoost を有効化する nvidia-powerd.service起動/有効化してください。

翻訳ステータス: このページは en:NVIDIA Optimus の翻訳バージョンです。最後の翻訳日は 2023-08-20 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。