[重案組] gtk2的程式變慢的原因

歡迎提問 debian desktop 相關問題,何謂 desktop ? 舉凡您日常生活會用到的部份,如上網 ( www 、 bbs ..) 、程式設計、繪圖...等等。 通常以 X Window 環境底下問題為主。

[重案組] gtk2的程式變慢的原因

文章訪客 » 週一 12月 11, 2006 12:00 am

各位前輩大家好
小弟這幾天重新使用那台不成材的舊電腦
赫然發現gtk2的程式都開啟變慢的情形(gtk-1.X的程式完全正常)
而且實在慢得誇張

這個問題最初是從使用gcin發現的(我曾經懷疑是hdparm的DMA沒設好,但是檢查過後發現是正常的)
gcin的首次ctrl+space切換要耗17秒
一開始我還以為是gcin自己的問題(先前我已post在gcin Trac騷擾過大家了)
後來發現其他gtk-2.0的程式也都有相同的情形(開啟leafpad也要29秒左右)
所以我猜測可能是和「gtk-2.0本身」或者是「gtk-2.0程式會使用到的資源」有關
(譬如和字型顯示有關的那幾個程式的設定,fontconfig或什麼的...)
(不過,只有開啟很慢,在開啟之後的運作過程都很順暢)

由於所有gtk-2.0的程式在啟動過程都沒出現任何問題
所以只得另外依賴其他程式來看看它們的啟動過程
(阿信兄在很久以前曾向大家介紹strace這個程式)
下了strace leafpad指令之後
我發現leafpad在開啟的過程,到處去找字型
正確來說,應該是系統裡所有可能放字型的地方都被它找遍了(含~/.fonts)
找ttf就算了!
竟然還去找其他xfont-base裡的點陣字型!!!
零零總總共花了30秒左右!(摘錄如下)

----恕刪---------
munmap(0xb7d4a000, 4516) = 0
stat64("/usr/share/fonts/X11/misc/8x13-ISO8859-4.pcf.gz", {st_mode=S_IFREG|0644, st_size=4710, ...}) = 0
open("/usr/share/fonts/X11/misc/8x13-ISO8859-4.pcf.gz", O_RDONLY) = 5
fcntl64(5, F_SETFD, FD_CLOEXEC) = 0
fstat64(5, {st_mode=S_IFREG|0644, st_size=4710, ...}) = 0
mmap2(NULL, 4710, PROT_READ, MAP_PRIVATE, 5, 0) = 0xb7d4a000
close(5) = 0
munmap(0xb7d4a000, 4710) = 0
stat64("/usr/share/fonts/X11/misc/8x13-ISO8859-5.pcf.gz", {st_mode=S_IFREG|0644, st_size=4714, ...}) = 0
open("/usr/share/fonts/X11/misc/8x13-ISO8859-5.pcf.gz", O_RDONLY) = 5
fcntl64(5, F_SETFD, FD_CLOEXEC) = 0
fstat64(5, {st_mode=S_IFREG|0644, st_size=4714, ...}) = 0
mmap2(NULL, 4714, PROT_READ, MAP_PRIVATE, 5, 0) = 0xb7d4a000
close(5) = 0
munmap(0xb7d4a000, 4714) = 0
stat64("/usr/share/fonts/X11/misc/8x13-ISO8859-7.pcf.gz", {st_mode=S_IFREG|0644, st_size=4677, ...}) = 0
open("/usr/share/fonts/X11/misc/8x13-ISO8859-7.pcf.gz", O_RDONLY) = 5
fcntl64(5, F_SETFD, FD_CLOEXEC) = 0
fstat64(5, {st_mode=S_IFREG|0644, st_size=4677, ...}) = 0
mmap2(NULL, 4677, PROT_READ, MAP_PRIVATE, 5, 0) = 0xb7d4a000
close(5) = 0
munmap(0xb7d4a000, 4677) = 0
stat64("/usr/share/fonts/X11/misc/8x13-ISO8859-8.pcf.gz", {st_mode=S_IFREG|0644, st_size=4116, ...}) = 0
open("/usr/share/fonts/X11/misc/8x13-ISO8859-8.pcf.gz", O_RDONLY) = 5
fcntl64(5, F_SETFD, FD_CLOEXEC) = 0
fstat64(5, {st_mode=S_IFREG|0644, st_size=4116, ...}) = 0
mmap2(NULL, 4116, PROT_READ, MAP_PRIVATE, 5, 0) = 0xb7d4a000
close(5) = 0
munmap(0xb7d4a000, 4116) = 0
stat64("/usr/share/fonts/X11/misc/8x13-ISO8859-9.pcf.gz", {st_mode=S_IFREG|0644, st_size=4760, ...}) = 0
open("/usr/share/fonts/X11/misc/8x13-ISO8859-9.pcf.gz", O_RDONLY) = 5

----恕刪---------

目前我猜測這個拖慢我所有gtk-2.0程式的啟動過程
不過這只是猜測而已,不知道是不是真的主因
原本我是打算重灌算了,不過這很沒志氣!又不是windows!!!
想想,把它當成在逮補罪犯的過程來嘗試也蠻有趣
不過依小弟的能力不太能破案呀,需要大家的幫忙~!

希望各位前輩有空,可以幫小弟推論一下真正的原因是什麼~
如果有需要小弟提供任何有助推論的線索請儘管開口
為了破案,小弟一定盡力配合~

感謝大家啦
訪客
 

文章訪客 » 週一 12月 11, 2006 8:48 am

抓到凶手了
果然是fontconfig!!!
感謝conwood前輩在www.linuxsir.org提供的資料和解決方法!!!
http://www.linuxsir.org/bbs/showthread.php?t=272565

在 /etc/fonts/fonts.conf裡,新增兩行如下:
<cachedir>/var/cache/fontconfig</cachedir>
<cachedir>~/.fontconfig</cachedir>
這樣就可以了
(ps.我在local.conf裡也加了~)


現在小弟的leafpad初次啟動只要大約3秒(比原來更快!)
真是太讚了!!!
訪客
 

文章cake » 週一 12月 11, 2006 9:21 am

大大
我想請問一下
哪起動(進入x)的時間有否變慢呢?
此情只待成追憶!!!
cake
可愛的小學生
可愛的小學生
 
文章: 17
註冊時間: 週日 2月 13, 2005 5:22 pm
來自: HK

文章阿信 » 週一 12月 11, 2006 9:41 am

看來這是unstable才會出現的狀況,小弟用testing沒遇到這個問題呢 :-)
頭像
阿信
版面大總管
版面大總管
 
文章: 4756
註冊時間: 週二 9月 03, 2002 11:58 pm
來自: 台灣 - 嘉義

文章訪客 » 週一 12月 11, 2006 11:06 pm

cake前輩您好~
從startx到看見X的滑鼠,這個過程還算蠻快的
不過一到啟動觸及icewm和rox-filer等會用到fontconfig的程式時
就會拖得很慢很慢了

阿信兄
小弟也是用testing啦
不過為什麼這個問題似乎只有我才碰到
或許是我的電腦比較慢,所以這個現象才會特別明顯吧~:-P
訪客
 


回到 debian desktop

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客