各位前輩大家好
小弟這幾天重新使用那台不成材的舊電腦
赫然發現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!!!
想想,把它當成在逮補罪犯的過程來嘗試也蠻有趣
不過依小弟的能力不太能破案呀,需要大家的幫忙~!
希望各位前輩有空,可以幫小弟推論一下真正的原因是什麼~
如果有需要小弟提供任何有助推論的線索請儘管開口
為了破案,小弟一定盡力配合~
感謝大家啦