Je ne pense pas en effet que la fragmentation des fichiers sur SSD est un problème. En fait toute écriture sur SSD se fait en recyclant de nouveaux secteurs déjà "trimmés."
Cependant pour trimmer les secterurs c'est un peu plus lent qu'une écriture normale mais c'est une opération nécessaire avant de pouvoir les réécrire. De fait un SSD ne trimme pas les secteurs tout seul et ne le fait qu'à la demande de l'OS. Si le SSD devient très plein, les anciens secteurs qui ont été réécris sont marqués comem "dirty" (à trimmer) avant de pouvoir être à nouveau disponibles pour l'écriture. Quand le SSD se remplit, les trims sont de plus en plus fréquents et sur un nombre moins élevé de secteurs : si on se contente de toujours écrire sur ces derniers secterus libres, ils vont vite dépasser leur nombre d'écriture maxi et produire des erreurs (ils sont ineffaçables et les nouveaux secteurs doivent être alloués parmi les autres secteurs trimmés). Pour égaliser la durée de vie moyenne des secteurs, une petite table statistique interne découpe le SSD en "bandes" et les bandes sont recyclés régulièrement (par l'OS) en réécrivant les secteurs occupés (sans réellement les modifier) afin de déplacer progressivement le pool de secteurs trimmés sur toute la surface. C'est un processus cyclique, l'OS indique au SSD quand il est opportun de recycler des secteurs trop souvent trimmés (donc réécrits aussi trop souvent) pour y mettre à la place des données stables encore stockées dans des secteurs moins souvent écrits. Le SSD possède en plsu un petit pool de secteurs de secours qui servira en cas de trop plein mais qui doivent être vite libéré. Ce pool libre sert avant tout pour permettre la récupération en cas de coupure d'alimentation ou plantage du système afin d'assurer l'intégrité: il doit pouvoir stocker les données non encore écrites qui sont dans le petit antémémoire cache (constitué non pas de mémoire flash mais de RAM plus classique et plus rapide ne nécessitant aucun trim) Bref les performances commencent à se dégrader au delà des 60% d'occupation, certains SSD affichant des performances en écriture déjà deux fois moins élevée quand ils sont seulement à moitié plein. Un SSD ne devrait jamais être utilisé au delà des deux tiers de la capacité maximale, sinon même les données stables sont exposées à des risques et les performances se dégradent vite. Bref il faut faire le ménage si on veut de bonnes performances en écriture. En revanche en lecture cela n'a normalement pas d'influence sur les performances: un SSD protégé en écriture aura une excellente durée de vie, mais là aussi la mémoire flash doit de temps en temps être raffraichie: les secteurs en lecture seule se recyclent donc aussi. Le firmware des SSD s'en occupe très lentement quand il n'est pas occupé à faire autre chose. L'autre problème des SSD est qu'ils n'ont pas seulement des secteurs de données mais aussi des secteurs de "tags" qui permettent de stocker l'indirection des secteurs virtuels (vus pas les système de fichier de l'OS) en secteurs physiques. Cette indirection se fait par bloc minimal de 4Ko là où les secteurs logiques font seulement 0,5Ko pour les OS et les protocoles ATA/PATA/SATA/SCSI et l'adressage LBA en général. Le but étant réduire la place nécessaire pour la mémoire de tags, contituée aussi de secteurs de mémoire Flash et qui doit elle aussi être recyclée (mais avec un algorithme complètement différent sans placement "aléatoire" comme les secteurs de données). Les algos utilisés pour la mémoire de tags varient selon les constructeurs et firmwares de SSD. La mémoire de tags peut aussi avoir (et en général elle en a) elle aussi un cache de RAM volatile: comme les tags sont les données du SSD les plus souvent accédées, ce cache doit être très rapide, c'est souvent des registres CMOS, mais là aussi il faut une réserve d'énergie pour assurer l'intégrité. Parfois des secteurs flash commenceront à avoir des problèmes sur certains bits et pas d'autres, ils ont tous un contrôle de parité/CRC poru détecter ces erreurs, et c'est vrai aussi de la mémoire de tags. Certains SSD utilise pour les tags (le même pool de secteurs mémoire Flash, mais évitent la fin de vie prématurée en mettant un cache volatile important en face: c'est un cache en écriture différée, il peut être plus gros que le cache d'écriture des données, par exemple 64Mo pour les tags contre seulement 4Mo pour les données, notamment sur les très gros SSD les plus chers dont le cache couteux de données ne monte pas autant en capacité que le cache des tags). On trouve aussi des SSHD, couplant un gros HDD (fiable) à un petit SSD frontal mais sans recyclage: ce SSD au cours du temps voit sa capacité diminuer, le cache SSD est un peu moins performant au fil du temps, et peut aussi avoir un cache de RAM volatile rapide. Sa mémoire de tags (pour associer les numéros de secteurs du disque dur à une page de cache SSD est moins critique. Mais cela apporte de la fiabilité aux HDD en réduisant les cycles de démarrage/arrêt et réduisant les déplacements de tête par un placement plus linéaire (qui évite d'avoir à utiliser des défragmenteurs). Dans les OS il existe aussi des systèmes de fichiers qui émulent les SSHD en couplant un SSD avec un ou plusieurs disques, mais on en trouve en général plutôt dans les contrôleurs RAID matériels où cela améliore nettement les performances notamment en RAID 4 (obsolète), RAID 5 ou RAID 6 dans des grappes de plus de 4 disques durs (dont un ou deux disques "spare") car la lenteur du RAID est liée au fait qu'il faut accéder à tous les disques en même temps pour calculer les données de redondance qui permettent de reconstruire les données manquantes ou palier un secteur physique devenu défectueux. Pour l'archivage de données à long terme, rien ne vaut les disques durs mais pour les consulter et éviter de les mettre en panne, là encore un SSD cache en lecture améliore beaucoup la fiabilité et on les couple en RAID. Pour le travail en continu (exemple disques de swap, fichiers temporaires...) les SSD sans RAID sont nettement meilleurs, mais on a intérêt à disposer d'un gros pool mémoire RAM classique avec une réserve d'énergie (ce qui n'est pas le cas des controleurs RAM des cartes mères ou de la GDDR de travail des cartes vidéos où toutes les données sont volatiles et où il est acceptable de ne pas fournir 100% de fiabilité en continu: l'erreur ne sera pas normalement pas visible plus de quelques millisecondes et peut être détectée et éventuellement évitée pour les affichages suivants mais avec un système de tags simplifié: les blocs mémoire sont typiquement plus gros par paquet de plusieurs mégaoctets: une erreur invalidera toute un page de plusieurs mégas ce qui fait baisser les perfs mais sans grande conséquence critique, et on pire on pourra changer la carte vidéo pour remplacer la GDDR en même temps qui est généralement soudée et rarement en barrettes DIMM comme la RAM de travail du système). Ce qui fait la diférence en terme de prix c'est la quantité de mémoire cache sur les controleurs ou cartes mères ou dans les processeurs, car cette mémoire est couteuse et beaucoup moins dense et nécessite plus de composants physiques que la mémoire Flash. Le 27 juin 2017 à 22:06, Alarig Le Lay <ala...@swordarmor.fr> a écrit : > On mar. 27 juin 18:29:28 2017, Christian Quest wrote: > > Besoin de maintenance car le SSD où sont stockées les données dépassait > les > > 90% d'occupation depuis quelques semaines et qu'un peu de ménage est > > nécessaire pour remettre de l'ordre dans les données. En effet, avec des > > mises à jour toutes les 5mn, les données se retrouvent très dispersées > sur > > le disque au bout d'un certain temps, du coup les I/O augmentent, les > perf > > baissent... j'avais fait une présentation au SOTM sur ce sujet à Buenos > > Aires ;) > > C’est sûrement une question bête, mais l’intérêt des SSD n’est pas > justement d’avoir le même temps de réponse même si les données sont > éparpillées car il n’y a pas besoin d’attendre que la tête arrive sur le > bon secteur ? > Après, je n’ai jamais eu d’infra où j’arrive au bout des I/O d’un SSD, > donc je ne sais pas… > > -- > alarig > > _______________________________________________ > Talk-fr mailing list > Talk-fr@openstreetmap.org > https://lists.openstreetmap.org/listinfo/talk-fr > >
_______________________________________________ Talk-fr mailing list Talk-fr@openstreetmap.org https://lists.openstreetmap.org/listinfo/talk-fr