Electrolysis : le multiprocessus de Firefox joue à cache-cache

When it's done
Logiciel 6 min
Electrolysis : le multiprocessus de Firefox joue à cache-cache

Firefox se prépare à recevoir une technologie utilisée actuellement dans ses versions mobiles et permettant de faire défiler une page de manière parfaitement fluide, même en cas de nombreux scripts. Derrière cette technique, nommée APZ, se profile un projet au long cours : Electrolysis.

C’est un billet sur l’un des blogs de l’éditeur qui a lancé les interrogations. Mozilla y annonce en effet que Firefox 46 sera doté d’une technique nommée APZ, pour « Asynchronous panning and zooming ». Initialement, l’APZ a été créé pour les versions mobiles de Firefox, qui obéissaient à des contraintes supplémentaires, notamment celle de ne jamais faire perdre le sentiment de réponse tactile.

Le but premier de l’APZ est de fournir un grand sentiment de fluidité. L’utilisateur peut ainsi descendre dans la page sans attendre qu’elle soit complètement chargée. La technique montre son efficacité sur les sites particulièrement chargés en scripts. Ces derniers ont une fâcheuse tendance à bloquer le chargement d’une page, transformant le glissement vers le bas en une série de saccades du plus mauvais effet. Et donnant bien sûr le sentiment que le navigateur est poussif.

Le traitement des évènements utilisateur par un autre processus

Dans son billet, Mozilla explique que les évènements de contrôle par l’utilisateur (gestes tactiles, clics, molette) sont le plus souvent traités par les navigateurs dans le même processus central qui gère déjà l’affichage des pages. Ces évènements sont pris dans la masse et peuvent donc être repoussés le temps qu’un traitement particulier se termine. D’où les à-coups. C’est précisément ici qu’entre en piste un projet sur lequel travaille Mozilla depuis des années : Electrolysis.

Beaucoup se souviennent de ce nom qui était synonyme, il y a déjà des années, de processus multiples. Appliqué au cas d’APZ, le principe serait donc de gérer les évènements utilisateur dans le processus principal, alors qu’un autre s’occuperait de la composition, c’est-à-dire d’afficher les pages. Deux processus clairement séparés et pouvant d’autant mieux traiter les tâches séparément qu'ils proposent depuis longtemps maintenant plusieurs cœurs d’exécution. Plus précisément, le traitement des évènements est envoyé à un processus enfant en court-circuitant tous les autres calculs.

firefox apz

Tout a un prix

De là, il existe de nombreuses remarques à faire. La première est que la technique APZ, si elle fournit un vrai sentiment de fluidité, n’est pas non plus miraculeuse. Elle ne peut pas aller plus vite que la musique : si l’utilisateur descend dans une page dont le chargement n’est pas terminé, il ne rencontrera que des espaces vides, avec une couleur unie ou non.

Ces espaces seront ensuite complétés au fur et à mesure que le processus de composition terminera son travail. Un phénomène connu sous le nom de « checkerboarding » et dont Mozilla ne cherche pas à masquer l’existence. L’éditeur explique cependant que ce phénomène, inévitable, peut être assez largement maîtrisé et réduit à des très courts délais dans l’affichage.

L’autre problème réside dans le nom même de la technique : le phénomène d’asynchronisme. Cela signifie qu’il existe obligatoirement un délai, même si minimal, entre l’action de la molette par exemple et la perception du mouvement effectué à l’écran. Pour que le délai ne se voit pas, il faudrait idéalement qu’il n’y ait pas plus de 33ms d’écart, soit deux images dans un rythme de 60 par seconde.

Mozilla indique qu’il existe plusieurs techniques pour éviter complètement ce délai en utilisant le positionnement CSS plutôt que du JavaScript. L’éditeur fournit d’ailleurs une série d’exemples sur une page dédiée aux effets de défilement de pages.

La preuve de l'arrivée d'Electrolysis ?

