阿里云
阿里云多端小程序中小企业获客首选
发表主题 回复主题
  • 4187阅读
  • 2回复

[解决方案]GCC PGO 适应性优化编译 PHP7.1

级别: 论坛版主
发帖
9349
云币
14165
— 本帖被 不靠谱贝贝 设置为精华(2016-12-22) —
介绍 M6U/. n  
"J^M@k\!  
PGO 即 Profile-guided optimization(归档引导优化),是一种适应优化手段,不需要对软件代码本身做出改进,即可获得性能的提升,目前已经应用于 GCC、VC++ 等常见的编译器中。一些开源项目像 Firefox 就默认使用 PGO 编译来优化性能,但是大部分软件上应用率并不高。 ^,[V;3  
zS*GYE(l^  
'zV/4iE=  
使用 GCC PGO 编译 PHP7.1+ opcache,在阿里 1核心 1G 内存的配置上,Wordpress 4.6.0 性能提升约 5%,Drupal 8.1.8 上则提升约 2%。 当然了,服务配置越高,自己身参数设置的好,性能提升就会越明显。 l<0 BMwS8  
S?*pCJ0  
E8#r<=(m  
所以,下面就来简单介绍一下如何使用 PGO 来编译 PHP7.1。个人绝对 PGO 编译最好还是应用于,PHP 升级的时候,如果在第一次编译服务器环境的时候,网站没有搭建完成,进行训练并不会有明显的性能提升。 `~Nd4EA)2  
KIO{6  
v{9< ATi  
本教程适用于 Linux 下编译,使用 Visual Studio 自带 PGO, PHP 官方提供的 PHP 7.1 / 7.0 也都提供了 PGO 支持,无需额外麻烦自己动手了! 2^N 4(  
NFTEp0eP  
安装 >Z ZX]#=I  
v`8dRVN  
3l"7$B  
首先,按鸟哥说的,GCC 编译器越新越好,最好不要低于 GCC 4.8,虽然貌似 GCC 4 早期的时候就支持 PGO 了,反正听大神的准没错。 VKRj 1LXz  
AA34JVm]  
f;M7y:A8q,  
二,下载 PHP7.1,然后 ./configure 一下,这里就不再重复了。 (m|w&oA/  
KA1Z{7UK%  
b489sa  
三、然后我们开始第一次编译 PHP,
  1. make prof-gen
H^P uC (  
TGx:#x*k  
四、这时候再 php 目录下,sapi/cli/php、sapi/cgi/php-cgi 和 sapi/fpm/php-fpm 这个三个二进制文件就会生成,供我们进行针对性的训练 b6BeOR*ps  
PEZ~og:w  
l%]S7|PKx  
五、适应性训练,使用如下命令 dE9xan  
  1. sapi/cgi/php-cgi -T 100 /data/www.mf8.biz/index.php >/dev/null
5]n5nqz  
T. nY>Q8  
就会自动对 /data/www.mf8.biz/index.php 进行针对性训练,一般来说网站访问量最大的就是首页了,所以我们只要对首页文件进行训练即可。 使用 LNMP 的环境还可以用 sapi/fpm/php-fpm 代替 sapi/cgi/php-cgi,获得更好的反馈。 }WXO[ +l  
qXO@FW]  
cd,)GF  
值得说明的是,训练只能对一个网站程序有效,例如训练的 WordPress 只会对 WP 的性能进行适应性优化。如果服务器有多种网站程序,则可以使用 php_pgo_training_scripts 脚本来获得通用性的 PGO 优化。 pcIJija:  
@Q~Oc_z  
EJ&[I%jU  
六、清理第一次编译生成的二进制文件,输入如下命令
  1. make prof-clean
)+T\LU  
g}nlb.b]{m  
七、根据训练反馈的想信息,进行第二次编译并进行安装,输入如下命令
  1. make prof-use && make install
w7}m T3p,)  
<}x_F)E[t  
注意,有些一键包,还有编译 PHP 的时候有使用 liconv 库,所以在 make prof-gen 和 make prof-use 都别忘记引用额外的库。 '&4W@lvyz  
ZnDI J&S  
tM3eB= .*  
例如:
  1. make prof-gen ZEND_EXTRA_LIBS='-liconv' -j ${THREAD}
其他 "i/ l'  
"e<Z$"7i  
*{|{T_H:  
如果编译过程嫌慢(的确很慢),可以通过增加编译线程和提升 SSD 性能来增加速度! Q$Y ]KV  
[ 此帖被ivmmff在2016-12-19 11:28重新编辑 ]
本帖最近评分记录: 1 条评分 云币 +10
鬼才神兵 云币 +10 您的帖子很精彩!希望很快能再分享您的下一帖! 2017-01-04
级别: 论坛版主
发帖
1784
云币
3327

只看该作者 沙发  发表于: 2017-01-04
您的帖子很精彩!希望很快能再分享您的下一帖!
级别: 架构狮
发帖
1217
云币
1946
只看该作者 板凳  发表于: 2018-01-23
您的帖子很精彩!希望很快能再分享您的下一帖!
发表主题 回复主题
« 返回列表上一主题下一主题

限100 字节
如果您在写长篇帖子又不马上发表,建议存为草稿
 
验证问题: 阿里云官网域名是什么? 正确答案:www.aliyun.com
上一个 下一个
      ×
      全新阿里云开发者社区, 去探索开发者的新世界吧!
      一站式的体验,更多的精彩!
      通过下面领域大门,一起探索新的技术世界吧~ (点击图标进入)