By now, you might have heard the details of HipHop, Facebook’s PHP-to-C++ convertor that was announced yesterday. Like most of you, I’m eagerly awaiting the release of the code so that I can play with it and learn in detail what it can do and what it can’t. For now, Marco’s post seems to have the most technical information in it so far.

I’m with Sebastian on this one. Whether or not you think Facebook’s HipHop is relevant to you, I think they deserve credit for having shared their particular solution with the wider community. (They’ll get extra credit when they actually release some code ) After all, they’ve built on top of open-source in the first place; giving something back to the community is part and parcel of being a good member of the community.

How many of you earn your living from open-source, but have never contributed anything back?

But that isn’t really what I want to blog about today.

I’ve been following the chat on Twitter about HipHop, and I think all the nay sayers have been overlooking an important point. HipHop has the potential to reduce the amount of power consumed in running a website. And surely that can only be a good thing for all of us?

If you don’t run your own servers in a data centre (for example you use a virtual server, or host on a shared hosting solution), then perhaps you might not be aware that the power required by each server in a rack is often a major factor in the overall cost of running the servers. Whether or not you believe in climate change, energy prices are on the rise. Whether or not you believe in peak oil, oil and natural gas supply issues are forecast to push energy prices up further. Taking steps to get more work done per unit of power consumed has been the focus of hardware manufacturers for several years now. Isn’t it time it also was the focus of the software community too?

CPU usage is only one aspect of the total power consumed by a server in a rack, but in my experience people tend to add more servers to their solution primarily because they need more CPUs running their web servers to handle more traffic. A reduction in the number of CPUs required will translate into a reduction of the number of servers required … which means a reduction in the amount of energy being consumed.

How can that not be a good thing, if it can be achieved?

I know the answer will be that PHP apps are not CPU-bound, that they spend much of their time waiting for results from the database. That might be true if you’re measuring a PHP app from the point of view of elapsed time, but what if you’re measuring the PHP app in terms of CPU cycles consumed? Every single PHP script has to run on a CPU, and has to get to the point where it’s sat waiting for the database. If HipHop means that each PHP script uses less CPU to get to the same point, that has to be a step in the right direction.

Until we can play with HipHop ourselves, it’s impossible to say whether it saves enough CPU cycles to allow us to use less CPUs and therefore less servers. Remember, you’ve still got the overhead of your operating system and web server to factor into the equation. And then there’s the energy cost of compiling your code in the first place during development; for seldom-visited websites, HipHop may increase overall energy requirements.

But it sure is nice to hope, isn’t it?

About The Author

Stuart has been writing PHP applications since 2003, and has been contributing to open-source software since 1994. He was an early writer for php|architect, a co-author of the Official Zend Certification Study Guide for PHP 4, and a regular speaker at conferences and user groups since 2004.
When he's not designing software, Stuart loves to explore the world through a camera lens, spend time with his beloved guitars, and continue his study to T'ai Chi Chu'an (Taijiquan).

No Comments

> I know the answer will be that PHP apps are not CPU-bound,
> that they spend much of their time waiting for results from the database.

Something is misleading here. I run several high traffic sites in PHP (several millions requests per 4-core box / day) and found that PHP + Apache was CPU bound. It is different than IO-bound which indicates iowait. I replaced Apache with nginx and reduced CPU consumption a lot but still struggled to manage about 1000 concurrent PHP FastCGI processes

> I know the answer will be that PHP apps are not CPU-bound,
> that they spend much of their time waiting for results from the database.

Something is misleading here. I run several high traffic sites in PHP (several millions requests per 4-core box / day) and found that PHP + Apache was CPU bound. It is different than IO-bound which indicates iowait. I replaced Apache with nginx and reduced CPU consumption a lot but still struggled to manage about 1000 concurrent PHP FastCGI processes