Comme tous les SSD modernes, les Mac font un compromis entre vitesse et sécurité des données

Nicolas Furno |

Hector Martin, le principal développeur de la distribution Linux Asahi conçue pour les Mac Apple Silicon, a noté une différence considérable des performances du SSD de son MacBook Air M1 entre macOS et Linux. En activant une fonction de protection des données, le même SSD lui a permis d’atteindre 40 000 opérations par seconde avec le système d’Apple, contre… 46 seulement avec Linux. C’est près de mille fois moins et c’est une performance médiocre, bien inférieure aux autres SSD et même à la majorité des disques durs sur le marché.

Comment expliquer une telle différence ? Si le développeur a initialement parlé de tricherie de la part d’Apple, c’est un petit peu simpliste, à la fois parce que la protection des données est gérée différemment sur macOS et Linux et aussi parce que c’est un compromis bien plus large qui touche tous les SSD modernes. Faisons le point.

Source
Image d’accroche : iFixit
Tags
avatar pakal | 

« apt-get » c’est plutôt « apt get » maintenant

avatar Nicolas Furno | 

@pakal

C'est même apt tout court, en effet, mais cela dépend des distributions et comme il a donné explicitement apt-get comme exemple… après c’est peut-être par habitude, je ne sais pas.

avatar saoullabit | 

Très intéressant comme sujet. Je peux comprendre aussi pourquoi le gars est en colère… mais bon.

avatar koko256 | 

Mettre un onduleur est plutôt une bonne idée mais je trouve que les progrès des batteries ne se retrouvent pas dans les onduleurs qui restent très gros (et moches).

avatar raoolito | 

@koko256

un onduleur ne fait pas seulement conserver du courant (suivant les modeles). De par leur nom « onduleur » ils lissent egalement le courant pour eviter les surtensions ou autre. Les modeles bas de gamme ne font que remplir une batterie et liberent le courant directement, les modeles haut de gamme sont un vrai « filtre à courant » les modeles entre les deux… ben font un peu des deux :)

et pi bon c pas non plus la meme puissance délivrée.

avatar koko256 | 

@raoolito

