PHP7中Hugepage的使用方法-創(chuàng)新互聯(lián)

PHP7增加了一些特性

10余年的青縣網(wǎng)站建設(shè)經(jīng)驗(yàn),針對設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。營銷型網(wǎng)站的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整青縣建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)從事“青縣網(wǎng)站設(shè)計(jì)”,“青縣網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

性能提升:PHP7比PHP5.6性能提升了兩倍。 Improved performance: PHP 7 is up to twice as fast as PHP 5.6

全面一致的64位支持。 Consistent 64-bit support

以前的許多致命錯(cuò)誤,改成拋出異常。Many fatal errors are now Exceptions

移除了一些老的不在支持的SAPI(服務(wù)器端應(yīng)用編程端口)和擴(kuò)展。Removal of old and unsupported SAPIs and extensions

新增了空接合操作符。The null coalescing operator (??)

新增加了結(jié)合比較運(yùn)算符。Combined comparison Operator (<=>)

新增加了函數(shù)的返回類型聲明。Return Type Declarations

新增加了標(biāo)量類型聲明。Scalar Type Declarations

新增加匿名類。Anonymous Classes

Hugepage

簡單的說下就是默認(rèn)的內(nèi)存是以4KB分頁的,而虛擬地址和內(nèi)存地址是需要轉(zhuǎn)換的, 而這個(gè)轉(zhuǎn)換是要查表的,CPU為了加速這個(gè)查表過程都會(huì)內(nèi)建TLB(Translation Lookaside Buffer), 顯而易見如果虛擬頁越小,表里的條目數(shù)也就越多,而TLB大小是有限的,條目數(shù)越多TLB的Cache Miss也就會(huì)越高, 所以如果我們能啟用大內(nèi)存頁就能間接降低這個(gè)TLB Cache Miss,至于詳細(xì)的介紹,Google一搜一大堆我就不贅述了,這里主要說明下如何啟用這個(gè)新特性, 從而帶來明顯的性能提升。

新的Kernel啟用Hugepage已經(jīng)變得非常容易了,以我的開發(fā)虛擬機(jī)為例(Ubuntu Server 14.04,Kernel 3.13.0-45), 如果我們查看內(nèi)存信息:

$ cat /proc/meminfo | grep Huge
AnonHugePages:    444416 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB

可見一個(gè)Hugepage的size是2MB, 而當(dāng)前并沒有啟用HugePages. 現(xiàn)在讓我們先編譯PHP RC4, 記得一定不要加: --disable-huge-code-pages (這個(gè)新特性是默認(rèn)啟用的, 你加了這個(gè)就關(guān)了)

然后配置opcache, 從PHP5.5開始Opcache已經(jīng)是默認(rèn)啟用編譯的,但是是編譯動(dòng)態(tài)庫的, 所以我們還是要在php.ini中配置加載下。

zend_extension=opcache.so

這個(gè)新特性是做在Opcache里的,所以也要通過Opcache啟用這個(gè)特性(通過設(shè)置opcache.huge_code_pages=1), 具體的配置:

opcache.huge_code_pages=1

現(xiàn)在讓我們配置OS, 分配一些Hugepages:

$ sudo sysctl vm.nr_hugepages=128
vm.nr_hugepages = 128

現(xiàn)在讓我們再次檢查內(nèi)存信息:

$ cat /proc/meminfo | grep Huge
AnonHugePages:    444416 kB
HugePages_Total:     128
HugePages_Free:      128
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB

可以看到我們分配的128個(gè)Hugepages已經(jīng)就緒了, 然后我們來啟動(dòng)php-fpm:

$ /home/huixinchen/local/php7/sbin/php-fpm
[01-Oct-2015 09:33:27] NOTICE: [pool www] 'user' directive is ignored when FPM is not running as root
[01-Oct-2015 09:33:27] NOTICE: [pool www] 'group' directive is ignored when FPM is not running as root

現(xiàn)在, 再次檢查內(nèi)存信息:

$ cat /proc/meminfo | grep Huge
AnonHugePages:    411648 kB
HugePages_Total:     128
HugePages_Free:      113
HugePages_Rsvd:       27
HugePages_Surp:        0
Hugepagesize:       2048 kB

說到這里,如果Hugepages可用, 其實(shí)Opcache也會(huì)用Hugepages來存儲(chǔ)opcodes緩存, 所以為了驗(yàn)證opcache.huge_code_pages確實(shí)生效, 我們不妨關(guān)閉opcache.huge_code_pages, 然后再啟動(dòng)一次后看內(nèi)存信息:

$ cat /proc/meminfo | grep Huge
AnonHugePages:    436224 kB
HugePages_Total:     128
HugePages_Free:      117
HugePages_Rsvd:       27
HugePages_Surp:        0
Hugepagesize:       2048 kB

可見開啟了huge_code_pages以后, fpm啟動(dòng)后多用了4個(gè)pages, 現(xiàn)在我們檢查下php-fpm的text大?。?/p>

$ size /home/huixinchen/local/php7/sbin/php-fpm
   text        data         bss         dec         hex     filename
10114565      695200      131528     10941293      a6f36d     /home/huixinchen/local/php7/sbin/php-fpm

可見text段有10114565個(gè)字節(jié)大小, 總共需要占用4.8個(gè)左右的2M的pages, 考慮到對齊以后(尾部不足2M Page部分不挪動(dòng)), 申請4個(gè)pages, 正好和我們看到的相符。

說明配置成功! Enjoy

但是有言在先, 啟用此特性以后, 會(huì)造成一個(gè)問題就是你如果嘗試通過Perf report/anno 去profiling的時(shí)候, 會(huì)發(fā)現(xiàn)符號(hào)丟失(valgrind, gdb不受影響), 這個(gè)主要原因是Perf的設(shè)計(jì)采用監(jiān)聽了mmap,然后記錄地址范圍, 做IP到符號(hào)的轉(zhuǎn)換, 但是目前HugeTLB只支持MAP_ANON, 所以導(dǎo)致Perf認(rèn)為這部分地址沒有符號(hào)信息,希望以后版本的Kernel可以修復(fù)這個(gè)限制吧..

以上就是讓 PHP7 更快之 Hugepage 詳解的詳細(xì)內(nèi)容,更多請關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司其它相關(guān)文章!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

本文標(biāo)題:PHP7中Hugepage的使用方法-創(chuàng)新互聯(lián)
網(wǎng)站路徑:http://muchs.cn/article8/dspdop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)小程序開發(fā)、網(wǎng)站收錄、自適應(yīng)網(wǎng)站定制網(wǎng)站、虛擬主機(jī)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)