Quand on parle de records en informatique, il est souvent question de GHz, d'overclocking nécessitant un système de refroidissement (et une consommation) un peu dingue. Mais on peut prendre ce sujet autrement, en cherchant comment obtenir le meilleur résultat en améliorant le code. C'est ce que fait Jens Axboe.
Jens Axboe est un développeur connu des passionnés de stockage et de performances. Développeur chez Facebook spécialisé dans l'optimisation des E/S pour le noyau Linux, il est à l'origine de l'application fio, largement utilisée pour mesurer les débits, latence et autres IOPS des HDD et SSD du marché sous Linux.
Il est aussi à l'origine d'un moteur d'E/S de plus en plus utilisé, notamment parce qu'il se veut simple et très efficace : io_uring. Il est intégré au noyau Linux depuis les versions 5.1x, exploitable via la bibliothèque liburing.
La course à la performance ce n'est pas que Cinebench et l'azote
Pour montrer ses capacités, Axboe s'est donné pour défi fin septembre d'obtenir le meilleur score possible avec deux SSD (Optane Gen 2, NVMe) sur un cœur CPU (Ryzen 9 5950X). Il s'agit de lecture aléatoire sur des blocs de 512 octets, un exercice dans lequel la 3D XPoint telle qu'utilisée par Intel offre plutôt de bons résultats.
Avec sa configuration précédente (Ryzen 7 3970X, un SSD) il obtenait 3,8 MIOPS. La nouvelle obtenait au départ 5,1 MIOPS, avec 2 500 Mo/s de bande passante. Depuis, il ne cesse de dépasser ses précédents records, optimisant (entre autres) le code d'io_uring, intégré au fur et à mesure au noyau Linux.
Avec la branche 5.16 début octobre il passait à 5,7 MIOPS précisant que cela revient à 175 ns par IO, des résultats plus élevés dans différentes situations face au classique libaio. Quelques jours plus tard, il passait la barre des 6 MIOPS et vient de dépasser les 7 MIOPS avec une latence réduite à 3,4 µs. Il dit désormais travailler à de nouvelles optimisations.
Cap sur les 8 MIOPS, et après ?
Ainsi, il espère dépasser les 8 MIOPS d'ici peu, un record qui fera envie à de nombreux développeurs qui cherchent à tirer au mieux parti de leurs baies de stockage. Un élément de plus en plus critique dans les performances globales d'un système, notamment lorsque de très gros jeux de données sont à traiter en temps réel.
Cela montre néanmoins que le travail d'optimisation logicielle et sur les outils intégrés au noyau d'un OS peuvent avoir un impact non négligeable, demandant la plus grande attention.
Notez d'ailleurs qu'un script de test est directement accessible dans le code de fio. Il est notamment développé par un français, lui aussi spécialisé dans le développement bas niveau et l'optimisation des performances, travaillant chez Criteo, connu des anciens de Mandrake/Mageia, passé par Red Hat et cofondateur de Kernel Recipes : Erwan Velu.