-->

2013-08-11

memo: hhvm

https://github.com/facebook/hiphop-php/wiki/Building-and-installing-HHVM-on-Ubuntu-13.04
http://sourceforge.net/projects/levent/files/libevent/libevent-1.4/
http://shinodogg.com/?p=4780
https://github.com/facebook/hiphop-php/wiki/Prebuilt-Packages-on-Debian-7-%28wheezy%29
http://d.hatena.ne.jp/hagaeru3sei/20110426

gitの使い方がわからなくregress.gen.hを持ってこれないのでlibevent-1.4.14b-stable.tar.gzを使った。
...
$ cmake .
...

ライブラリが足りないので入れた。
$ sudo emerge --oneshot -avt dev-libs/boost

# USE: dev-cpp/glog                    unwind
$ sudo emerge --oneshot -avt dev-cpp/glog

$ sudo emerge --oneshot -avt =dev-libs/libmemcached-0.39

$ sudo emerge --oneshot -avt media-libs/gd

$ sudo emerge --oneshot -avt dev-cpp/tbb

$ sudo emerge --oneshot -avt net-nds/openldap

$ sudo layman -a ikelos
$ sudo emerge --oneshot -avt =dev-libs/libdwarf-20120410

$ sudo emerge --oneshot -avt net-libs/c-client

makeが失敗するので該当するライブラリを再インストールした。
...
$ cmake .
...
-- Configuring done
-- Generating done
-- Build files have been written to: /usr/local/hhvm/2013-08-11/hiphop-php
$ make
...
Linking CXX executable hhvm
../../bin/libhphp_runtime.a(ext_image.cpp.o): 関数 `HPHP::f_imagecreatefromstring(HPHP::String const&)' 内:
ext_image.cpp:(.text+0x2b17): `gdImageCreateFromJpegCtx' に対する定義されていない参照です
ext_image.cpp:(.text+0x2c5b): `gdImageCreateFromPngCtx' に対する定義されていない参照です
...

# USE: media-libs/gd                   jpeg png
$ sudo emerge --oneshot -avt media-libs/gd

makeが終わった。
$ make
...
[100%] Building CXX object hphp/test/CMakeFiles/test.dir/__/hhvm/global-variables.cpp.o
Linking CXX executable test
Embedding systemlib.php in test
[100%] Built target test

インストールに失敗しているように見える。
$ ./hphp/hhvm/hhvm
HipHop Notice: File could not be loaded:
$ ldd ./hphp/hhvm/hhvm | wc -l
49
$ file ./hphp/hhvm/hhvm
./hphp/hhvm/hhvm: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped
$ ./hphp/hhvm/hhvm --help | wc -l
52

$ (echo "<?php" && echo "phpinfo();") > /tmp/phpinfo.php
$ ./hphp/hhvm/hhvm /tmp/phpinfo.php
HipHop

webサーバを起動した。
cd /usr/local/hhvm/
...
$ /usr/local/hhvm/2013-08-11/hiphop-php/hphp/hhvm/hhvm --mode daemon --config conf/hhvm.hdf

phpinfo()が変なのは仕様かもしれない。
$ /usr/local/hhvm/2013-08-11/hiphop-php/hphp/hhvm/hhvm -m debug
hphpd> <?php
 ..... print "test";
 ..... ?>
test
hphpd> <?php
 ..... phpinfo();
 ..... ?>
HipHop

hphpd> quit

テスト。
$ cat htdocs/hello.php
<?php
print "hello world.";

$ curl http://127.0.0.1:8080/hello.php
hello world.

もっとボリュームのある物でzendopcacheなどを入れた物と比べないと分からない。
$ ab -n 1000 -c 100 http://127.0.0.1:8080/hello.php 2>&1 | grep -iP "^((Non-2xx responses)|(Failed requests)|(   \\(Connect)|(Complete requests)|(Requests per second)):"
Complete requests:      1000
Failed requests:        0
Requests per second:    5587.53 [#/sec] (mean)

$ ab -n 10000 -c 1000 http://127.0.0.1:8080/hello.php 2>&1 | grep -iP "^((Non-2xx responses)|(Failed requests)|(   \\(Connect)|(Complete requests)|(Requests per second)):"
Complete requests:      10000
Failed requests:        0
Requests per second:    4559.82 [#/sec] (mean)

$ ab -n 100000 -c 10000 http://127.0.0.1:8080/hello.php 2>&1 | grep -iP "^((Non-2xx responses)|(Failed requests)|(   \\(Connect)|(Complete requests)|(Requests per second)):"
Complete requests:      100000
Failed requests:        0
Requests per second:    5056.28 [#/sec] (mean)

$ ab -n 200000 -c 20000 http://127.0.0.1:8080/hello.php 2>&1 | grep -iP "^((Non-2xx responses)|(Failed requests)|(   \\(Connect)|(Complete requests)|(Requests per second)):"
Complete requests:      200000
Failed requests:        0
Requests per second:    3104.54 [#/sec] (mean)

0 件のコメント: