阅读:10335回复:63
VC2010編譯Firefox 7.0 PGO卡在二次編譯(已解決)
我的環境是win7 x32 4GB, VC++ 2010 Express
編譯Firefox 7.0 with PGO 目前的問題是我一次編譯可過 也就是編譯過程有到跳出Firefox跑sunspider這邊 跑完過了幾分鐘,編譯畫面停止刷新 make等相關進程不再佔用CPU資源 最後停在這裡 图片:2011-09-26_192152.png 查看dist目錄裡面一次編譯結速後的binary,是可以執行的 但就是二次編譯這樣卡住 請問有哪位大俠知道我的編譯出了什麼問題嗎? 這是我的mozconfig . $topsrcdir/browser/config/mozconfig #mk_add_options MOZ_PACKAGE_NSIS=1 ac_add_options --enable-application=browser #ac_add_options --enable-optimize="-O2 -GL -arch:SSE2 -GS" ac_add_options --enable-optimize="-O2 -GL -arch:SSE2" #ac_add_options --enable-profile-guided-optimization ac_add_options --disable-debug ac_add_options --disable-tests ac_add_options --disable-installer --disable-updater --disable-update-channel ac_add_options --disable-accessibility #ac_add_options --enable-update-packaging #ac_add_options --disable-vista-sdk-requirements #ac_add_options --disable-static #ac_add_options --with-l10n-base=/lang #ac_add_options --enable-ui-locale=zh-TW #ac_add_options --enable-official-branding # ## form tete009 #ac_add_options --disable-auto-deps #ac_add_options --disable-jemalloc ac_add_options --disable-crashreporter #ac_add_options --disable-activex-scripting #ac_add_options --disable-activex # ## PGO build mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/ff-pgo mk_add_options PROFILE_GEN_SCRIPT='$(PYTHON) $(MOZ_OBJDIR)/_profile/pgo/profileserver.py' #mk_add_options PYTHONPATH='$(OBJDIR)/_profile/pgo' #mk_add_options MOZ_CO_PROJECT=browser mk_add_options MOZ_MAKE_FLAGS="-j4" |
|
1楼#
发布于:2011-09-26 19:25
Re: VC2010編譯Firerfox 7.0 PGO卡在二次編譯
剛在Mozilla US找到一個跟我有同樣問題的人http://forums.mozillazine.org/viewtopic ... &t=2174999 問題描述跟我完全一樣 一次編譯成功,二次編譯卡住 make沒有佔用任何cpu資源,也沒有得到任何error 似乎跟mk_add_options MOZ_MAKE_FLAGS參數有關 我改成-j1重新編譯一次再回來 |
|
2楼#
发布于:2011-09-26 19:25
Re: VC2010編譯Firerfox 7.0 PGO卡在二次編譯
不好说msys的make bug多多 主要表现在线程操作上 所以出问题就改为-j1 |
|
3楼#
发布于:2011-09-26 19:25
Re: VC2010編譯Firefox 7.0 PGO卡在二次編譯
改成-j1後還真的編譯成功了只是同硬件下,linux用gcc 4.6.1 -O3 -j5 編譯PGO只要54分鐘 VS2010 -O2 -j1要148分鐘.... 性能上比不上tete009跟PcX 接下來就要跟dongyuanxun您多多請教了 還請您包涵 謝謝! |
|
4楼#
发布于:2011-09-26 19:25
Re: VC2010編譯Firefox 7.0 PGO卡在二次編譯
主要是windows的bash比linux要慢的多(和内核有关)Linux下编译很快的 你的linux开关也很保守嘛,在linux下,lto可以尝试使用嘛,加上gold链接器和lto插件,性能不可同日而语 |
|
5楼#
发布于:2011-09-26 19:25
Re: VC2010編譯Firefox 7.0 PGO卡在二次編譯
不知道是sorce code的問題還是gcc的問題我在Firefox 4以前用的參數是比較高的 但後來不知道怎麼搞的-march=i686會報錯 改成-march=core2就又正常,有幾個開關 -O3 -Ofast時好時壞,有的時候編譯會error 有的時候又可以過,但亦有時性能反而下降 反而打libjpeg-turbo patch,顯著提昇render性能 提速的感覺還比較明顯 我接著要來編譯您的betterpgo提速方法 http://code.google.com/p/pcxfirefox/wiki/firefox5VC2010 我將原本的老版本的sunspider去掉 添加了以下 <head> <meta http-equiv="refresh" content="0;url=https://krakenbenchmark.mozilla.org/kraken-1.1/driver.html" /> </head> <head> <meta http-equiv="refresh" content="0;url= http://www.webkit.org/perf/sunspider-0.9.1/sunspider-0.9.1/driver.html" /> </head> <head> <meta http-equiv="refresh" content="0;url=http://v8.googlecode.com/svn/data/benchmarks/v6/run.html" /> </head> 目前還沒有編譯 我對於ff-src/build/pgo/index.html內容有些疑問 看了其他帖,您有提高關於延遲時間 請問這個延遲時間是這個部分嗎? var list = 紅色的部份預設是3000; // 15000 我的理解是3秒間隔,跟每個減隔最常有15秒可供測試 不知我的理解是否正確? |
|
6楼#
发布于:2011-09-26 19:25
因为gcc的lto有sse2的bug嘛,所以一般加入-msse2就行了,其他情形具体情况具体分析。
不知道你说的libjpeg-turbo patch是什么,能提供吗? interval那个建议改个较大的数,3000就是3s,跑比较长的测试我估计15s都跑不完…… ps:FF7已经在FTP上了,我会等tete009编译完再进行编译,这样我容易比对 |
|
7楼#
发布于:2011-09-26 19:25
libjpeg-turbo可以加速linux上圖檔的渲染
貌似在windows下是不起作用的 這是AUR上的Firefox-PGO 我的linux自編譯版就是基於這個套件的patch及它最初的.mozconfig https://aur.archlinux.org/packages.php?ID=22296 http://libjpeg-turbo.virtualgl.org/ https://bbs.archlinux.org/viewtopic.php?id=73422&p=1 另外再請教下幾個問題 我用您的betterpgo編譯成功 但性能貌似只有小幅提昇(或心理作用?) sunspider成績持平 V8 benchmark及Kraken小幅度提昇 但依然不及您的6.0.2版的性能 性能提昇不顯著,體積反而卻增加了不少 http://www.4shared.com/file/k6s_XUGG/fi ... -sse2.html? 第一次編譯結束後彈出窗口 貌似我的批次編寫錯誤 並沒有進行自動測試我所安排的三個測試 後來這三個測試,我是在緊張的情況下手動進行 三個測試均被中段一次,但後來還是有完整跑完測試一次 是否改用您編寫的這個腳本 在進行一次編譯 就可在獲得性能提昇? http://code.google.com/p/pcxfirefox/sou ... Fbetterpgo 謝謝! |
|
8楼#
发布于:2011-09-26 19:25
其实改interval的那个是我在FF5编译时采用的方法,这个好处是能够自动化编译,缺点就是测试不均衡,有的跑完还有一大堆时间,有的时间到了还没跑完,而且不要修改source code的,要改obj文件夹的pgo部分,因为他原来有个复制操作,我不知道在哪个makefile.in里体现的,没去认真找。所以我编译6的时候就使用vbs强制中断,然后自行运行测试了。
体积变大的话增加链接消去开关试试,即加入 export MOZ_OPTIMIZE_LDFLAGS="-opt:ref,icf" mk_add_options MOZ_OPTIMIZE_LDFLAGS="-opt:ref,icf" 一般不会变得太大 |
|
9楼#
发布于:2011-09-26 19:25
謝謝指教
在linux上可以自行編寫腳本,暫停老版本sunspider測試 運行自己想要的測試 .mozconfig裡PGO的地方修改為 mk_add_options PROFILE_GEN_SCRIPT="sh /home/lawliet/run-firefox.sh" 然後新增腳本,內容為 export NO_EM_RESTART=1 mkdir $OBJDIR/_profileprofile $OBJDIR/dist/bin/firefox -no-remote -profile $OBJDIR/_profileprofile 我在linux下編譯的firefox已經應用您的betterpgo 晚一點繼續折騰win平台的betterpgo |
|
10楼#
发布于:2011-09-26 19:25
請問一次編譯後,手動開啟調教的那個firefox究竟是哪個目錄的才對?
在@TOPSRCDIR@/dist/bin跟@TOPSRCDIR@/dist/chrome裡面都有firefox 也都可以執行 我開啟@TOPSRCDIR@/dist/bin裡頭的firefox進行手動調教 編譯完後,調教的項目似乎沒有任何性能提昇(至少分數上看不出來) 與您的自編譯版有顯著的差距 請問我還有什麼地方沒有做到? 謝謝 |
|
11楼#
发布于:2011-09-26 19:25
应该是/dist/bin
奇怪,你看看历史记录,pgo信息是否进行合并了 有时pgomerge会有这样的bug,你可能需要把采集到的pgo信息复制到各个文件的编译obj目录里去 我过一会儿开始编译FF7,暂时先用的tete009的 |
|
12楼#
发布于:2011-09-26 19:25
我剛剛用舊版本sunspider測試
也就是自動開窗運行腳本 我追蹤了那個自動開啟的firefox窗口 目錄是在/dist/firefox/firefox.exe 請問如果是因為bug因素影響 想請問我應該從哪裡提取pgo採集的信息? 又應該將這些信息複製到哪一個目錄內? 謝謝! |
|
13楼#
发布于:2011-09-26 19:25
pgo信息即pgc扩展名的那些
pgc一般要放到pgd一起的地方 比如 firefox?.pgc就放到firefox.pgd的目录里 其他信息以此类推 所以你用dist/bin或者dist/firefox都是一样的 |
|
14楼#
发布于:2011-09-26 19:25
編譯前再請教一下
tete009的那噱補丁,跟您wiki上的那個添加jemalloc 這些會提高性能嗎? |
|
上一页
下一页