Il y a quelques jours, la fondation à l’origine des cartes Raspberry Pi a lancé une nouveauté intéressante, et pas uniquement pour ceux qui ont une carte Raspberry Pi : des cartes microSD rapides. Ce ne sont pas des cartes SD Express mais elles offrent tout de même d’excellentes performances sur un point qui est souvent le point faible des cartes SD : les accès aléatoires.
Les cartes (micro)SD sont pensées fondamentalement pour les appareils photo et des périphériques qui lisent et écrivent de gros fichiers séquentiellement (une photo par exemple) et pas pour les centaines (ou milliers) d’accès que des systèmes d’exploitation ou des applications peuvent effectuer. Dans la majorité des cas, les cartes SD sont donc assez lentes sur ce genre d’accès, parfois nettement derrière un simple disque dur. Le problème, c’est que des accès aléatoires lents peuvent bloquer des applications : même lire une simple vidéo YouTube peut amener des saccades si ça ne répond pas assez vite. Dans le cas des SSD, c’est un problème corrigé depuis une bonne quinzaine d’années : il faut remonter aux premiers SSD pour le grand public pour trouver des modèles avec des performances faibles (comme sur les OCZ Core).
Pour se donner une idée, je vous renvoie vers le test d’une carte SD Express : on a ~70 Mo/s en écriture sur les accès aléatoires en mode NVMe et seulement 0,25 Mo/s en mode SD. Pour les cartes Raspberry Pi, dont l’OS tourne généralement depuis une carte SD, c’est un problème. Il existe des certifications qui permettent de proposer des performances à peu près valables, mais la barre est placée assez bas. Les cartes avec un logo A1 doivent atteindre 500 IOPS (2 Mo/s) sur les accès aléatoires en écriture, les A2 montent à 2 000 IOPS au moins. Ça reste assez faible, et un simple SSD fait vraiment nettement mieux.
Les cartes Raspberry Pi
Les cartes annoncées par la fondation (et en vente) sont des cartes A2 avec de bonnes performances, on va le voir. Elles sont aussi compatibles avec la technologie CQHCI (Command Queueing Host Controller Interface). C’est un truc un peu particulier, récent dans la norme SD, et issu de la norme eMMC. L’idée est un peu la même que le NCQ des disques durs : permettre de créer une file d’attente pour les commandes, avec la possibilité de modifier l’ordre. C’est un truc qui améliore (un peu) les performances et permet en théorie d’éviter les blocages, mais il faut un support dans la carte, dans le contrôleur et dans l’OS. Dans le cas des Raspberry Pi, il faut la version 5 avec un système à jour et une commande précise pour l’activer. Tout est expliqué là, mais il faut visiblement se méfier de certaines cartes qui n’implémentent pas bien la norme. Je n’ai pas testé sur mon Raspberry Pi 5 parce que j’ai une solution bien plus performante qu’une carte SD bien optimisée : un SSD NVMe.
Pour tester, j’ai pris trois cartes. D’abord une carte Raspberry Pi de 32 Go, qui vaut une dizaine d’euros (un peu plus avec l’envoi). Ensuite, une Sandisk Extrême de 256 Go, compatible A2. C’est une carte assez rapide qui se trouve pour une vingtaine d’euros. Enfin, une carte de type High Endurance de 64 Go. C’est moins rapide en écriture mais normalement plus fiable pour une caméra (et sans certification A).
Le premier point à noter, c’est que le lecteur de l’importance et que Sandisk triche sur certaines cartes. J’ai testé avec un lecteur Transcend, un lecteur USB-C Apple et un lecteur Sandisk. Et la carte Extrême est plus rapide avec le lecteur Sandisk. Je l’avais déjà expliqué, Sandisk overclocke. Les trois cartes sont UHS-1 (le nom de l’interface) et peuvent atteindre 104 Mo/s en théorie, mais celle de Sandisk peut monter à 208 Mo/s (théorique) avec son lecteur. Sandisk implémente un mode DDR104 quand les autres restent en SDR104.
Sur les débits séquentiels, la carte Raspberry Pi atteint environ 95 Mo/s (le maximum pratique de la norme) en lecture et pratiquement la même chose en écriture. Sur les accès aléatoires, ça dépend du contrôleur du lecteur : on a entre 6 et 15 Mo/s en fonction du modèle. Le Transcend est le plus rapide, et de loin.
La carte Sandisk Extrême est du même ordre en séquentiel, mais peut atteindre 175 Mo/s en lecture dans le lecteur Sandisk. Par contre, les accès aléatoires sont plus lents, sans êtres ridicules : un peu plus de 2 Mo/s. Même si la carte est A2, les débits restent assez faibles, d’ailleurs.
Enfin, la carte High Endurance est plus lente en écriture (c’est attendu) mais la différence est surtout sur les accès séquentiels. On est à 0,01 Mo/s en écriture avec certains lecteurs. C’est une carte qui n’est pas (du tout) pensée pour ces usages et qui peut devenir bloquante dans un Raspberry Pi.
Des cartes optimisées
Les cartes Raspberry Pi sont vendues à un prix correct (si vous en trouvez) avec d’excellentes performances sur les accès aléatoires. Il y a des cartes plus endurantes (mais plus lentes) et d’autres plus rapides sur les accès séquentiels (en UHS-II) mais plus onéreuses. Pour un usage dans un Raspberry Pi, c’est probablement le meilleur choix si vous n’avez pas envie d’aller vers un SSD ou si c’est pour un ancien modèle de Raspberry Pi. Mais ça reste un peu vain à mon avis : on est devant des cartes SD moins médiocres que d’habitude. J’espère vraiment que les cartes microSD Express vont trouver un public et que le Raspberry Pi 6 ajoutera cette possibilité.