LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 4752|回复: 31

Firefox 优化探索

[复制链接]
发表于 2008-1-8 01:20:34 | 显示全部楼层 |阅读模式
Firefox 一直占用大量内存, 使系统不得不使用大量的 swap, 导致系统性能下降...

这些问题一直困扰我很久... 也抽了些时间来探索 Firefox 的优化, 与大家共同探讨一下.

一、配置级优化

1.1 减少内存占用

在 about:config 中进行如下设置:
browser.cache.memory.capacity 12288
browser.cache.memory.enable true
browser.history_expire_days 7
browser.sessionhistory.max_total_viewers 0

1.2 提高速度

1.2.1 禁用 pango

pango 是目前最慢的图形引擎 在 ~/.bash_profile 中加入:
export MOZ_DISABLE_PANGO=1

1.2.2 设置 about:config

network.dns.disableIPv6 true
network.http.max-connections 32
network.http.max-persistent-connections-per-server 4
network.http.max-persistent-connections-per-proxy 8
network.http.pipelining true
network.http.pipelining.maxrequests 8
network.http.proxy.pipelining true

二、编译级优化

在做完配置级的优化后, firefox 得到一定的优化, 但优化效果有限,还不能令人满意,于是开始尝试编译级优化...

2.1 优化编译参数

Fedora 已经对各硬件系统做了 CFLAGS 的优化设置, 在 /usr/lib/rpm/rpmrc 中, 例如 x86_64 的缺省设置是:
-O2 -g -m64 -mtune=generic
根据我的CPU类型, 我将其改为:
-march=k8 -msse3 -O2 -pipe
大家可以根据自己的 CPU 类型设置相应的优化编译参数.

2.2 获得 firefox 源码

yumdownloader --source firefox

2.3 安装源码

rpm -ivh firefox-2.0.0.10-2.fc7.src.rpm

2.4 修改 firefox 配置参数

配置参数在 /usr/src/redhat/SOURCES/firefox-mozconfig-branded
缺省是:
ac_add_options --with-system-nspr
ac_add_options --with-system-nss
ac_add_options --with-system-jpeg
ac_add_options --with-system-zlib
ac_add_options --with-system-png
ac_add_options --with-pthreads
ac_add_options --disable-tests
ac_add_options --disable-debug
ac_add_options --disable-installer
ac_add_options --enable-xinerama
ac_add_options --enable-default-toolkit=gtk2
ac_add_options --disable-xprint
ac_add_options --disable-strip
ac_add_options --enable-pango
ac_add_options --enable-system-cairo
ac_add_options --enable-svg
ac_add_options --enable-canvas
这个值得研究,也可以不改

2.5 编译 firefox
rpmbuild -ba firefox.spec --target=x86_64
根据你的CPU, 也许你需要 --target=i686

2.7 安装编译好的rpm

这个不用多说的...

三、代码级优化

配置级优化和编译级优化能达到一定的效果,但系统资源的占用还是不少。我还没有开始代码级的优化。。。这个会耗时不少。。。请有经验的朋友来发表意见。。。

(转载请注明出处)
发表于 2008-1-8 06:32:40 | 显示全部楼层
Post by shpchp;1804239
Firefox 一直占用大量内存, 使系统不得不使用大量的 swap, 导致系统性能下降...

这些问题一直困扰我很久... 也抽了些时间来探索 Firefox 的优化, 与大家共同探讨一下.

一、配置级优化

1.1 减少内存占用

在 about:config 中进行如下设置:
browser.cache.memory.capacity 12288
browser.cache.memory.enable true
browser.history_expire_days 7
browser.sessionhistory.max_total_viewers 0

1.2 提高速度

1.2.1 禁用 pango

pango 是目前最慢的图形引擎  

Pango 是用于输出和文本渲染的库. 跟图形引擎完全不相干,最多说是“字符输出引擎”,自己都搞不清楚的东西就那出来想给自己脸上贴金这叫荼毒后来者。
  
况且关于firefox 的优化太多了搞点创新的耳目一新的才能叫人肃然起敬,整天从其他地方一搜来这边一帖有时版主一不小心加了精你尝到甜头天天来这套。
回复 支持 反对

使用道具 举报

发表于 2008-1-8 08:43:40 | 显示全部楼层
Pango 作为文本渲染引擎速度很慢吗?应该不是吧!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-1-8 12:44:38 | 显示全部楼层
Post by dolphin2000;1804268
Pango 作为文本渲染引擎速度很慢吗?应该不是吧!


Fedora 和 Ubuntu 等发行版的 bugzilla 都提交了 Pango 导致性能下降的 bugzilla, 到目前为止的解决方法就是禁掉 Pango, 在 bugzilla 上有更详细的讨论... 我的测试结果也是尽掉 Pango 后速度会快些.

另外, 我现在为了用 java 在 x86_64 系统上装的是 firefox.i686, 有一个烦心的问题是在 x86_64 上没法通过 "firefox -g" 对 firefox.i686 进行调试了, 已经在 bugzilla.redhat.com 提交了错误报告, 但没有回应... 哪位有经验的朋友能指点一下?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-1-9 00:20:32 | 显示全部楼层
都没人指点么...?

