|
|
这个问题很久了,上次升级gnome到 2.20的时候出现的,第一次打开gtk程序很慢。由于我是用gnome的,而且没有用过kde程序,所以几乎所有程序都有这个问题.所谓第一次打开就是说如何这个程序没有打开过,那么它启动就很慢,但是如果已经打开了一个,那么它启动就不是那么慢了。最典型的就是终端,我不得不每次开机都打开一个终端放到一个不用的桌面上,因为它启动非常慢,大约要3~5秒钟,但是开了这个终端后再打开其他终端就不是那么慢了,大约在1秒钟不到就出来了。
而打开非gtk程序,例如xterm,就很快,瞬间就启动了。
我用strace查看第一次启动gnome-terminal程序的系统调用,发现最耗时间的是一些poll操作,以下是耗时TOP 5:- [b7f92410] poll([{fd=3, events=POLLIN}, {fd=4, events=POLLIN}, {fd=8, events=POLLIN|POLLPRI}, {fd=11, events=POLLIN|POLLPRI}, {fd=12, events=POLLIN|POLLPRI}, {fd=13,events=POLLIN|POLLPRI}, {fd=15, events=POLLIN|POLLPRI}, {fd=14,events=POLLIN|POLLPRI}, {fd=10, events=POLLIN|POLLPRI}, {fd=16, events=POLLIN}], 10, 600) = 0 <0.603461>
- [b7f92410] poll([{fd=3, events=POLLIN}, {fd=4, events=POLLIN}, {fd=8, events=POLLIN|POLLPRI}, {fd=11, events=POLLIN|POLLPRI}, {fd=12, events=POLLIN|POLLPRI}, {fd=13,events=POLLIN|POLLPRI}, {fd=15, events=POLLIN|POLLPRI}, {fd=14,events=POLLIN|POLLPRI}, {fd=10, events=POLLIN|POLLPRI}, {fd=16, events=POLLIN}], 10, 599) = 0 <0.603017>
- [b7f92410] poll([{fd=3, events=POLLIN}, {fd=4, events=POLLIN}, {fd=8, events=POLLIN|POLLPRI}, {fd=11, events=POLLIN|POLLPRI}, {fd=12, events=POLLIN|POLLPRI}, {fd=13, events=POLLIN|POLLPRI}, {fd=15, events=POLLIN|POLLPRI}, {fd=14, events=POLLIN|POLLPRI}, {fd=10, events=POLLIN|POLLPRI}, {fd=16, events=POLLIN}], 10, 600) = 0 <0.601351>
- [b7f92410] poll([{fd=3, events=POLLIN}, {fd=4, events=POLLIN}, {fd=8, events=POLLIN|POLLPRI}, {fd=11, events=POLLIN|POLLPRI}, {fd=12, events=POLLIN|POLLPRI}, {fd=13, events=POLLIN|POLLPRI}, {fd=15, events=POLLIN|POLLPRI}, {fd=14, events=POLLIN|POLLPRI}, {fd=10, events=POLLIN|POLLPRI}, {fd=16, events=POLLIN}], 10, 599) = 0 <0.601286>
- [b7f92410] poll([{fd=3, events=POLLIN}, {fd=4, events=POLLIN}, {fd=8, events=POLLIN|POLLPRI}, {fd=11, events=POLLIN|POLLPRI}, {fd=12, events=POLLIN|POLLPRI}, {fd=13, events=POLLIN|POLLPRI}, {fd=15, events=POLLIN|POLLPRI}, {fd=14, events=POLLIN|POLLPRI}, {fd=10, events=POLLIN|POLLPRI}, {fd=16, events=POLLIN}], 10, 600) = 0 <0.600806>
复制代码
可以发现都是写poll操作:那么这些fd在b7f92410打开的都是什么呢?- [b7f92410] open("/usr/share/locale/locale.alias", O_RDONLY) = 3 <0.000012>
- [b7f92410] open("/usr/lib/locale/zh_CN.utf8/LC_IDENTIFICATION", O_RDONLY) = 3 <0.000011>
- [b7f92410] open("/usr/lib/gconv/gconv-modules.cache", O_RDONLY) = 3 <0.000011>
- [b7f92410] open("/usr/lib/locale/zh_CN.utf8/LC_MEASUREMENT", O_RDONLY) = 3 <0.000010>
- [b7f92410] open("/usr/lib/locale/zh_CN.utf8/LC_TELEPHONE", O_RDONLY) = 3 <0.000014>
- [b7f92410] open("/usr/lib/locale/zh_CN.utf8/LC_ADDRESS", O_RDONLY) = 3 <0.000010>
- [b7f92410] open("/usr/lib/locale/zh_CN.utf8/LC_NAME", O_RDONLY) = 3 <0.000010>
- [b7f92410] open("/usr/lib/locale/zh_CN.utf8/LC_PAPER", O_RDONLY) = 3 <0.000010>
- [b7f92410] open("/usr/lib/locale/zh_CN.utf8/LC_MESSAGES", O_RDONLY) = 3 <0.000011>
- [b7f92410] open("/usr/lib/locale/zh_CN.utf8/LC_MESSAGES/SYS_LC_MESSAGES", O_RDONLY) = 3 <0.000011>
- [b7f92410] open("/usr/lib/locale/zh_CN.utf8/LC_MONETARY", O_RDONLY) = 3 <0.000011>
- [b7f92410] open("/usr/lib/locale/zh_CN.utf8/LC_COLLATE", O_RDONLY) = 3 <0.000010>
- [b7f92410] open("/usr/lib/locale/zh_CN.utf8/LC_TIME", O_RDONLY) = 3 <0.000010>
- [b7f92410] open("/usr/lib/locale/zh_CN.utf8/LC_NUMERIC", O_RDONLY) = 3 <0.000010>
- [b7f92410] open("/usr/lib/locale/zh_CN.utf8/LC_CTYPE", O_RDONLY) = 3 <0.000010>
- [b7f92410] open("/usr/share/locale/zh_CN/LC_MESSAGES/gtk20.mo", O_RDONLY) = 3 <0.000012>
- [b7f92410] open("/usr/share/X11/locale/locale.alias", O_RDONLY) = 3 <0.000013>
- [b7f92410] open("/usr/share/X11/locale/locale.alias", O_RDONLY) = 3 <0.000010>
- [b7f92410] open("/usr/share/X11/locale/locale.dir", O_RDONLY) = 3 <0.000012>
- [b7f92410] open("/usr/share/X11/locale/zh_CN.UTF-8/XLC_LOCALE", O_RDONLY) = 3 <0.000011>
- [b7f92410] open("/etc/nsswitch.conf", O_RDONLY) = 3 <0.000011>
- [b7f92410] open("/etc/passwd", O_RDONLY|0x80000 /* O_??? */) = 3 <0.000010>
- [b7f92410] open("/usr/share/locale/zh_CN/LC_MESSAGES/gtk20-properties.mo", O_RDONLY) = 3 <0.000012>
- [b7f92410] open("/home/crazyapple/.Xauthority", O_RDONLY) = 4 <0.000010>
- [b7f92410] open("/home/crazyapple/.ICEauthority", O_RDONLY) = 11 <0.000010>
- [b7f92410] open("/home/crazyapple/.ICEauthority", O_RDONLY) = 11 <0.000009>
- [b7f92410] open("/home/crazyapple/.ICEauthority", O_RDONLY) = 11 <0.000009>
- [b7f92410] open("/home/crazyapple/.ICEauthority", O_RDONLY) = 11 <0.000009>
- [b7f92410] open("/tmp/gconfd-crazyapple/lock/ior", O_RDONLY) = 11 <0.000014>
- [b7f92410] open("/tmp/orbit-crazyapple/bonobo-activation-register.lock", O_RDWR|O_CREAT, 0700) = 14 <0.000016>
- [b7f92410] open("/tmp/orbit-crazyapple/bonobo-activation-server-ior", O_RDONLY) = 15 <0.000010>
- [b7f92410] open("/usr/share/pixmaps/gnome-terminal.png", O_RDONLY|O_LARGEFILE) = 16 <0.000013>
- [b7f92410] open("/etc/gtk-2.0/gtkrc", O_RDONLY|O_LARGEFILE) = 16 <0.000010>
- [b7f92410] open("/usr/share/themes/Glossy/gtk-2.0/gtkrc", O_RDONLY|O_LARGEFILE) = 16 <0.000010>
- [b7f92410] open("/usr/share/themes/Default/gtk-2.0-key/gtkrc", O_RDONLY|O_LARGEFILE) = 16 <0.000010>
- [b7f92410] open("/dev/urandom", O_RDONLY|O_LARGEFILE) = 16 <0.000018>
- [b7f92410] open("/usr/share/vte/termcap/xterm", O_RDONLY|O_LARGEFILE) = 16 <0.000011>
- [b7f92410] open("/etc/pango/pango.modules", O_RDONLY) = 16 <0.000011>
- [b7f92410] open("/etc/fonts/fonts.conf", O_RDONLY) = 16 <0.000010>
- [b7f92410] open("/var/cache/fontconfig/3830d5c3ddfd5cd38a049b759396e72e-x86.cache-2", O_RDONLY) = 16 <0.000013>
- [b7f92410] open("/var/cache/fontconfig/df311e82a1a24c41a75c2c930223552e-x86.cache-2", O_RDONLY) = 16 <0.000012>
- [b7f92410] open("/var/cache/fontconfig/17090aa38d5c6f09fb8c5c354938f1d7-x86.cache-2", O_RDONLY) = 16 <0.000011>
- [b7f92410] open("/var/cache/fontconfig/d62e99ef547d1d24cdb1bd22ec1a2976-x86.cache-2", O_RDONLY) = 16 <0.000010>
- [b7f92410] open("/var/cache/fontconfig/0d18838e2eb2d05c78885ab659ed50db-x86.cache-2", O_RDONLY) = 16 <0.000011>
- [b7f92410] open("/var/cache/fontconfig/f73c51d6200a78c2054c26a5b2398976-x86.cache-2", O_RDONLY) = 16 <0.000010>
- [b7f92410] open("/home/crazyapple/.fontconfig/f73c51d6200a78c2054c26a5b2398976-x86.cache-2", O_RDONLY) = 16 <0.000011>
- [b7f92410] open("/usr/share/fonts/arphicfonts", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|0x80000) = 16 <0.000009>
- [b7f92410] open("/var/cache/fontconfig/61c91b4f4892ffae4bc0efef540a1e5d-x86.cache-2", O_RDONLY) = 16 <0.000012>
- [b7f92410] open("/home/crazyapple/.fontconfig/61c91b4f4892ffae4bc0efef540a1e5d-x86.cache-2", O_RDONLY) = 16 <0.000011>
- [b7f92410] open("/usr/share/fonts/baekmuk-fonts", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|0x80000) = 16 <0.000009>
- [b7f92410] open("/var/cache/fontconfig/4b5cf4386f1cde02a336ba961b4ac82d-x86.cache-2", O_RDONLY) = 16 <0.000011>
- [b7f92410] open("/home/crazyapple/.fontconfig/4b5cf4386f1cde02a336ba961b4ac82d-x86.cache-2", O_RDONLY) = 16 <0.000011>
- [b7f92410] open("/usr/share/fonts/corefonts", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|0x80000) = 16 <0.000009>
- [b7f92410] open("/var/cache/fontconfig/2d31a572ce6667f6a0da9c8dc611898b-x86.cache-2", O_RDONLY) = 16 <0.000011>
- [b7f92410] open("/home/crazyapple/.fontconfig/2d31a572ce6667f6a0da9c8dc611898b-x86.cache-2", O_RDONLY) = 16 <0.000011>
- [b7f92410] open("/usr/share/fonts/cyrillic", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|0x80000) = 16 <0.000010>
- [b7f92410] open("/var/cache/fontconfig/0251a5afa6ac727a1e32b7d4d4aa7cf0-x86.cache-2", O_RDONLY) = 16 <0.000011>
- [b7f92410] open("/home/crazyapple/.fontconfig/0251a5afa6ac727a1e32b7d4d4aa7cf0-x86.cache-2", O_RDONLY) = 16 <0.000010>
- [b7f92410] open("/usr/share/fonts/default", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|0x80000) = 16 <0.000010>
- [b7f92410] open("/var/cache/fontconfig/a1c95d6dfc9a7b34f44445cf81166004-x86.cache-2", O_RDONLY) = 16 <0.000011>
- [b7f92410] open("/home/crazyapple/.fontconfig/a1c95d6dfc9a7b34f44445cf81166004-x86.cache-2", O_RDONLY) = 16 <0.000010>
- [b7f92410] open("/usr/share/fonts/encodings", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|0x80000) = 16 <0.000009>
- [b7f92410] open("/var/cache/fontconfig/1a21276ee10c19eef148b044d48c5704-x86.cache-2", O_RDONLY) = 16 <0.000010>
- [b7f92410] open("/home/crazyapple/.fontconfig/1a21276ee10c19eef148b044d48c5704-x86.cache-2", O_RDONLY) = 16 <0.000010>
- [b7f92410] open("/usr/share/fonts/kochi-substitute", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|0x80000) = 16 <0.000010>
- [b7f92410] open("/var/cache/fontconfig/8d4af663993b81a124ee82e610bb31f9-x86.cache-2", O_RDONLY) = 16 <0.000011>
- [b7f92410] open("/var/cache/fontconfig/26a4708ae8adaf81babc9f63580e6f31-x86.cache-2", O_RDONLY) = 16 <0.000011>
- [b7f92410] open("/var/cache/fontconfig/76fa4b957c916922374347f144bde9da-x86.cache-2", O_RDONLY) = 16 <0.000010>
- [b7f92410] open("/var/cache/fontconfig/4b172ca7f111e3cffadc3636415fead9-x86.cache-2", O_RDONLY) = 16 <0.000010>
- [b7f92410] open("/home/crazyapple/.fontconfig/4b172ca7f111e3cffadc3636415fead9-x86.cache-2", O_RDONLY) = 16 <0.000010>
- [b7f92410] open("/usr/share/fonts/util", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|0x80000) = 16 <0.000009>
- [b7f92410] open("/var/cache/fontconfig/87f5e051180a7a75f16eb6fe7dbd3749-x86.cache-2", O_RDONLY) = 16 <0.000011>
- [b7f92410] open("/home/crazyapple/.fontconfig/87f5e051180a7a75f16eb6fe7dbd3749-x86.cache-2", O_RDONLY) = 16 <0.000010>
- [b7f92410] open("/usr/share/fonts/default/ghostscript", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|0x80000) = 16 <0.000010>
- [b7f92410] open("/var/cache/fontconfig/5ca8086aeacc9c68e81a71e7ef846b3b-x86.cache-2", O_RDONLY) = 16 <0.000011>
- [b7f92410] open("/home/crazyapple/.fontconfig/5ca8086aeacc9c68e81a71e7ef846b3b-x86.cache-2", O_RDONLY) = 16 <0.000010>
- [b7f92410] open("/usr/share/fonts/encodings/large", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|0x80000) = 16 <0.000010>
- [b7f92410] open("/usr/share/fonts/myttf/VeraSansYuanTiMono-Regular.ttf", O_RDONLY) = 16 <0.000016>
- [b7f92410] open("/usr/share/fonts/myttf/VeraSansYuanTiMono-Regular.ttf", O_RDONLY) = 16 <0.000019>
- [b7f92410] open("/usr/share/fonts/ttf-bitstream-vera/Vera.ttf", O_RDONLY) = 16 <0.000017>
- [b7f92410] open("/usr/share/fonts/corefonts/verdana.ttf", O_RDONLY) = 16 <0.000012>
- [b7f92410] open("/usr/share/fonts/corefonts/arial.ttf", O_RDONLY) = 16 <0.000011>
- [b7f92410] open("/usr/share/fonts/Type1/l048013t.pfa", O_RDONLY) = 16 <0.000012>
- [b7f92410] open("/usr/share/fonts/default/ghostscript/n019003l.pfb", O_RDONLY) = 16 <0.000014>
- [b7f92410] open("/usr/share/fonts/75dpi/helvR12-ISO8859-1.pcf.gz", O_RDONLY) = 16 <0.000013>
- [b7f92410] open("/usr/share/fonts/75dpi/helvR12.pcf.gz", O_RDONLY) = 16 <0.000012>
- [b7f92410] open("/usr/share/fonts/kochi-substitute/kochi-gothic-subst.ttf", O_RDONLY) = 16 <0.000013>
- [b7f92410] open("/usr/share/fonts/arphicfonts/bkai00mp.ttf", O_RDONLY) = 16 <0.000012>
- [b7f92410] open("/usr/share/fonts/baekmuk-fonts/dotum.ttf", O_RDONLY) = 16 <0.000013>
- [b7f92410] open("/etc/gtk-2.0/gtk.immodules", O_RDONLY|O_LARGEFILE) = 16 <0.000013>
- [b7f92410] open("/usr/share/X11/locale/compose.dir", O_RDONLY) = 16 <0.000013>
- [b7f92410] open("/usr/share/pixmaps/gnome-terminal.png", O_RDONLY|O_LARGEFILE) = 16 <0.000012>
- [b7f92410] open("/dev/null", O_RDONLY) = 16 <0.000017>
复制代码 部分fd根本就没有打开过。
fd具体的对应关系估计得编程找,现在只好罗列出来。
请大家帮我看看,估计是什么原因?附上strace 导出的文件。 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|