Lawliet
火狐狸
火狐狸
  • UID34414
  • 注册日期2010-11-03
  • 最后登录2017-04-02
  • 发帖数201
  • 经验13枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 社区居民
  • 忠实会员
阅读:9389回复:63

VC2010編譯Firefox 7.0 PGO卡在二次編譯(已解決)

楼主#
更多 发布于:2011-09-26 19:25
我的環境是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"
Lawliet
火狐狸
火狐狸
  • UID34414
  • 注册日期2010-11-03
  • 最后登录2017-04-02
  • 发帖数201
  • 经验13枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 社区居民
  • 忠实会员
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重新編譯一次再回來
Lawliet
火狐狸
火狐狸
  • UID34414
  • 注册日期2010-11-03
  • 最后登录2017-04-02
  • 发帖数201
  • 经验13枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 社区居民
  • 忠实会员
2楼#
发布于: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您多多請教了
還請您包涵

謝謝!
Lawliet
火狐狸
火狐狸
  • UID34414
  • 注册日期2010-11-03
  • 最后登录2017-04-02
  • 发帖数201
  • 经验13枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 社区居民
  • 忠实会员
3楼#
发布于: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 =
     [
  "betterpgo/v8_suite.html",
  "betterpgo/sunspider_91.html",
  "betterpgo/Kraken_11.html"
     ];
 var interval = 100000; // 100000
 var idx = 0;
 var w;


紅色的部份預設是3000; // 15000
我的理解是3秒間隔,跟每個減隔最常有15秒可供測試
不知我的理解是否正確?
Lawliet
火狐狸
火狐狸
  • UID34414
  • 注册日期2010-11-03
  • 最后登录2017-04-02
  • 发帖数201
  • 经验13枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 社区居民
  • 忠实会员
4楼#
发布于: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

謝謝!
Lawliet
火狐狸
火狐狸
  • UID34414
  • 注册日期2010-11-03
  • 最后登录2017-04-02
  • 发帖数201
  • 经验13枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 社区居民
  • 忠实会员
5楼#
发布于: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
Lawliet
火狐狸
火狐狸
  • UID34414
  • 注册日期2010-11-03
  • 最后登录2017-04-02
  • 发帖数201
  • 经验13枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 社区居民
  • 忠实会员
6楼#
发布于:2011-09-26 19:25
請問一次編譯後,手動開啟調教的那個firefox究竟是哪個目錄的才對?
在@TOPSRCDIR@/dist/bin跟@TOPSRCDIR@/dist/chrome裡面都有firefox
也都可以執行

我開啟@TOPSRCDIR@/dist/bin裡頭的firefox進行手動調教
編譯完後,調教的項目似乎沒有任何性能提昇(至少分數上看不出來)
與您的自編譯版有顯著的差距
請問我還有什麼地方沒有做到?

謝謝
Lawliet
火狐狸
火狐狸
  • UID34414
  • 注册日期2010-11-03
  • 最后登录2017-04-02
  • 发帖数201
  • 经验13枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 社区居民
  • 忠实会员
7楼#
发布于:2011-09-26 19:25
我剛剛用舊版本sunspider測試
也就是自動開窗運行腳本
我追蹤了那個自動開啟的firefox窗口
目錄是在/dist/firefox/firefox.exe

請問如果是因為bug因素影響
想請問我應該從哪裡提取pgo採集的信息?
又應該將這些信息複製到哪一個目錄內?
謝謝!
Lawliet
火狐狸
火狐狸
  • UID34414
  • 注册日期2010-11-03
  • 最后登录2017-04-02
  • 发帖数201
  • 经验13枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 社区居民
  • 忠实会员
8楼#
发布于:2011-09-26 19:25
編譯前再請教一下
tete009的那噱補丁,跟您wiki上的那個添加jemalloc
這些會提高性能嗎?
Lawliet
火狐狸
火狐狸
  • UID34414
  • 注册日期2010-11-03
  • 最后登录2017-04-02
  • 发帖数201
  • 经验13枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 社区居民
  • 忠实会员
9楼#
发布于:2011-09-26 19:25
我的鏈接差不多在60~70分鐘左右
Q6600@3Ghz,但-j1
單線程...開多線會停止編譯

tete009的那個提昇
貌似這個應用很不普遍
我先要求javascript render性能就好了

那如果不打上tete009補丁
那進行pgo編譯時,只要不失敗
是否pgd文件就不會被刪除?