OK (dans un sens c'est logique). Donc les modèles bas de gamme n'utilisent pas de bonnes batteries et restent moches et les modèles haut-de-gamme restent gros à cause de la partie électronique en plus. Cela fait sens. Et j'imagine que produire du 220 c'est probablement plus compliqué que le 12/5/3.3v présent dans la machine. C'est dommage que l'on ne puisse pas le brancher directement après l'alimentation (voire sur le port usb-c).

avatar raoolito | 

@koko256

tout à fait. C’est sur 220 pendant plus ou moins de temps suivant la capacité et ce qui est branché dessus. Ici avec quelques HDD un macmini i7 et deux ecrans, une airport extreme (et une lumiere led) ca tient une quinzaine de minute en coupure totale

avatar BLM | 

«SSD […] conçu par Samsung […] deux capaciteurs»
Pourquoi employez-vous ce terme "capaciteur"?
Ce sont des "condensateurs" (aussi appelés parfois "capacités", terme vieilli que je ne vois plus).

Ceci dit, très intéressant comme sujet. Et inquiétant! Si 1 ss-couche logicielle ment à celles au-dessus sur l'exécution des tâches demandées… la sécurité peut être sérieusement compromise.

avatar thierry37 | 

Salut Nicolas
C'est quel ordinateur sur la photo miniature ?
Le système ventilation a l'air énorme 😊

avatar Bounty23 | 

@thierry37

iMac Pro

avatar raoolito | 

je veux un hasktag « Nicolasf » pour avoir uniquement ses articles qui sont toujours super !

#LaGuerreAMichaelEstDeclaree

avatar amonbophis | 

Je ne comprends pas: quel type de données perd-on en cas de coupure de courant? Celles concernant la duplication d’un fichier? Des fichiers système, de cache? Quel impact sur l’utilisation bureautique sur un iMac?

avatar gaurejac | 

@amonbophis

De manière générale, tout l'OS (et les applications) n'écrivent jamais directement dans les puces du SSD mais envoient des commandes au contrôleur du SSD.
Le contrôleur du SSD commence par stocker les données à écrire dans son cache (qui est toujours de la RAM, soit RAM de la machine soit une puce RAM dédiée selon les modèles de SSD), et ne les écrit réellement que quand il les a bien ordonnées et que son algorithme lui dit que c'est opportun d'écrire réellement.

A tout moment donc le SSD a des données en cache, sauf si on ne fait rien pendant plusieurs secondes et qu'il a le temps de les vider...
Dans certains OS (linux) on peut régler volontairement de forcer le "flush" (= le vidage) du cache du SSD par exemple toutes les secondes ou toutes les 1/2 secondes (on perd donc au pire 1 secondes de données).

quand on met en veille la machine ou quand on l'éteint, le SSD vide son cache et écrit tout "en dur" dans les puces.

Tout l'enjeu est que si il y a une coupure inopinée (unexpected shutdown), l'OS en général (et les applications derrière) peut croire avoir écrit des données puisqu'il les a envoyées au SSD, alors que celles-ci en réalitées étaient encore en RAM et sont définitivement perdues. Si c'est du cache web on s'en fout, si c'est un fichier Word ou Excel ça veut dire que au mieux on récupère un fichier plus ancien sans les dernières modif, sur des base de données (sql ou autre) ça peut être catastrophique et rendre la base incohérente.

Rajoute à ça que l'OS lui même a un cache d'écriture en RAM (qui peut faire plusieurs Go) en plus du cache du SSD...
En fait :

applications et sous programmes -> envoient les commande à l'OS qui les met en cache d'écriture -> l'OS envoie des commandes au SSD qui les met en cache RAM du SSD -> les données sont écrites dans les puces

Pour gérer ça on a une fonction de journalisation du système de fichiers qui fait que toutes les opérations d'écriture sont d'abord inscrites dans ce journal, ensuite envoyées en cache de l'OS, ensuite envoyées au SSD, et validées comme "clean" dans le journal une fois que confirmées comme bien envoyées au SSD (mais qui lui même peut les avoir mises en cache et perdues si le courant est coupé...)

avatar gaurejac | 

Les SSD Apple récents sont différents des SSD NVMe du commerce à un stade qu'on imagine même pas.

Entre autres exemples :
- sur les SSD du commerce les NAND sont en package BGA "standard" 132 ou 152 et sont reliées au contrôleur par des bus de données parallèles
- sur les SSD Apple, les NAND soudées à la carte mère utilisent un package BGA110 propriétaire (le même que les iPhones) et chaque puce est reliée au controleur T2 ou au processeur M1 avec 1x ligne PCIe (3.0 ou 4.0 sur les M1 Pro/Max)

Apple ne donne pas l'info et personne à ma connaissance n'a listé quel Mac utilise de la MLC et quel Mac utilise de la TLC.
A ma connaissance les iMac / iMac Pro / Mac Pro / MacBook et Air jusqu'au dernier iMac 27" 2020 utilisent de la MLC (ils ont un débit en écriture à 3 Go/s stable jusqu'au remplissage du disque).
Et par contre tous les Mac M1 et M1 Pro/Max utilisent de la TLC avec cache SLC d'1 tiers : le débit est à 3 Go/s pendant le remplissage du 1er tiers (6 Go/s sur les M1 Max / Pro) et chute ensuite au tiers du débit (1Go/s sur les M1 normaux, 2 Go/s sur les M1 Pro / Max)

Tout ça est très peu documenté.

Comme tous les fabricants (Samsung), Apple respecte globalement la norme NVMe (1.10 sur les premières générations de SSD Apple NVMe puis 1.3) mais utilise parfois des fonctions qui ne sont pas encore implémentées dans la norme, ça a l'air le cas ici.
Ensuite le consortium décide ou non d'intégrer ces fonctions à la norme, avec des intérprétations et des compromis.

Passionnant comme article et très bien expliqué comme toujours en tout cas ! merci Nicolas !

avatar Lightman | 

@gaurejac

Passionnante ta contribution. Je me demande toujours dans quel milieu professionnel évoluent les gens qui ont un tel niveau d'expertise. Merci pour le partage.

CONNEXION UTILISATEUR