Facebook crée une machine virtuelle PHP
Et envisage d'abandonner son traducteur de code PHP en C++
Le 2013-07-29 13:34:48, par Cedric Chevalier, Expert éminent sénior
Débuté il y a quelques années, l’équipe de développement de Facebook vient de publier l’état d’avancement du projet HipHop VM (Hip Hop Virtual Machine) la nouvelle solution destinée à remplacer son traducteur de code PHP en équivalent C++ pour compilation HPHPc (HipHop PHP-to-C++ compiler).
HPHPc est une solution qui a fait ses preuves. Grâce à elle, les développeurs de Facebook ont pu réduire de 50 % la charge des CPU des serveurs Web de leur Datacenter, rendant ainsi l’expérience utilisateur Facebook plaisante.
Pour qu’HipHop VM (HHVM) soit le remplaçant de cette solution robuste, les ingénieurs de Facebook devaient la rendre plus performante. C’est chose faite, car HHVM présente désormais un pic de performance supérieur à celui de HPHPc.
HHVM utilise une approche de compilation à la volée (JIT Compiler), c'est-à-dire qu’il convertit dans un premier temps du code PHP en Bytecode (HipHop Bytecode) portable entre différentes architectures. Ce Bytecode est ensuite exécuté par la combinaison d’un interpréteur de Bytecode ainsi que le compilateur x64 JIT.
Le gain de performance de HHVM a été un processus long et complexe. Pour en arriver là, les ingénieurs ont dû relever de nombreux défis, imputables en majeure partie à la non-compatibilité de certaines instructions des HipHop Bytecode avec le compilateur x64 JIT. En effet, bien que le compilateur x64 JIT et l’interpréteur de HipHop Bytecode fonctionnent de concert, l’interpréteur est utilisé comme moyen d’ultime recours lorsque le x64 JIT ne peut compiler une instruction de HipHop Bytecode. C’est pour cette raison que HHVM a mis du temps pour dépasser en performance HPHPc.
Le projet HHVM est open source et le code source est téléchargeable sur GitHub. De plus, des paquets précompilés pour les distributions Linux Ubuntu 12.04, Debian 7 (Wheezy) et CentOS 6.4 sont disponibles.
Téléchargez HipHop VM
Source: Facebook
Et vous ?
Qu’en pensez-vous ?
Intégreriez-vous la solution de Facebook pour vos projets d’entreprise ?
HPHPc est une solution qui a fait ses preuves. Grâce à elle, les développeurs de Facebook ont pu réduire de 50 % la charge des CPU des serveurs Web de leur Datacenter, rendant ainsi l’expérience utilisateur Facebook plaisante.
Pour qu’HipHop VM (HHVM) soit le remplaçant de cette solution robuste, les ingénieurs de Facebook devaient la rendre plus performante. C’est chose faite, car HHVM présente désormais un pic de performance supérieur à celui de HPHPc.
HHVM utilise une approche de compilation à la volée (JIT Compiler), c'est-à-dire qu’il convertit dans un premier temps du code PHP en Bytecode (HipHop Bytecode) portable entre différentes architectures. Ce Bytecode est ensuite exécuté par la combinaison d’un interpréteur de Bytecode ainsi que le compilateur x64 JIT.
Le gain de performance de HHVM a été un processus long et complexe. Pour en arriver là, les ingénieurs ont dû relever de nombreux défis, imputables en majeure partie à la non-compatibilité de certaines instructions des HipHop Bytecode avec le compilateur x64 JIT. En effet, bien que le compilateur x64 JIT et l’interpréteur de HipHop Bytecode fonctionnent de concert, l’interpréteur est utilisé comme moyen d’ultime recours lorsque le x64 JIT ne peut compiler une instruction de HipHop Bytecode. C’est pour cette raison que HHVM a mis du temps pour dépasser en performance HPHPc.
Le projet HHVM est open source et le code source est téléchargeable sur GitHub. De plus, des paquets précompilés pour les distributions Linux Ubuntu 12.04, Debian 7 (Wheezy) et CentOS 6.4 sont disponibles.
Source: Facebook
Et vous ?
-
sinopleMembre chevronnéMême si c'est open-source, qu'on peut voir le code, le retoucher et tout; Facebook en terme de sécurité c'est pas ça.Au point où ils en sont, ça n'aurait pas été plus simple de faire une migration du code vers du C++ natif ?
J'ai plus l'impression que ce genre de techno est là surtout pour géré des rare cas bancal dans les projets, mais qu'au final, avec la dernière version de C++ qui rend le langage plus flexible, l'utilisation restera marginale.
Quand à faire migrer leur code vers du C++ natif, j'imagine que la plupart de leur développeur sont orienté technologie Web et que par conséquent ils ne connaissent pas grand chose au C++. Probablement que c'est plus intéressant pour eux d'avoir une team de cador qui optimise le traitement du PHP et des teams de Web developpeur "créatif" qui ajoute des nouvelles fonctionnalités plutôt que d'avoir une team C++ derrière chaque team de Web developpeur pour convertir leur boulot.
Je reste néanmoins d'accord que l'utilisation de ce genre de techno restera marginale pour le simple fait que dans la plupart des projets, ça n'apporte pas grand chose et ça coûte !le 30/07/2013 à 11:43 -
andry.aimeRédacteur/Modérateurle 29/07/2013 à 16:59
-
ErrataMembre régulierQu’en pensez-vous ?
J'ai plus l'impression que ce genre de techno est là surtout pour géré des rare cas bancal dans les projets, mais qu'au final, avec la dernière version de C++ qui rend le langage plus flexible, l'utilisation restera marginale.le 30/07/2013 à 10:53 -
KlaimMembre expertIl me semblait bien que cette "news" etait vieille: 29 November 2012
Ca vous dirais pas de prendre des sujets actuels au lieu de news pas fraiches? Ca commence a faire beaucoup la.le 30/07/2013 à 23:38 -
FaridMMembre expérimentéEt pourquoi ça ?
Facebook doit recevoir une tentative de piratage toute les 3 secondes (bon ok j'en sais rien mais je pense que le chiffre doit être énorme).
Il ne faut pas confondre les développeurs de Facebook avec ses utilisateurs.le 30/07/2013 à 11:44 -
thoropMembre à l'essaiLa raison que j'ai eu des développeurs quant au choix de garder php est pour ne pas avoir à réecrire une grosse partie du code. Mais sinon, en interne Java et C++ sont aussi utilisés. Tout dépend des équipes et des projets.le 31/07/2013 à 23:52
-
abriotdeMembre chevronnéCe projet est intéressant mais pour moi la compilation en langage machine reste ce qu'il y a de plus efficace pour la production (Et de plus fiable). Si la version VM dépasse la version traduisant en C c'est parce qu'elle a été plus optimisé que l'autre.
Il est certain que développer dans un langage interprété est ce qu'il y a de plus souple et rapide. En ce sens, je serais d'avis d'avoir PHP classique en dev et la version VM de PHP sur un petit/moyen site/scripts ou l'on interviens facilement en prod. Mais sur un gros site ou une grosse application, utiliser le compilateur en production me parait indispensable. Encore faut-il qu'il optimisent a fond cette version.le 30/07/2013 à 13:43 -
KlaimMembre expertle 30/07/2013 à 23:39
-
adc15Membre régulierRidicule. Ca sort d'où ?
Les dévelopeurs qui travaillent chez Facebook font partie des plus brillants du monde. Y compris ceux qui bossent sur la sécurité
Et dire que même si c'est open source, on peut pas faire confiance parce que c'est Facebook...sérieusement ?...le 01/08/2013 à 22:39 -
PoulpeGéantFutur Membre du ClubAndrei Alexandrescu, un ingénieur de FB et par ailleur du language D
, a posté une vidéo concernant cette HHVM. Il s'agit bien sûr d'une app qui tourne côté serveur et qui génère le code html côté client... .
Et il semblerait que celà soit fait en D...
[ame="http://vimeo.com/68383350"]Andrei Alexandrescu: The Hip Hop Virtual Machine on Vimeo[/ame]le 04/08/2013 à 5:15