L’un dans l’autre, il semble que le prix à payer pour que l’APZ puisse fonctionner ne soit pas si coûteux. Pourtant, cette technique dépend intrinsèquement d’Electrolysis (donc de la séparation des processus), et c’est ici que les choses se corsent. Mozilla travaille sur ce projet depuis des années sans l’avoir encore intégré dans la branche principale.

Pendant longtemps, il fallait passer par le dossier « e10s » du FTP de développement pour récupérer des versions spéciales. Désormais, on le trouve dans les Nightlies et la Developer Edition de Firefox 46. Cela signifierait-il du coup qu’Electrolysis arrive enfin pour tout un chacun ? Malheureusement non.

Mozilla confirme qu'Electrolysis n'est pas encore prêt

Curieux de voir cette technologie annoncée comme une simple fondation d’APZ et une arrivée pour Firefox 46, nous avons posé la question à Mozilla. Il nous semblait effectivement qu’après tant d’années, l’arrivée se serait faite en fanfare. Et effectivement, l’éditeur nous a répondu que ni Electrolysis, ni APZ n’étaient véritablement prévus pour cette version précise du navigateur. Le billet de blog, tel que rédigé actuellement, induit donc en erreur.

Nick Nguyen, vice-président des produits chez l’éditeur, nous a ainsi indiqué : « Mozilla travaille sur le projet d’utiliser de multiples processus dans Firefox. Le multiprocessus améliore les performances en exploitant mieux les processeurs à cœurs multiples. Cette technologie est disponible aux utilisateurs dans nos canaux de préversion (Nightlies et Developer Edition) depuis août dernier. Nous continuons actuellement à tester le multiprocessus dans ces canaux, tout comme dans Firefox bêta, en commençant avec des utilisateurs sélectionnés. Nous continuerons à tester les performances et la stabilité avant de diffuser la fonctionnalité aux autres utilisateurs ». Quant à l’APZ, il est accompagné du même descriptif que pour Electrolysis.

Actuellement, si on installe et teste la Developer Edition de Firefox 46, Electrolysis et APZ sont activés par défaut. Dans les options générales, il existe d’ailleurs une case spécifique, intitulée « Activer le mode multiprocessus ». Mozilla nous explique cependant qu’en l’état actuel des choses, la fonctionnalité n’est pas assez rodée pour certifier qu’elle débarquera dans Firefox 46 : « les fonctionnalités ne sont validées que sur leur qualité et ne sont pas liées à une version spécifique, nous ne pouvons donc pas promettre une version précise jusqu’à ce que nous soyons satisfaits ». Ce qu’ils ne sont pas.

firefox electrolysis developer

Encore de nombreux tests

Mozilla nous a par ailleurs indiqué que le billet de blog allait être mis à jour, puisqu’il induit en erreur. Oui Electrolysis (et dans une moindre mesure APZ) remonte tout doucement vers la surface, mais il faudra encore patienter plusieurs mois au moins. Mais Mozilla commence doucement à en reparler de manière un peu plus appuyée. Il faudra par contre que l’éditeur rende sa communication plus cohérente : la page du wiki de Mozilla réservée à Electrolysis mentionne bien son activation pour la version 46 finale, avec une phase d’A/B testing pour les bêtas depuis plusieurs versions (43, 44 et 45).

Dans tous les cas, les deux technologies peuvent être testées par ceux qui récupèreront la dernière Developer Edition. Cela intéressera probablement les créateurs d’extensions car certaines risquent de poser problème avec une telle séparation des processus.

Vous n'avez pas encore de notification

Page d'accueil
Options d'affichage
Abonné
Actualités
Abonné
Des thèmes sont disponibles :
Thème de baseThème de baseThème sombreThème sombreThème yinyang clairThème yinyang clairThème yinyang sombreThème yinyang sombreThème orange mécanique clairThème orange mécanique clairThème orange mécanique sombreThème orange mécanique sombreThème rose clairThème rose clairThème rose sombreThème rose sombre

Vous n'êtes pas encore INpactien ?

Inscrivez-vous !