この記事は公開から2年以上経過しています。
LinuxのX(X.Org)が数十GBを超える大量の物理メモリを消費してしまう問題に遭遇したため、その対応についての備忘録。
問題
Intel Graphics(CPU内蔵GPU)環境でLinuxを運用していると、Xが利用しているプロセスメモリ(RSS/VSS)が徐々に増加していき、最終的には全物理メモリが食い潰されてしまう。
原因
フレームバッファデバイス用のビデオライバー(modesetting)を利用すると、Xでメモリリークが発生してしまう模様。
対応
modesettingビデオドライバーの代わりに、旧来のIntelビデオドライバーを利用する。
各Linuxディストリビューションのmodesettingビデオドライバーへの以降に伴い、第4世代以上のIntel CPUでIntelビデオドライバーを利用することは非推奨とされています(At your own risk)。
手順
-
お使いのLinuxのパッケージマネージャーで提供されているIntelビデオドライバーをインストールする。
※パッケージ名はディストリビューションによって異なります(xf86-video-intel
やxorg-x11-drv-intel
等)。 -
Intelビデオドライバーを利用するための設定ファイルを作成する。
ファイル名:
/etc/X11/xorg.conf.d/20-intel.conf
ファイル内容:
Section "Device" Identifier "Intel Graphics" Driver "Intel" EndSection
-
システムの再起動を行い、Xのログからビデオドライバーの変更結果を確認する。
cat /var/log/Xorg.0.log | less
※Intelビデオドライバーがロードされると
intel_drv.so
やIntel Driver
といったキーワードがログに出現します。
ちなみにビデオドライバーを変更前は一日数GBずつ物理メモリーが浪費されていく状況でしたが、変更後は常に200MB付近で落ち着くようになりました。
また、今回私が試したi7 5557UのIris 6100環境では、IntelビデオドライバーのほうがCPU使用率が低くなるうえ動画再生時のパフォーマンスも良いように感じます。
参考ウェブサイトなど
- ArchWiki
Intel Graphics
以上です。