Des rendus 20 % plus rapides : mesurer plutôt que deviner
· 4 min de lecture

Quand vous attendez un film PageToVid, l'essentiel de l'attente tient en une étape : le compositeur, qui peint chaque image du film dans un navigateur sans écran. Sa vitesse dépendait d'une limite mémoire que personne n'avait jamais mesurée. Le 23 septembre, nous l'avons mesurée, et chaque film s'est mis à finir plus tôt.
Où votre rendu passe son temps
Un rendu est une chaîne : lire la page, écrire le storyboard, filmer le site, enregistrer la voix, puis composer le film image par image avec Remotion. Sur un film typique de 19,5 secondes, le travail complet prenait 122 secondes, dont 108 pour le compositeur. Tout le reste réuni relevait de l'arrondi.
Ce qui fixe la vitesse du compositeur, c'est le nombre d'images que le navigateur peint à la fois. Sur le même film, nous avons chronométré plusieurs nombres de workers :
- un worker d'images : 55 secondes ;
- deux workers : 33 secondes ;
- trois workers : 25 secondes ;
- quatre workers : 23 secondes.
La production en utilisait deux. La courbe désigne trois comme le bon point : un gain net sur deux, et presque rien de plus avec un quatrième.
Une limite que personne n'avait vérifiée
Pourquoi deux ? La mémoire. Chaque worker d'images est un onglet de navigateur qui contient le film, ses images et ses décodeurs vidéo, et les rendus tournent sur Cloud Run avec une taille de mémoire fixe. À un moment, deux workers avaient été jugés le chiffre sûr. Personne n'avait regardé ce que la machine utilisait vraiment.
Nous avons donc regardé. La supervision de la plateforme conserve une série mémoire pour chaque rendu, et nous en avons lu le 99e centile sur quatorze jours. Les rendus culminaient à 61 % de leurs 8 Gio, soit environ 4,9 Gio, avec trois gigaoctets jamais touchés en deux semaines de vrais films. La limite que nous respections était une limite dont nous n'avions jamais approché.
La nouvelle machine a 4 vCPU, 12 Gio et trois workers d'images. Notre modèle mémoire prévoyait un pic à 44 % de la nouvelle taille au lieu de 61 %.
Un réglage, un seul sens
En relisant la configuration, nous avons trouvé un même réglage qui faisait deux métiers. Il fixait à la fois le nombre d'images peintes en parallèle dans un rendu et le nombre de rendus entiers qu'un worker de file d'attente accepterait en même temps.
Aujourd'hui, chaque rendu tourne seul puis s'arrête, si bien que le second sens n'entrait jamais en jeu. Mais si la file d'attente était un jour activée, une machine réglée pour trois images en parallèle aurait pris trois films entiers d'un coup. La file a maintenant son propre réglage, qui reste à un film à la fois. Un nom, un sens : c'est la sécurité la moins chère qui soit.
Nous avons aussi fait en sorte que chaque document décrivant la machine indique la même taille, pour que la prochaine personne qui la règle parte de la réalité.
Un test qui tient la machine à ses chiffres
Une supposition qu'on écrit finit souvent par passer pour un fait. La nouvelle configuration est donc tenue par un test qui fait échouer le build si l'une de ces conditions cesse d'être vraie :
- trois workers tiennent dans la mémoire déclarée avec 30 % de marge ;
- jamais plus de workers d'images que de cœurs, avec un cœur réservé à l'encodeur vidéo ;
- la limite de temps couvre largement le film le plus long que l'on puisse commander ;
- chaque fichier qui décrit la machine indique la taille réellement déployée.
Nous avons aussi consigné une expérience qui n'a rien changé, pour que personne ne la refasse. Tripler le cache vidéo sur un film conçu pour le mettre à l'épreuve a donné 64,3 secondes contre 64,2, avec un résultat identique : le cache garde sa taille.
Vérifié sur de vrais films
Un banc d'essai sur un ordinateur portable et deux semaines de mesures, c'est une projection, pas un résultat. Avant la fin de la nuit, nous avons donc confronté les deux à de vrais rendus.
Soixante-dix rendus de films de 20 à 40 secondes avec deux workers tournaient en moyenne à 5,93 fois le temps réel. Les quatre premiers avec trois workers tournaient à 4,75 fois le temps réel : environ 20 % plus rapides, chacun plus rapide qu'au moins 77 % des soixante-dix. Petit échantillon, direction claire.
La mémoire a culminé à 42 % des 12 Gio, soit 5,04 Gio, pour 5,32 Gio prévus par notre modèle. Le modèle penche vers le pessimisme, ce qui est la bonne façon de se tromper quand l'alternative est un rendu à court de place. Il reste donc, avec une règle de plus dans le test : le modèle ne doit jamais prévoir moins que ce qu'utilisent ensuite les vrais films. Pour en savoir plus sur la fabrication des films, voyez la page des fonctionnalités.
Voyez-le sur votre propre site
Collez une page et obtenez la vidéo commentée dont parle ce blog. La première est offerte.
À lire ensuite


