Le noyau Linux a optimisé la mise en œuvre de l'algorithme CRC32C

Un patch a été proposé pour inclure dans la future version du noyau Linux 6.13, avec une réécriture de l'algorithme de calcul de la somme de contrôle CRC32C. Le code de mise en œuvre de CRC32C a été réduit d'environ 10 fois (de 4546 à 418 octets). Lorsqu'il n'y a pas de protection retpoline contre les attaques de type Spectre, le gain de performance avec cette nouvelle mise en œuvre atteint 11,8 % sur les processeurs AMD Zen 2, 6,4 % sur Intel Emerald Rapids et 4,8 % sur Intel Haswell. Lorsque retpoline est activé, le gain de performance est plus marqué, atteignant 66,8 % sur des systèmes avec des processeurs Intel Emerald Rapids, 35,0 % sur Intel Haswell et 29,5 % sur AMD Zen 2. retpoline enabled | 512 | 833 | 1024 | 2000 | 3173 | 4096 | ———————+——-+——-+——-+—— +——-+——-+ Intel Haswell | 35,0 % | 20,7 % | 17,8 % | 9,7 % | -0,2 % | 4,4 % | Intel Emerald Rapids | 66,8 % | 45,2 % | 36,3 % | 19,3 % | 0,0 % | 5,4 % | AMD Zen 2 | 29,5 % | 17,2 % | 13,5 % | 8,6 % | -0,5 % | 2,8 % | retpoline disabled: | 512 | 833 | 1024 | 2000 | 3173 | 4096 | ———————+——-+——-+——-+—— +——-+——-+ Intel Haswell | 3,3 % | 4,8 % | 4,5 % | 0,9 % | -2,9 % | 0,3 % | Intel Emerald Rapids | 7,5 % | 6,4 % | 5,2 % | 2,3 % | -0,0 % | 0,6 % | AMD Zen 2 | 11,8 % | 1,4 % | 0,2 % | 1,3 % | -0,9 % | -0,2 % |

La version originale de CRC32C incluait 128 boucles déroulées (unroll), ce qui entraînait un code assez volumineux. Comme les processeurs modernes capables d'exécuter des instructions hors d'ordre (out of order) peuvent exécuter des instructions en parallèle, une telle optimisation des branchements dans les boucles s'est révélée redondante et ne faisait qu'accroître la taille du code. Au lieu de 128 itérations, la nouvelle version n'en conserve que 4, ce qui a non seulement fortement réduit la taille du code, mais a également accéléré l'exécution de l'opération.

Source : opennet.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster