[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