firefox -g 的问题说是解决到 rawhide 了... F7 的问题估计只有自己去参照 rawhide 的方法解决...

经常关注 Fedora bugzilla 中 firefox 部份的朋友可能注意到上面提到了很多测试 firefox 性能的方法, 其中这个最简单易用:
http://www.howtocreate.co.uk/csstest.html
用这个可以简单测试自己的优化结果...

配置级优化和编译级优化确实只能起有限的作用... 解决不了根本问题。很多人包括我都花了很多精力在这上面,建议到此为止。。。不可能有大的进展了。当然如果能完善我在上面提到的优化办法就更好

下面说说代码级优化,其实不能叫优化... 应该叫排错。从内存泄漏开始。

每个人每天都能感受到 firefox 的内存泄漏(用久了后内存占用会无限膨胀), 但要定位到代码却非常难, 这个问题只有慢慢来 , 大家都在忍受,不想忍的就行动起来。。。我是不想忍了。

现有的查内存泄漏的工具不是很好用, 明明知道是内存泄漏,但用 Leak Gauge 和 Leak Monitor 都查不出来。有人有相关经验么?

或者哪位朋友提供一个好用的用于调试的 firefox.spec 么 (最好能修复了 -g 问题)? 过两天空了我也把我的共享上来。。。

参阅:
fedora firefox bugzilla:
https://bugzilla.redhat.com/bugl ... bstr&long_desc=
fedora firefox spec 历史记录:
http://cvs.fedoraproject.org/vie ... refox.spec?view=log
Performance Leak Tools:
http://wiki.mozilla.org/Performanceeak_Tools
回复 支持 反对

使用道具 举报

发表于 2008-1-9 00:39:13 | 显示全部楼层
常听有人抱怨的说,fiefox占用大量内存和CPU资源,但似乎我自己从来没有这种感觉,即使同时打开十几个标签也是一样,负载都不大。如果说跟系统有关系的话,我自己也尝试过几个版本,都是一样的,没太大差别。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-1-9 13:54:58 | 显示全部楼层
Post by LiEn;1804599
常听有人抱怨的说,fiefox占用大量内存和CPU资源,但似乎我自己从来没有这种感觉,即使同时打开十几个标签也是一样,负载都不大。如果说跟系统有关系的话,我自己也尝试过几个版本,都是一样的,没太大差别。


看你的 uptime 是才启动机器. firefox 才启动后虽然内存占用比较多,但还能接受。问题是用一长段时间后,是由于内存泄漏,内存占用就会非常厉害。自己找一个会自动刷新的网站就很容易直观的看到内存泄漏,也可以按照这几个bug报告的方式测:
https://bugzilla.redhat.com/show_bug.cgi?id=245505
https://bugzilla.redhat.com/show_bug.cgi?id=246818

我的firefox运行才不到2小时,内存占用就已经很厉害了,见附图。

另,"firefox -g" 的问题已经搞定了,Fedora 拒绝修正到 F7 中,不过可以按照这个办法自己给 F7 的 firefox.spec 打补丁, 很简单:
http://cvs.fedoraproject.org/vie ... =1.200&r2=1.201
补丁下载:
http://cvs.fedoraproject.org/vie ... debug.patch?rev=1.1
重新rpmbuild后就能通过 gdb 对 firefox 进行调试了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2008-1-9 18:01:21 | 显示全部楼层
内存买来本来就是被用的,那么怕占内存把你的1g换成512m不久省了一半吗,不用X又省不少。
况且占用内存多少跟开机时间并非你所述”问题是用一长段时间后,是由于内存泄漏,内存占用就会非常厉害。“  
我的都uptime 16小时以上,也没你所说泄漏了很多内存。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-1-10 22:19:49 | 显示全部楼层
Post by onelay;1804856
内存买来本来就是被用的,那么怕占内存把你的1g换成512m不久省了一半吗,不用X又省不少。


内存被耗尽后系统会采用swap, 这将导致性能下降...... 这不需要我在这里扫盲把,自己去看"内存+swap+性能"的相关文档...

Post by onelay;1804856
况且占用内存多少跟开机时间并非你所述”问题是用一长段时间后,是由于内存泄漏,内存占用就会非常厉害。“  
我的都uptime 16小时以上,也没你所说泄漏了很多内存。


天, firefox内存泄漏于系统uptime有什么关系? 只有firefox运行时间较长并访问了不少导致内存泄漏的网站后才能感受到... 这个问题也太弱了吧?我不是已经在前面列出了相关bug么,自己不会去看?
回复 支持 反对

使用道具 举报

发表于 2008-1-11 12:04:25 | 显示全部楼层
fedora下的firefox由于带了大量不需要的语言,导致占用内存过大,你可以自己去掉那些不需要的语言再编译,会节约大量开销。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表