web-dev-qa-db-fra.com

Pourquoi mon disque dur est-il si lent lors des tests de vitesse "4K"?

Quel est le problème avec ma vitesse à 4K? Pourquoi est-ce si lent? Ou est-ce censé être comme ça?

Screenshot of benchmark

Est-ce que ça va? Pourquoi ai-je une vitesse aussi basse à 4K?

46
User6539

Ce que vous rencontrez est typique des disques durs mécaniques et l’un des principaux avantages des disques SSD: les disques durs offrent terrible des performances d’accès aléatoire.

Dans CrystalDiskMark, "Seq" signifie séquentiel accès alors que "4K" signifie aléatoire accès (en morceaux de 4ko à la fois, car les octets seraient beaucoup trop lents et irréalistes.1).


Définitions

En gros, vous pouvez accéder à un fichier de deux manières différentes.

Accès séquentiel

séquentiel accès 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'octet n ° 4"1.

Accès aléatoire

Aléatoire l'accès signifie qu'il n'y a pas de motif évident pour les lectures ou les écritures. Cela ne doit pas signifier vraiment au hasard; 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 telles que "lire le bloc n ° 56, lire le bloc n ° 5463, lire le bloc n ° 14, lire le bloc n ° 5"

Blocs

Je l'ai mentionné blocs deux ou trois fois. Parce que les ordinateurs traitent avec des tailles aussi grandes (1 Mo ~ = 1000000 B), même un accès séquentiel est inefficace si vous devez demander au lecteur chaque octet - il y a trop de bavardage. En pratique, le système d'exploitation demande bloque des données du disque à la fois.

A bloc n'est qu'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 une taille 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 du lecteur de prévoir ce qui sera nécessaire par la suite et de charger un gros bloc à 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 consistent en un certain nombre de disques métalisés lourds tournant autour desquels des 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.

 Diagram of HDD internals
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 sous le nom de cherche 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 dommages.

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).

Au hasard

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 fois plus lent. Des milliers de fois plus lent, en fait.

SSD

Heureusement, nous avons maintenant une solution: les SSD.

Un SSD, un lecteur SSD, est, comme son nom l’indique, SSD. Cela signifie qu'il n'a aucune pièce mobile . De plus, la manière dont un disque SSD est aménagé signifie qu'il existe3) pas besoin de rechercher l'emplacement d'un octet; déjà sait. 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 que nous ne sommes pas en mesure de prévoir ce qui va suivre et préchargement ces données avant d'être demandées.


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 fait uniquement référence au déplacement du bras. L’attente de la rotation des données sous la tête est latence rotationnelle en plus du temps de recherche.

3 Techniquement, ils ont des tables de correspondance et un remappage pour d'autres raisons, par exemple. usure nivellement, mais ceux-ci sont complètement négligeables par rapport à un disque dur ...

84
Bob

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 sont impliqués:

  • Seek latency, pour que la tête de lecture/écriture «recherche» la piste circulaire (ou le «cylindre») correct sur le plateau, y compris le temps nécessaire à la tête pour se stabiliser sur la piste et se synchroniser avec les données stockées sur le plateau
  • Latence rotationnelle, pour que le plateau en rotation situé sous la tête de lecture/écriture tourne afin que la partie souhaitée de la piste (le "secteur") passe sous la tête

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. La latence rotationnelle est également fonction de la vitesse de rotation du plateau. De plus, ils n'ont pas beaucoup changé au cours des dernières décennies. Les fabricants utilisaient réellement les 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 lecteur d'ordinateur portable typique tourne à 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). Étant donné que en moyenne, le disque doit faire un demi-tour avant que le secteur souhaité passe sous la tête, cela signifie que nous pouvons nous attendre à ce que le disque puisse traiter environ deux fois plus de demandes d'E/S par seconde, en supposant que cette

  • soit la recherche est effectuée pendant la rotation du disque (c’est probablement une valeur sûre pour les disques durs où I/O implique une recherche), et la latence de recherche n’est pas plus longue que la latence de rotation de chaque entrée/sortie
  • ou la tête se trouve déjà sur le bon cylindre, causant l’entraînement de ne pas avoir besoin de chercher (ce qui est un cas spécial de ce qui précède, avec une latence de recherche de zéro)

Nous devrions donc pouvoir nous attendre à environ 200 E/S par seconde si les données auxquelles on demande 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 " IOPS performance" du disque dur; cela, et non les performances d'E/S séquentielles, est généralement le facteur limitant dans les systèmes de stockage réels. (C’est une des principales raisons pour lesquelles les disques SSD sont tellement plus rapides à utiliser: ils éliminent la latence rotationnelle et réduisent considérablement la latence de recherche, car le mouvement physique de la tête de lecture/écriture devient une recherche de table dans les tables de couche de mappage flash, qui sont stockés é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, si possible, afin d’améliorer les performances. S'il existe un vidage de cache explicite ou une barrière d'écriture , 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 en l’absence de cache disque, soit parce qu’il n’existe pas (ce qui est rare aujourd’hui sur les systèmes de type bureau), soit parce que le logiciel le contourne délibérément (ce qui est souvent fait lors de la mesure des performances d’entrée/sortie). Ces deux solutions réduisent les performances IOPS potentielles maximales à celles du cas le plus pessimiste, soit 120 IOPS pour un lecteur à 7 200 tr/min.

  • À 100 IOPS à 4 Ko par E/S, nous obtenons une performance d'environ 400 Ko/s.
  • À 200 IOPS à 4 Ko par E/S, nous obtenons une performance d'environ 800 Ko/s.

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 moderne. 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 académique qu'un indicateur de performance du monde réel.

2
a CVn

4K se réfère à random I/O . 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. 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. Les disques avec TLC NAND utilisent souvent un petit tampon de NAND plus rapide pour offrir des performances plus élevées pour des opérations d’écriture plus petites, mais peuvent ralentir considérablement une fois que le tampon est plein.)

2
bwDraco