問在詳細一點,所謂pgd文件只的是後奏名為*.pgd的文件
還是叫做pgd的文件夾裡面所有的東西?
一次編譯還在進行中,先問個明白
怕到時候手忙腳亂

謝謝~
Lawliet
火狐狸
火狐狸
  • UID34414
  • 注册日期2010-11-03
  • 最后登录2017-04-02
  • 发帖数201
  • 经验13枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 社区居民
  • 忠实会员
10楼#
发布于:2011-09-26 19:25
好的,謝謝

我目前一次編譯還沒結束
等待中,有問題再向您求教
Lawliet
火狐狸
火狐狸
  • UID34414
  • 注册日期2010-11-03
  • 最后登录2017-04-02
  • 发帖数201
  • 经验13枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 社区居民
  • 忠实会员
11楼#
发布于:2011-09-26 19:25
我現在一次編譯已經結速
目前編譯暫停可以進行手動採集
但我在/dist/bin, /dist/firefox開啟各跑了一次sunspider 9.1
追蹤整個mozilla-release資料夾,沒有找到*.pgc *.pgd的文件
整個文件夾的大小與文件數也沒有變化

這是我的.mozconfig
. $topsrcdir/browser/config/mozconfig
#mk_add_options MOZ_PACKAGE_NSIS=1
ac_add_options --enable-application=browser
#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-jemalloc
#
## optimize
#ac_add_options --enable-optimize="-O2 -GL -arch:SSE2 -GS"
#ac_add_options --enable-optimize="-O2 -GL -arch:SSE2"
ac_add_options --enable-optimize="-O2 -Ot -Ob2 -Oy -GF -GL -arch:SSE2"
#ac_add_options --enable-optimize="-O2 -Ot -Ob2 -Oy -GF -arch:SSE2"
#export MOZ_OPTIMIZE_LDFLAGS="-opt:ref,icf"
#mk_add_options MOZ_OPTIMIZE_LDFLAGS="-opt:ref,icf"
#
#
#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
#
## from 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
#
#  auto 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 PROFILE_GEN_SCRIPT='cscript C:/Users/Lawliet/Desktop/c_Firefox/PgoMsg.vbs'
#mk_add_options PYTHONPATH='$(OBJDIR)/_profile/pgo'
#mk_add_options MOZ_CO_PROJECT=browser
mk_add_options MOZ_MAKE_FLAGS="-j1"


那個vbs中斷窗口的意思是採集完了,才按"Yes"
還是要先按"Yes"再採集?
如果採集過程順利,編譯窗口是否會刷新?
就像跑老版本sunspider那樣?


另外我在link的時候出現這樣的提示
對PGO編譯有影響嗎?
LINK : warning LINK4256: Profile Guided Optimization is no available of the product: ignoring related options
Lawliet
火狐狸
火狐狸
  • UID34414
  • 注册日期2010-11-03
  • 最后登录2017-04-02
  • 发帖数201
  • 经验13枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 社区居民
  • 忠实会员
12楼#
发布于:2011-09-26 19:25
……
不是在源碼目錄裡找哇,在你obj目錄裡找……

我的obj是在/ff-pgo,這應該沒錯啊
我剛又跑了v8 benchmark,把窗口關掉又打開
還是沒有發現生成



[quote="dongyuanxun"]採集完複製到目錄後
再按Yes[/quote]
所有的pgc與pgd是否都是出現在同一個資料夾
但是放的位置卻不太一樣?
Lawliet
火狐狸
火狐狸
  • UID34414
  • 注册日期2010-11-03
  • 最后登录2017-04-02
  • 发帖数201
  • 经验13枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 社区居民
  • 忠实会员
13楼#
发布于:2011-09-26 19:25
我剛找到另一個firefox.exe
在C:\mozilla-release\ff-pgo\browser\app
無法直接執行,看起來缺少很多lib
是否應該從vs2010那裡複製lib?
又應該複製哪個檔呢?
Lawliet
火狐狸
火狐狸
  • UID34414
  • 注册日期2010-11-03
  • 最后登录2017-04-02
  • 发帖数201
  • 经验13枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 社区居民
  • 忠实会员
14楼#
发布于:2011-09-26 19:25
我現在的問題是一次編譯跟二次編譯產生的binary
它們的md5是一樣的,既沒有採集到任何pgo信息

採集pgo信息,應該就是在一次編譯結束以後
開啟/obj/dist下的firefox,並進入v8, sunspider等相關網站吧?
上一页
游客

返回顶部