[gull] Write Amplification on SSD

Daniel Cordey dc at mjt.ch
Tue Feb 9 17:52:00 CET 2016


> Est-ce de l'obsolescence programmée ou pas ?

Non, pas spécialement, mais disons que les constructeurs sont 
particulièrement muets à ce sujet et essaient de cacher le problème.

Les première technologie de NAND permettaient d'écrire 100'000 une 
cellule; c'est en fait devenu la technologie SLC (single-level-cell), on 
est ensuite passer au MLC (multi-level-cell, en faite double) qui ne 
permet d'écrire plus que 10'000 fois avant de voir la mort de la 
cellule. Maintenant on en est au TLC (Triple-level-cell) qui ne permet 
plus que 3'000 écriture.

Plutôt que de dire clairement que l'augmentation de la capacité des 
mémoires flash (NAND) se fait au détriment de la longévité, les 
constructeurs noinet le poisson et continuent à parler de MTBF... ce qui 
n'a strictement aucun sens pour des SSD puisque le MTBF ne mesure pas la 
longévité et la résistance des cellules à l'écriture.

Aujourd'hui, il est très facile de "tuer" un disque SSD en écrivant 1 
byte toujours à la même position !

On attend donc avec impatience la technologie 3D-NAND et autres pour 
remplacer les NAND des SSD qui sont une gigantesque arnaque avec les MLC 
et surtout TLC.

Petit résumé dans l'article suivant :

http://www.mydigitaldiscount.com/everything-you-need-to-know-about-slc-mlc-and-tlc-nand-flash.html

Toutefois, les tests d'écriture sont particulièrement imbéciles car ne 
reflétant pas le problème. En écrivant des gros paquets de données, 
comme des fichiers vidéos, on cache le problème et on donne la fausse 
impression que le problème est éloigné.

Les SSD écrivent 128 KB de data à la fois. Ce qui fait que chaque fois 
que je veux écrire un byte, j'écris en fait 128 K. Comme le firmware 
réparti l'utilisation des cellules tout au long du disque en "déplaçant" 
les écriture. Grosso-modo, si je prends un disque de 256 GB et que 
j'écrive un seul byte à la fois, que je le fasse 6+E9 fois, je n'aurai 
écrit que 6 GB de données... mais mon disque sera mort !

#!/usr/bin/python
i = 0
with open('toto, 'w') as f :
     while i < 6000000000 :
         f.seek(0,0)
	f.write('A')

print('Mon disque est mort ou sur le point de...')


dc





More information about the gull mailing list