web-dev-qa-db-fra.com

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

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:

 enter image description here

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

51
musbach

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" ont plus de chances 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 en temps 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 produit dans les écritures "4K-64Thrd", les "64-Thrd" sont utilisant apparemment une grande longueur de file d'attente , signalant ainsi au lecteur qu'il contient une grande quantité de données lire ou écrire. Cela déclenche de nombreuses grappes d’écritures et approche ainsi 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 contrôleur de lecteur, reconnaissant qu'il est soumis à une charge très constante, arrête le préchargement des données, évite éventuellement le tampon et passe à la place en mode de lecture "brut", se rapprochant à nouveau de la vitesse de lecture séquentielle.

Fondamentalement, le contrôleur de lecteur peut faire quelque chose pour rendre une écriture 4K plus efficace, surtout si un groupe d'entre eux arrive à la même heure, alors qu'il ne peut rien faire pour créer un single La lecture 4K est plus efficace, en particulier si vous essayez d'optimiser le flux de données en préchargeant les données dans le cache.

73
Mokubai

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 la version 2 TB:

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 passé en revue 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 readAnandTech 4K write

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 TB, et les résultats pour 4K sont de 30 Mo/s en lecture et de 155 Mo/s en écriture: PC World graph La vitesse d'écriture correspond à la vôtre, mais ici, la lecture est encore plus lente. 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 bien supérieure à 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.

16
Fabio Turati

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

8
Andrey Kuzmin

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 interne RAM. 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 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 se terminent avant de récupérer les données de Flash, puis de les vérifier et, le cas échéant, 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 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.

1
user3241