Developpez.com

Le Club des Développeurs et IT Pro

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 ?
  Discussion forum
13 commentaires
  • sinople
    Membre 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.
    Je ne pense pas qu'ils soient particulièrement mauvais dans le domaine, c'est juste qu'il y a un énorme intérêt à trouver dans leur système. Et c'est plus leur condition d'utilisation qui consiste en une faille de sécurité pour tes données sur Facebook que leur compilateur musical.

    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.
    Ce qui est rare dans un projet c'est plutôt d'avoir besoin d'une puissance de calcul nécessitant ce genre de technologie à la place d'une solution standard. Mais j'utiliserais plutôt le terme complexe que bancal.

    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 !
  • andry.aime
    Rédacteur/Modérateur
    Envoyé par Cedric Chevalier
    Qu’en pensez-vous ?
    J'aurai préféré un Reggae VM.
  • Errata
    Membre régulier
    Qu’en pensez-vous ?
    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.
  • Klaim
    Membre expert
    Il 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.
  • FaridM
    Membre expérimenté
    Envoyé par Miistik
    C'est plus cela qui me gêne.

    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.
    Personnellement, j'aurai pas confiance même si HHVM était le meilleur.

    @andry.aime : les Reggae VM cela marche que la Night.
    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.
  • thorop
    Membre à l'essai
    La 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.
  • abriotde
    Membre 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.
  • Klaim
    Membre expert
    Envoyé par jmnicolas

    Pas forcément : la VM utilise un compilateur JIT et ça permet dans certaines conditions des perfs meilleures que le compilé pur.
    En theorie oui, mais ca n'a jamais ete demontre en pratique. Donc en fait non.
  • adc15
    Membre régulier
    Envoyé par Miistik
    C'est plus cela qui me gêne.

    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.
    Personnellement, j'aurai pas confiance même si HHVM était le meilleur.

    @andry.aime : les Reggae VM cela marche que la Night.
    Ridicule. 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 ?...
  • PoulpeGéant
    Futur Membre du Club
    Andrei 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]