让你的PHP7更快之Hugepage用法分析.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
让你的PHP7更快之Hugepage用法分析   本文实例讲述了让你的PHP7更快之Hugepage用法。分享给大家供大家参考,具体如下:   PHP7刚刚发布了RC4, 包含一些bug修复和一个我们最新的性能提升成果(NEWS), 那就是”HugePageFy PHP TEXT segment”, 通过启用这个特性,PHP7会把自身的TEXT段(执行体)”挪“到Huagepage上,之前的测试,我们能稳定的在Wordpress上看到2%~3%的QPS提升。   关于Hugepage是啥,简单的说下就是默认的内存是以4KB分页的,而虚拟地址和内存地址是需要转换的, 而这个转换是要查表的,CPU为了加速这个查表过程都会内建TLB(Translation Lookaside Buffer), 显而易见如果虚拟页越小,表里的条目数也就越多,而TLB大小是有限的,条目数越多TLB的Cache Miss也就会越高, 所以如果我们能启用大内存页就能间接降低这个TLB Cache Miss,至于详细的介绍,Google一搜一大堆我就不赘述了,这里主要说明下如何启用这个新特性, 从而带来明显的性能提升。   新的Kernel启用Hugepage已经变得非常容易了,以我的开发虚拟机为例(Ubuntu Server 14.04,Kernel 3.13.0-45), 如果我们查看内存信息:   $ cat /proc/meminfo | grep Huge   AnonHugePages: ? kB   HugePages_Total: ? ?0   HugePages_Free: ? ?0   HugePages_Rsvd: ? ?0   HugePages_Surp: ? ?0   Hugepagesize: ? ?2048 kB   可见一个Hugepage的size是2MB, 而当前并没有启用HugePages. 现在让我们先编译PHP RC4, 记得一定不要加: –disable-huge-codes (这个新特性是默认启用的, 你加了这个就关了)   然后配置opcache, 从PHP5.5开始Opcache已经是默认启用编译的,但是是编译动态库的, 所以我们还是要在php.ini中配置加载下。   zend_extension=opcache.so   这个新特性是做在Opcache里的,所以也要通过Opcache启用这个特性(通过设置opcache.huge_code_pages=1), 具体的配置:   opcache.huge_code_pages=1   现在让我们配置OS, 分配一些Hugepages:   $ sudo sysctl vm.nr_hugepages=128   vm.nr_hugepages = 128   现在让我们再次检查内存信息:   $ cat /proc/meminfo | grep Huge   AnonHugePages: ? kB   HugePages_Total: ? 128   HugePages_Free: ? 128   HugePages_Rsvd: ? ?0   HugePages_Surp: ? ?0   Hugepagesize: ? ?2048 kB   可以看到我们分配的128个Hugepages已经就绪了, 然后我们来启动php-fpm:   $ /home/huixinchen/local/php7/sbin/php-fpm   [01-Oct-XX 09:33:27] NOTICE: [pool www] user directive is ignored when FPM is not running as root   [01-Oct-XX 09:33:27] NOTICE: [pool www] group directive is ignored when FPM is not running as root   现在, 再次检查内存信息:   $ cat /proc/meminfo | grep Huge   AnonHugePages: ? kB   HugePages_Total: ? 128   HugePages_Free: ? 113   HugePages_Rsvd: ? ?27   HugePages_Surp: ? ?0   Hugepagesize: ? ?2048 kB   说到这里,如果Hugepages可用, 其实Opcache也会用Hugepages来存储opcodes缓存, 所以为了验证opcache.huge_code_pages确实生效, 我们不妨关闭opcache.huge_code_pages, 然后再启动一次后看内

文档评论(0)

sanshengyuan + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档