Papelipe / Tags / eZ publish / Benchmark of Intel Compiled (ICC) Apache, PHP and APC

Right menu


Sun Mon Tue Wed Thu Fri Sat
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29

Benchmark of Intel Compiled (ICC) Apache, PHP and APC

Since the testing of MySQL compiled with Intel ICC showed good numbers I carried on some testing with Apache, PHP and APC also compiled with the ICC compiler. The test was done with eZ publish running on a Linux server with Xeon processors.

All tests showed speed improvements. When I ran tests on template processing, which is the most PHP intensive operations in eZ publish, it showed improvements from 17.4% to 19.6% faster with the ICC compiler. Total script runtime measured with ab ranged from 6.3% to 12.7% faster. Of course these numbers are a bit lower since they include I/O like network transfer of the pages and so on. The more PHP intensive and heavy the script was the faster it ran under ICC.

Of course this compiler comes with a $399 pricetag so you have to compare that with the performance gained with it. In our case it looks like heavy operations are boosted by close to 20%.

To get your stack compiled with ICC you simply install the compiler as instructed by Intel and export the CC environment variable.

export CC=/opt/intel/cc/9.0/bin/icc 

Once this is set up you can do a make clean and rm config.cache followed by a ./configure. For APC you also need to run phpize before you configure. Then you make and make install like normal. No tweaking was done other than this so there is mabye room for further tweaking of compiler parameters.

It would be good to hear other people's experience with PHP and the ICC compiler.

Entry filed under: eZ publish | Trackback this post

Trackbacks (0)

» No Trackbacks

Comments (3)

I've also seen good gains with ICC, including the kernel

I've also seen good gains with PHP compiled with ICC. I run a very CPU intensive multi process PHP shell script. I saw pretty substantial gains by compiling PHP, MySQL and the kernel with ICC. I would say I am getting close to 30% better performance.

I used some pretty agressive use flags, including -xN and -ipo. Those seem to yield maximum performance. MySQL would not compile with these flags however, so you will need to play with the flags you use to compile MySQL.

I also suggest switching to the CK Sources patch set by Con Kolivas. I used the server patches.

If you don't switch to CK sources try using the CFQ IO scheduler in your kernel (ck sources uses this by default).

Re: the whole stack

We have been thinking of the whole stack, however I have seen that there are some components which are not compatible with ICC. We have it on our list to test, the kernel is the first we would like to test compiled with iCC.

There are other things which are higher up on our list to do right now though. Would be neat to hear about other peoples experiences with this.

How about the WHOLE stack (i.e. including kernel etc)

Can you compile the kernel (and glibc etc) with ICC these days or is it still a gcc only thing?