Quel est le problème avec ma vitesse à 4K? Pourquoi est-ce si lent? Ou est-ce censé être comme ça?
Est-ce que ça va? Pourquoi ai-je une vitesse aussi basse à 4K?
hard-drive
hardware-failure
storage
speed
benchmarking
Utilisateur6539
la source
la source
Réponses:
Ce que vous rencontrez est typique des disques durs mécaniques et constitue l’un des principaux avantages des disques SSD: les disques durs offrent de terribles performances en matière d’accès aléatoire.
Dans CrystalDiskMark, "Seq" désigne un accès séquentiel, tandis que "4K" désigne un accès aléatoire (par tranches de 4 Ko à la fois, car un seul octet serait beaucoup trop lent et irréaliste 1 ).
Définitions
En gros, vous pouvez accéder à un fichier de deux manières différentes.
Accès séquentiel
L' accès séquentiel signifie que vous lisez ou écrivez le fichier plus ou moins octet après octet. Par exemple, si vous regardez une vidéo, vous devez la charger du début à la fin. Si vous téléchargez un fichier, il est téléchargé et écrit sur le disque du début à la fin.
Du point de vue du disque, il voit des commandes telles que "lire le bloc n ° 1, lire le bloc n ° 2, lire le bloc n ° 3, lire le bloc d'octets n ° 4" 1 .
Accès aléatoire
L' accès aléatoire signifie qu'il n'y a pas de motif évident pour les lectures ou les écritures. Cela ne doit pas signifier vraiment aléatoire; cela signifie vraiment "pas séquentiel". Par exemple, si vous démarrez de nombreux programmes à la fois, ils devront lire de nombreux fichiers éparpillés sur votre disque.
Du point de vue du lecteur, il voit des commandes du type "lire le bloc n ° 56, lire le bloc n ° 5463, lire le bloc n ° 14, lire le bloc n ° 5".
Des blocs
J'ai déjà mentionné des blocs plusieurs fois. Parce que les ordinateurs traitent de si grandes tailles (1 Mo ~ = 1000000 B), même un accès séquentiel est inefficace si vous devez demander au lecteur pour chaque octet - il y a trop de bavardage. En pratique, le système d'exploitation demande des blocs de données du disque à la fois.
Un bloc est juste une plage d'octets; Par exemple, le bloc n ° 1 peut être constitué des octets n ° 1 à n ° 512, le bloc n ° 2 de n ° 513 à n ° 1024, etc. Ces blocs ont une taille de 512 octets ou de 4096 octets, en fonction du lecteur. Mais même après avoir traité des blocs plutôt que des octets individuels, l'accès séquentiel aux blocs est plus rapide que l'accès aléatoire aux blocs.
Performance
Séquentiel
L'accès séquentiel est généralement plus rapide que l'accès aléatoire. En effet, l’accès séquentiel permet au système d’exploitation et au lecteur de prévoir ce qui sera nécessaire par la suite et d’en charger une grande partie à l’avance. Si vous avez demandé les blocs "1, 2, 3, 4", le système d'exploitation peut deviner que vous souhaitez "5, 6, 7, 8" ensuite, de sorte qu'il indique au lecteur de lire "1, 2, 3, 4. , 5, 6, 7, 8 "en une fois. De même, le lecteur peut lire en une fois la mémoire physique, plutôt que "chercher 1, lire 1,2,3,4, chercher 5, lire 5,6,7,8".
Oh, j'ai mentionné chercher à quelque chose. Les disques durs mécaniques ont un temps de recherche très lent en raison de leur disposition physique: ils sont constitués d’un certain nombre de disques métalisés lourds tournant autour desquels les bras physiques se déplacent pour lire le disque. Voici une vidéo d'un disque dur ouvert où vous pouvez voir les disques en rotation et les bras en mouvement.
Image de http://www.realtechs.net/data%20recovery/process2.html
Cela signifie qu'à tout moment, seul le bit de données situé sous la tête à l'extrémité du bras peut être lu. Le lecteur doit attendre deux choses: attendre que le bras se déplace vers le bon anneau ("piste") du disque et attendre que le disque tourne pour que les données nécessaires se trouvent sous la lecture. tête. Ceci est connu comme cherchant 2 . Les bras qui tournent et ceux qui bougent ont besoin de temps physique pour bouger, et ils ne peuvent pas être accélérés sans risquer de subir des dégâts.
Cela prend généralement très très longtemps, beaucoup plus longtemps que la lecture réelle. Nous parlons plus de 5 ms juste pour savoir où se trouve l'octet demandé, alors que la lecture réelle de l'octet est d'environ 0,00000625 ms par lecture séquentielle (ou 0,003125 ms par bloc de 512 B).
Aléatoire
En revanche, l’accès aléatoire n’a pas l’avantage de la prévisibilité. Donc, si vous voulez lire 8 octets aléatoires, peut-être à partir des blocs "8,34,76,996,112,644,888,341", le lecteur doit aller "chercher à 8, lire 8, chercher à34, lire 34, chercher à 76, lire 76, ..." . Remarquez comment il a besoin de chercher à nouveau pour chaque bloc? Au lieu d'une moyenne de 0,003125 ms par bloc séquentiel de 512 B, on passe maintenant à une moyenne de (recherche de 5 ms + lecture de 0,003125 ms) = 5,003125 ms par bloc. C'est beaucoup, beaucoup de fois plus lent. Des milliers de fois plus lent, en fait.
SSD
Heureusement, nous avons maintenant une solution: les SSD.
Un SSD, un disque SSD, est, comme son nom l’indique, un état solide . Cela signifie qu'il n'a pas de pièces mobiles . De plus, la façon dont un SSD est présenté signifie qu'il n'y a (en réalité 3 ) pas besoin de rechercher l'emplacement d'un octet; il sait déjà . C'est pourquoi un disque SSD a bien moins d'écart de performance entre accès séquentiel et aléatoire.
Il y a toujours un écart, mais cela peut être attribué en grande partie au fait de ne pas pouvoir prédire ce qui va suivre et de précharger ces données avant de les demander.
1 Plus précisément, les lecteurs LBA sont adressés par blocs de 512 octets (512n / 512e) ou de 4 ko (4 kN) pour des raisons d'efficacité. En outre, les programmes réels n’ont presque jamais besoin d’un octet à la fois.
2 Techniquement, chercher ne concerne que le déplacement du bras. Attendre que les données tournent sous la tête est une latence rotationnelle en plus du temps de recherche.
3 Techniquement, ils disposent de tables de consultation et de reconfiguration pour d'autres raisons, par exemple le nivellement par usure, mais elles sont totalement négligeables par rapport à un disque dur ...
la source
Notice how it needs to look for every single byte?
:: remplacezbyte
parblock
(et changez l'exemple en conséquence). Le lecteur recherche la partie 4k (qui pourrait être encore divisée en un bloc de 512 octets, mais pas plus bas que cela. Il ne cherche pas entre chaque octet! Il cherche entre chaque bloc si le prochain bloc n'est pas juste derrière (ce qui arrive souvent Et il faut beaucoup de temps (quelques millisecondes) pour chercher (déplacer la tête autour du plateau et attendre que le bloc passe en dessous)Comme cela a déjà été souligné par d'autres réponses, "4K" désigne presque certainement un accès aléatoire par blocs de taille 4 Ko.
Chaque fois qu'un disque dur (et non un disque SSD) est invité à lire ou à écrire des données, deux retards importants interviennent:
Les deux sont d'une durée relativement constante pour un lecteur donné. La latence de recherche dépend de la rapidité avec laquelle la tête peut être déplacée et de la distance à laquelle elle doit être déplacée, tandis que la latence en rotation dépend de la vitesse à laquelle le plateau tourne. De plus, ils n'ont pas beaucoup changé au cours des dernières décennies. Les fabricants utilisaient en fait des temps de recherche moyens, par exemple dans les publicités; ils ont à peu près cessé de le faire quand il y avait peu ou pas de développement dans la région. Aucun fabricant, surtout dans un environnement très concurrentiel, ne veut que ses produits aient une apparence meilleure que ceux de ses concurrents.
Un disque dur de bureau typique tourne à 7 200 tr / min, alors qu'un disque dur d'ordinateur portable peut tourner à environ 5 000 tr / min. Cela signifie que chaque seconde passe à 120 révolutions (lecteur de bureau) ou environ 83 révolutions (lecteur de portable). Comme le disque doit tourner en moyenne d’un demi-tour avant que le secteur souhaité passe sous la tête, on peut donc s’attendre à ce que le disque puisse traiter environ deux fois plus de demandes d’E / S par seconde, en supposant que
Nous devrions donc pouvoir nous attendre à environ 200 E / S par seconde si les données auxquelles il est demandé d'accéder (en lecture ou en écriture) sont relativement localisées physiquement, la latence rotationnelle étant le facteur limitant. Dans le cas général, on peut s’attendre à ce que le disque puisse fonctionner de l’ordre de 100 E / S par seconde si les données sont réparties sur le ou les plateaux, ce qui nécessite une recherche considérable et fait de la latence de recherche le facteur limitant. . En termes de stockage, il s’agit du " IOPSperformances "du disque dur; ce ne sont pas les performances d'E / S séquentielles, qui constituent généralement le facteur limitant dans les systèmes de stockage du monde réel. réduisez considérablement le temps de latence de la recherche, car le mouvement physique de la tête de lecture / écriture devient une consultation de table dans les tables de couche de mappage flash, qui sont stockées électroniquement.)
Les écritures sont généralement plus lentes quand un vidage du cache est impliqué. Normalement, les systèmes d’exploitation et les disques durs essaient de réorganiser les écritures aléatoires pour transformer les E / S aléatoires en E / S séquentielles, dans la mesure du possible, afin d’améliorer les performances. S'il existe un obstacle explicite au vidage du cache ou à l' écriture du cache , cette optimisation est supprimée dans le but de garantir que l'état des données dans le stockage persistant correspond aux attentes du logiciel. En principe, le même raisonnement s'applique lors de la lecture lorsqu'il n'y a pas de cache disque impliqué, soit parce qu'il n'en existe aucun (ce qui est rare aujourd'hui sur les systèmes de type bureau) ou parce que le logiciel le contourne délibérément (ce qui est souvent le cas lors de la mesure des performances d'E / S). Ces deux solutions réduisent les performances potentielles IOPS maximales à celles du cas le plus pessimiste, soit 120 IOPS pour un lecteur à 7 200 tr / min.
Ce qui correspond exactement à vos chiffres. Les E / S aléatoires avec des blocs de petite taille constituent un facteur de perte de performances absolu pour les disques durs en rotation, raison pour laquelle il s'agit également d'une métrique pertinente.
En ce qui concerne les E / S purement séquentielles, un débit de l'ordre de 150 Mo / s n'est pas déraisonnable pour les disques durs à rotation modernes. Mais très peu d'E / S du monde réel sont strictement séquentielles, de sorte que dans la plupart des situations, les performances d'E / S purement séquentielles deviennent davantage un exercice théorique qu'un indicateur des performances du monde réel.
la source
4K fait référence à une E / S aléatoire . Cela signifie que le disque est invité à accéder à de petits blocs (taille de 4 Ko) en des points aléatoires du fichier de test. C'est une faiblesse des disques durs; la capacité d'accéder aux données à travers différentes régions du disque est limitée par la vitesse à laquelle le disque tourne et par la rapidité avec laquelle les têtes de lecture-écriture peuvent se déplacer. Les E / S séquentielles , où les blocs consécutifs sont accédés, sont beaucoup plus faciles car le lecteur peut simplement lire ou écrire les blocs lorsque le disque tourne.
Un lecteur SSD n’a pas de problème avec les E / S aléatoires, il suffit de rechercher où les données sont stockées dans la mémoire sous-jacente (généralement, la mémoire flash NAND, 3D XPoint ou même la DRAM) et la lecture. ou écrivez les données à l'emplacement approprié. Les disques SSD sont entièrement électroniques et n'ont pas besoin d'attendre sur un disque en rotation ou une tête de lecture-écriture en mouvement pour accéder aux données, ce qui les rend beaucoup plus rapides que les disques durs à cet égard. C'est pour cette raison que la mise à niveau vers un SSD augmente considérablement les performances du système.
Remarque secondaire: les performances d'E / S séquentielles sur un SSD sont souvent beaucoup plus élevées que sur un disque dur. Un SSD typique comporte plusieurs puces NAND connectées en parallèle au contrôleur de mémoire flash et peut y accéder simultanément. En répartissant les données sur ces puces, on obtient une configuration de lecteur similaire à RAID 0, ce qui augmente considérablement les performances. (Notez que de nombreux nouveaux disques, en particulier les moins chers, utilisent un type de NAND appelé TLC NAND, qui est généralement lent lors de l’écriture des données. ralentir considérablement une fois que le tampon est plein.)
la source