PHP7 は、いくつかのバグ修正と最新のパフォーマンス改善 (ニュース) の 1 つである「HugePageFy PHP TEXT セグメント」を含む RC4 をリリースしました。この機能を有効にすると、PHP7 は次のようになります。独自の TEXT セグメント (実行本体) を Huagepage に「移動」します。これまでのテストでは、WordPress で QPS が 2% ~ 3% 増加することが着実に確認できました。
Hugepageとは何かというと、簡単に言うとデフォルトのメモリを4KB単位でページングしており、仮想アドレスとメモリアドレスを変換する必要があり、この変換にはテーブルルックアップが必要になります。ルックアップでは、CPU テーブル プロシージャにはすべて TLB (Translation Lookaside Buffer) が組み込まれています。明らかに、仮想ページが小さい場合、テーブル内のエントリの数は多くなり、TLB サイズは制限されます。エントリが多いほど、 , TLB のキャッシュ ミスが高くなるので、大きなメモリ ページを有効にできれば、間接的にこの TLB キャッシュ ミスを減らすことができます。詳しい紹介については、Google でいろいろ調べたので割愛します。この新機能を有効にして、明らかにパフォーマンスを向上させる方法を主に説明します。
新しいカーネルで Hugepage を有効にするのは非常に簡単になりました。開発仮想マシン (Ubuntu Server 14.04、カーネル 3.13.0-45) を例として、メモリ情報を表示すると、次のようになります。
$ cat /proc/meminfo | grep Huge AnonHugePages: 444416 kB HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB
zend_extension=opcache.so
opcache.huge_code_pages=1
$ sudo sysctl vm.nr_hugepages=128 vm.nr_hugepages = 128
$ cat /proc/meminfo | grep Huge AnonHugePages: 444416 kB HugePages_Total: 128 HugePages_Free: 128 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB
$ /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
$ cat /proc/meminfo | grep Huge AnonHugePages: 411648 kB HugePages_Total: 128 HugePages_Free: 113 HugePages_Rsvd: 27 HugePages_Surp: 0 Hugepagesize: 2048 kB
$ cat /proc/meminfo | grep Huge AnonHugePages: 436224 kB HugePages_Total: 128 HugePages_Free: 117 HugePages_Rsvd: 27 HugePages_Surp: 0 Hugepagesize: 2048 kB
$ 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
PHP7"
以上がPHP7を高速化するHugepageの詳細解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。