X200 入手之後,基於某種固執的看法,不裝 X86_64 (amd64) 而裝了 IA32 (x86) 版本的 Debian sid,且為了擴增的 4G 記憶體,換裝了啟用 PAE2.6.28 核心。

雖說 2.6.28 中,已經納入了 GEM Memory Manager for GPU memory,不過由於啟用 PAE 後,記憶體傳址的相容性問題,造成 GEM 被關閉,無法使用。若此時執行 glxgears,系統會同你抱怨 ‘Failed to initialize GEM.  Falling back to classic.’

我所使用的 Thinkpad X200 上所使用的顯示晶片組是 Intel GM45 (4500MHD),用 lspci 顯示的訊息是

00:02.0 VGA compatible controller [0300]: Intel Corporation Mobile 4 Series Chipset Integrated Graphics Controller [8086:2a42] (rev 07) (prog-if 00 [VGA controller])

照理若因為無法啟用 GEM 而造成無法利用 EXA 加速的話,Xorg 的 Intel 驅動程式會改用 XAA,不過實際上似乎是完全只用軟體作描繪,因此速度奇慢無比。除了一般的桌面軟體反應緩慢外,時常使用 Firefox 瀏覽網頁時,Xorg 會吃滿 CPU 資源。甚至,開啟某些含有大量表格的網頁時,Firefox 甚至會停止反應好幾分鐘。

為了改善顯示效果,我試著升級了 Xorg (1:7.4+1), xserver-xorg-video-intel (2:2.7.0-1), libdrm2 (2.4.9-1), libdrm-intel1 (2.4.9-1) 等軟體套件。同時為了可以充分利用記憶體,於是裝了 linux-image-2.6.29-1-amd64 核心,但系統部份 (userland) 依然沿用 IA32,重新開機後一般的應用程式執行上沒有太大問題。

改用了新的核心後,預設使用 EXA 效率上比錯用 PAE 核心的狀況好很多。有些人測試 UXA 說有些問題,但是我改用 UXA 後,特別是 compiz 的速度改善相當多,用 compiz benchmark 大約是 144 fps. 使用 Firefox 時網頁繪製的速度也快多了,Xorg 相對的只佔用少量的運算資源。順道測試了 KMS 的效果,很遺憾的結果是開機後一片漆黑,只好暫時打消玩弄超絢麗 Plymonth 的念頭。

你若也想測試一下新的驅動程式,目前在 Debian Sid 中,都可以找到上述的軟體版本。剩下的只是稍加修改一下系統設定,主要是 /etc/X11/xorg.conf 中的 Device 一節,如使用 UXA 則改為

Section "Device"
... omitted ...
Option          "AccelMethod"   "UXA"
... omitted ...
EndSection

若用 EXA 則是

Section "Device"
... omitted ...
Option          "AccelMethod"   "EXA"
# Option          "MigrationHeuristic" "greedy"
... omitted ...
EndSection

其中 MigrationHeuristic 之設定據聞在舊版 Intel 驅動程式中可以加速顯示速度 (但也可能引起其他問題),你可以依照自己的版本增改。由於搭配的驅動程式版本、設定眾多,且不同的搭配,所造成的優劣各有不同,並沒有一個最佳的設定,因此在此不多加說明我個人的測試。在 Phoronix 上的 Does A Greedy Intel Driver Improve Performance? 做了相當詳盡的全方面測試,若可參考文中的數據。你若使用不同的顯示卡,而想嘗試 EXA 的效能,請參考 Intel Graphics DriverExa Status 一文來了解你的顯示卡支援程度。

在測試過程中,我也修改了其他的設定,主要是為了同步垂直掃描頻率的問題。可以利用 DriConf 更改了同步垂直掃描頻率 (vblank_mode) 的設定,我的系統預設設定是開啟的,這種狀態下啟動 glxgears 後,系統會出現 ‘Running synchronized to the vertical refresh.  The framerate should be approximately the same as the monitor refresh rate.’ 只會得到 60fps,必須關掉後才能得到數據。此外,我也更改了 Compiz 中的 sync_to_vblank 設定,可以在 CompizConfig Settings Manager 的 /General/Display Settings 設定。

整個效能測試過程中,我用到了幾個測試工具,包含了

  • sysprof 可以用來觀察設定前後,Xorg 與 Firefox 的資源佔用比例。
  • x11prefgtkpref 來測試 2D 的繪圖效能。
  • Compiz Benchmark (包含在 compiz-fusion-plugins-extra 中),用以測試 3D 的繪圖效能。
  • PeaceKeeper 用來測試 Firefox 的顯示效能。

若想進一步了解本文中大量使用的縮寫意義,請參考 Pavel RoitbergEXA, UXA, DRI, GEM, TTM 一文。