Intel Graphics環境のLinuxでX.Orgがメモリリークする問題への対応

この記事は公開から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)。

手順

  1. お使いのLinuxのパッケージマネージャーで提供されているIntelビデオドライバーをインストールする。
    ※パッケージ名はディストリビューションによって異なります(xf86-video-intelxorg-x11-drv-intel等)。

  2. Intelビデオドライバーを利用するための設定ファイルを作成する。

    ファイル名:

    /etc/X11/xorg.conf.d/20-intel.conf

    ファイル内容:

    Section "Device"
      Identifier "Intel Graphics"
      Driver "Intel"
    EndSection
  3. システムの再起動を行い、Xのログからビデオドライバーの変更結果を確認する。

    cat /var/log/Xorg.0.log | less

    ※Intelビデオドライバーがロードされるとintel_drv.soIntel Driverといったキーワードがログに出現します。

ちなみにビデオドライバーを変更前は一日数GBずつ物理メモリーが浪費されていく状況でしたが、変更後は常に200MB付近で落ち着くようになりました。

また、今回私が試したi7 5557UのIris 6100環境では、IntelビデオドライバーのほうがCPU使用率が低くなるうえ動画再生時のパフォーマンスも良いように感じます。


参考ウェブサイトなど

以上です。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする