NVMe ssd: Pourquoi l'écriture 4k est-elle plus rapide que la lecture?

51

J'ai un SSD Samsung 960 Pro de 512 Go sur NVMe avec PCIe Gen.3x4 en cours d'exécution. J'utilise le pilote Samsung NVMe 2.0.0.1607. Le SSD fonctionne bien. Cependant, je ne comprends pas pourquoi l'écriture de 4k est plus rapide que la lecture de 4k. J'utilise AS Benchmark:

entrez la description de l'image ici

C'est un facteur de 3! Quelque chose ne va pas (avec mon système ou AS Benchmark) ou est-ce normal?

Musbach
la source
Et toujours beaucoup plus vite qu'un disque dur en rotation!
Zan Lynx

Réponses:

76

Les lectures 4k vont être à peu près la chose la plus difficile que le lecteur puisse faire. Ils font partie des plus petites tailles de bloc que le lecteur sera capable de gérer, et il est impossible pour le lecteur de précharger de grandes quantités de données. En fait, ils sont probablement assez inefficaces si la logique de chargement anticipé du lecteur a l'intention de lire quoi que ce soit. plus grand que 4kb.

Les lectures de lecteur "normales" sont plus susceptibles d'être supérieures à 4 Ko, car très peu de fichiers sont aussi petits, et même le fichier de page risque d'être lu par lots volumineux, car il serait étrange qu'un programme ait "seulement" 4 Ko de mémoire paginée. Cela signifie que tout préchargement que le lecteur essaie de faire pénalisera réellement le débit du lecteur.

Les lectures 4K peuvent passer par la mémoire tampon du lecteur, mais la partie "aléatoire" du test les rend totalement imprévisibles. Le contrôleur ne saura pas quand le lecteur pourrait avoir besoin des lectures plus "habituelles" plus habituelles.

D'autre part, les écritures 4K peuvent être mises en mémoire tampon, en file d'attente et écrites séquentiellement de manière efficace. La mémoire tampon de lecteur peut effectuer une grande partie du travail d’accrochage pour lequel elle a été conçue et le correcteur d’usure peut même allouer toutes ces écritures 4K au même bloc d’effacement de lecteur, en tournant de temps à autre une écriture 4K "aléatoire". quelque chose de plus proche d'une écriture séquentielle.

En fait, je soupçonne que c'est ce qui se passe dans les écritures "4K-64Thrd", le "64-Thrd" utilise apparemment une grande longueur de file d'attente , signalant ainsi au lecteur qu'il dispose d'une grande quantité de données à lire ou à écrire. . Cela déclenche de nombreuses grappes d’écritures et permet donc d’approcher la vitesse d’écriture séquentielle du lecteur. L'exécution d'une écriture 4K présente toujours un surcoût, mais vous exposez maintenant pleinement le potentiel de la mémoire tampon. Dans la version en lecture du test, le variateur de vitesse, reconnaissant qu'il est soumis à une charge très constante, arrête le préchargement des données, évite éventuellement la mémoire tampon et passe à la place en mode de lecture "brut", se rapprochant à nouveau de la vitesse de lecture séquentielle.

Fondamentalement , le contrôleur d'entraînement peut faire quelque chose pour faire un 4K écrire plus efficace, surtout si un groupe d'entre eux arrivent à la même époque, alors qu'il ne peut rien faire pour faire une seule 4K lire plus efficace, surtout si elle tente d'optimiser flux de données en préchargeant les données dans le cache.

Mokubai
la source
5
Cela ne fait pas partie de la réponse elle-même, mais je soupçonne que la "lecture 4K" (version autre que 64Thrd) expose en réalité la taille de bloc de lecture par défaut du lecteur sous la forme 32K ou 64K. Ce serait soit 2600/50 = 52 (64K avec une surcharge + la lecture originale de 4K) ou 1200/50 = 24 (32K avec une surcharge + la lecture de 4K la réduisant).
Mokubai
16
Bonne réponse dans l’ensemble, mais je ne crois pas "qu’il existe très peu de fichiers aussi petits". En fait, je soupçonne que sur la plupart des systèmes, la majorité des fichiers ont une taille inférieure ou égale à 4 Ko. Ils ne prennent pas la majorité de l' espace , mais c'est une autre affaire.
Hobbs
3
La réponse la plus simple est probablement la suivante: si vous les effectuez une à la fois, vous ne pouvez pas chevaucher les lectures car vous ne saurez même pas à quel bloc la lecture est bloquée tant que vous n'avez pas renvoyé les données de la lecture précédente. Mais vous pouvez chevaucher complètement les écritures puisque vous pouvez obtenir toutes les données pour la prochaine écriture pendant que vous travaillez encore sur la précédente.
David Schwartz
2
@hobbs Si vous prenez par exemple NTFS, la taille de cluster par défaut est 4K (ou un multiple de celui-ci), ce qui signifie que le système de fichiers NTFS lui-même fonctionne par blocs de 4K, même si les fichiers et / ou les métadonnées sont plus petits. Les fichiers plus petits ne font donc aucune différence. À toutes fins utiles, un système Windows lit / écrit en blocs de 4 Ko ou un multiple de celui-ci.
Tonny
1
@ Hobbs: Avec NTFS, vous obtiendrez gratuitement la lecture de ces petits fichiers (!). Les petits fichiers sont stockés dans l'entrée de répertoire elle-même, adjacente au nom du fichier. Vous devez atteindre une taille de fichier assez proche de 4 Ko pour avoir un fichier de 4 Ko sur le disque.
MSalters
16

D'autres réponses ont déjà expliqué pourquoi il se peut que l'écriture soit plus rapide que la lecture; Je voudrais ajouter que pour ce lecteur, cela est tout à fait normal, comme le confirment les points de repère que vous pouvez trouver dans les avis.

L'avis de ArsTecnica

ArsTechnica a examiné le lecteur, votre version (512 Go) et celle de 2 To:

ArsTechnica (Ce graphique n'est pas immédiatement visible dans la critique, c'est le 5ème dans la première galerie, vous devez cliquer dessus)

Les performances de ces 2 modèles sont très similaires et leur nombre est identique au vôtre: le lecteur peut lire à 37 Mo / s et écrire à 151 Mo / s.

L'avis de AnandTech

AnandTech a également examiné le lecteur: ils ont utilisé le modèle 2To, en faisant la moyenne des résultats des tests avec une file d'attente de 1, 2 et 4. Ce sont les graphiques:

AnandTech 4K lu AnandTech 4K en écriture

Le lecteur lit à 137 Mo / s et écrit à 437 Mo / s. Ce nombre est beaucoup plus élevé que le vôtre, mais cela est probablement dû aux profondeurs de file d'attente plus élevées. Quoi qu'il en soit, la vitesse d'écriture est égale à 3 fois la vitesse de lecture, comme dans votre cas.

L'avis de PC World

Encore une critique de PC World : ils ont testé la version 1 To et les résultats pour 4K sont de 30 Mo / s en lecture et de 155 Mo / s en écriture: Graphique PC World la vitesse d’écriture est conforme à la vôtre, mais ici encore plus lent à la lecture. Le résultat est que le rapport est de cinq pour un et non de trois pour un.

Conclusion

Les critiques confirment que pour ce lecteur, il est normal que la vitesse d'écriture pour la lecture aléatoire 4K soit beaucoup plus rapide que la vitesse de lecture: selon le test, elle peut même être 5 fois plus rapide.

Votre voiture va bien. Il n'y a aucune raison de croire qu'il est défectueux ou que votre système a un problème.

Fabio dit réintégrer Monica
la source
8

Le contrôleur SSD met en cache les écritures dans la mémoire NVRAM intégrée et les vide sur le support flash aux moments opportuns. La latence en écriture est donc la latence d'accès au cache, généralement 20 us. Les lectures, au contraire, sont diffusées hors média, avec un temps d’accès de 120-150US au mieux.

Andrey Kuzmin
la source
1

Pour approfondir la réponse d'Andrey, vous devez examiner les frais généraux impliqués avant que le disque SSD puisse signaler à l'ordinateur que l'opération est terminée.

Pour une écriture, les données doivent simplement être écrites dans un cache RAM interne. Plus tard, il sera écrit dans la mémoire flash, avec les autres blocs 4k et métadonnées nécessaires pour le vérifier, corriger les erreurs et le localiser.

Pour une lecture, le SSD doit d’abord localiser les données. L'emplacement que l'ordinateur souhaite lire s'appelle l'adresse logique et n'a pas de relation directe avec l'emplacement physique des données dans la mémoire flash. Le disque SSD traduit l'adresse logique en adresse physique, en fonction de la géométrie de la mémoire flash (mode d'organisation des cellules), du remappage des blocs défectueux, du nivellement par usure et de divers autres facteurs. Il doit ensuite attendre que toutes les autres opérations soient terminées avant de récupérer les données de Flash, de les vérifier et, si nécessaire, de relire et d'appliquer une correction d'erreur, voire de réécrire le bloc entier ailleurs.

Alors que le temps total pris par une opération d'écriture peut être plus long qu'une opération de lecture classique, le temps mis par le disque SSD pour signaler que l'opération s'est terminée dans la mesure où il peut traiter d'autres commandes est plus court. Avec les gros blocs, la surcharge n'est pas le facteur limitant, mais avec de nombreux petits blocs, la vitesse de lecture / écriture commence à être limitée.

utilisateur3241
la source