48 votes

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

Qu'est-ce qui ne va pas avec ma vitesse à 4K ? Pourquoi est-ce si lent ? Ou est-ce que c'est censé être comme ça ?

Screenshot of benchmark

Cette vitesse est-elle acceptable ? Pourquoi la vitesse est-elle si faible en 4K ?

88voto

Bob Points 58080

Ce problème est typique des disques durs mécaniques et constitue l'un des principaux avantages des disques SSD : Les disques durs ont terrible la performance de l'accès aléatoire.

Dans CrystalDiskMark, "Seq" signifie séquentiel l'accès, tandis que "4K" signifie aléatoire (par tranches de 4kB à la fois, car les octets individuels seraient beaucoup trop lents et irréalistes). 1 ).


Définitions

Il existe, en gros, deux façons différentes d'accéder à un fichier.

Accès séquentiel

Séquentiel signifie que vous lisez ou écrivez le fichier plus ou moins un octet après l'autre. Par exemple, si vous regardez une vidéo, vous la chargez 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 "read block #1, read block #2, read block #3, read byte block #4" 1 .

Accès aléatoire

Au hasard signifie qu'il n'y a pas de schéma évident pour les lectures ou les écritures. Il ne s'agit pas nécessairement d'un accès vraiment aléatoire, mais plutôt d'un accès "non séquentiel". Par exemple, si vous lancez de nombreux programmes en même temps, ils devront lire de nombreux fichiers dispersés sur votre disque.

Du point de vue du lecteur, il voit des commandes telles que "lire le bloc #56, lire le bloc #5463, lire le bloc #14, lire le bloc #5"

Blocs

J'ai mentionné les blocs à plusieurs reprises. Étant donné que les ordinateurs traitent des données de très grande taille (1 Mo ~= 1000000 B), même l'accès séquentiel est inefficace si vous devez demander au disque chaque octet individuel - il y a trop de bavardage. En pratique, le système d'exploitation demande blocs de données du disque à la fois.

A bloc est juste une plage d'octets ; par exemple, le bloc #1 peut être constitué des octets #1-#512, le bloc #2 peut être constitué des octets #513-#1024, etc. Ces blocs ont une taille de 512 octets ou de 4096 octets, selon le lecteur. Mais même en utilisant 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 le lecteur prévoit ce qui sera nécessaire ensuite, et en charge une grande partie à l'avance. Si vous avez demandé les blocs "1, 2, 3, 4", le système d'exploitation peut deviner que vous voudrez ensuite "5, 6, 7, 8", et il demande donc au lecteur de lire "1, 2, 3, 4, 5, 6, 7, 8" en une seule fois. De même, le lecteur peut lire en une seule fois sur la mémoire physique, au lieu de "chercher à 1, lire 1,2,3,4, chercher à 5, lire 5,6,7,8".

Oh, j'ai mentionné la recherche de quelque chose. Les disques durs mécaniques ont un temps de recherche très lent en raison de leur conception physique : ils sont constitués d'un certain nombre de disques métallisés lourds qui tournent, avec des bras physiques qui se déplacent d'avant en arrière pour lire le disque. Voici une vidéo d'un disque dur ouvert où l'on peut 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 : il doit attendre que le bras se déplace vers l'anneau droit ("piste") du disque, et il doit également attendre que le disque tourne sur lui-même pour que les données nécessaires se trouvent sous la tête de lecture. C'est ce qu'on appelle recherche 2 . Les bras qui tournent et ceux qui se déplacent ont besoin de temps physique pour se mouvoir, et on ne peut pas les accélérer beaucoup sans risquer de les endommager.

Cette opération prend généralement beaucoup de temps, bien plus que la lecture proprement dite. Nous parlons de plus de 5 ms juste pour arriver à l'endroit où se trouve l'octet demandé, alors que la lecture réelle de l'octet prend en moyenne environ 0,00000625 ms par octet séquentiel lu (ou 0,003125 ms par bloc de 512 B).

Au hasard

L'accès aléatoire, quant à lui, ne présente pas cet avantage de prévisibilité. Ainsi, si vous voulez lire 8 octets aléatoires, peut-être à partir des blocs "8,34,76,996,112,644,888,341", le lecteur doit "chercher 8, lire 8, chercher 34, lire 34, chercher 76, lire 76, ...". Vous remarquez qu'il faut refaire une recherche pour chaque bloc ? Au lieu d'une moyenne de 0,003125 ms par bloc séquentiel de 512 B, il s'agit maintenant d'une moyenne de (5 ms de recherche + 0,003125 ms de lecture) = 5,003125 ms par bloc. Cela représente beaucoup, beaucoup fois plus lent. Des milliers de fois plus lent, en fait.

SSD

Heureusement, nous avons maintenant une solution : les disques SSD.

Un SSD, un lecteur d'état solide est, comme son nom l'indique, état solide . Cela signifie qu'il a pas de pièces mobiles . En outre, la façon dont un SSD est disposé signifie qu'il y a (effectivement) un nombre limité d'utilisateurs. 3 ), il n'est pas nécessaire de rechercher l'emplacement d'un octet ; il existe déjà. sait . C'est pourquoi un disque SSD présente un écart de performance beaucoup plus faible entre l'accès séquentiel et l'accès aléatoire.

Il y a encore des lacunes, mais elles sont en grande partie imputables à l'incapacité de prévoir la suite des événements et à l'absence d'un système de gestion de la qualité. préchargement ces données avant qu'elles ne soient demandées.


1 Plus précisément, avec le LBA, les lecteurs sont adressés par blocs de 512 octets (512n/512e) ou de 4kB (4Kn) pour des raisons d'efficacité. En outre, les programmes réels n'ont presque jamais besoin d'un seul octet à la fois.

2 Techniquement, chercher ne concerne que la course du bras. Le temps d'attente pour que les données tournent sous la tête est de latence de rotation en plus du temps de recherche.

3 Techniquement, ils disposent de tables de recherche et de remappage pour d'autres raisons, par exemple le nivellement de l'usure, mais ces éléments sont tout à fait négligeables par rapport à un disque dur...

3voto

user Points 28521

Comme l'ont déjà souligné d'autres réponses, "4K" se réfère presque certainement à l'accès aléatoire par blocs de 4 KiB.

Chaque fois qu'un disque dur (pas un disque SSD) est sollicité pour lire ou écrire des données, il y a deux délais importants :

  • Temps de latence de la recherche, pour que la tête de lecture/écriture "cherche" la bonne piste circulaire (ou "cylindre") 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 de rotation, pour que le plateau en rotation situé sous la tête de lecture/écriture tourne de manière à ce que la partie souhaitée de la piste (le "secteur") passe sous la tête

Dans les deux cas, il s'agit d'une durée relativement constante pour un trajet donné. La latence de recherche est fonction de la vitesse à laquelle la tête peut être déplacée et de la distance à parcourir, et la latence de rotation est fonction de la vitesse à laquelle le plateau tourne. De plus, la latence de rotation est fonction de la vitesse de rotation du plateau, ils n'ont pas beaucoup changé au cours des dernières décennies. Les fabricants avaient l'habitude d'utiliser des temps de recherche moyens, par exemple dans les publicités ; ils ont pratiquement cessé de le faire lorsqu'il n'y a eu que peu ou pas de développement dans la région. Aucun fabricant, en particulier dans un environnement très concurrentiel, ne souhaite que ses produits ne soient pas meilleurs que ceux de ses concurrents.

Un disque dur de bureau typique tourne à 7200 tours/minute, tandis qu'un disque dur d'ordinateur portable typique tourne à environ 5000 tours/minute. Cela signifie que chaque seconde, il effectue au total 120 révolutions (disque de bureau) ou environ 83 révolutions (disque d'ordinateur portable). Étant donné que en moyenne le disque devra effectuer un demi-tour avant que le secteur souhaité ne passe sous la tête, ce qui signifie que l'on peut s'attendre à ce que le disque puisse traiter environ deux fois plus de demandes d'E/S par seconde, en supposant que

  • soit la recherche est effectuée pendant que le disque tourne (c'est probablement une bonne solution pour les disques durs d'aujourd'hui où les E/S impliquent une recherche), la latence de recherche n'est pas plus longue que la latence de rotation pour l'E/S en question
  • ou que la tête se trouve déjà au-dessus du bon cylindre, causant le lecteur n'a pas besoin de chercher (ce qui est un cas particulier de ce qui précède, avec une latence de recherche nulle).

On peut donc s'attendre à des performances de l'ordre de 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, ce qui fait que la latence de rotation est le facteur limitant. Dans le cas général, nous nous attendons à ce que le lecteur puisse effectuer environ 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 de la " IOPS performances" du disque dur ; c'est ce facteur, et non les performances d'E/S séquentielles, qui est généralement le facteur limitant dans les systèmes de stockage du monde réel. (C'est l'une des principales raisons pour lesquelles les disques SSD sont tellement plus rapides à utiliser : ils éliminent la latence de rotation et réduisent considérablement la latence de recherche, car le mouvement physique de la tête de lecture/écriture devient une recherche dans les tables de la couche de mappage flash, qui sont stockées électroniquement).

Les écritures sont généralement plus lentes lorsqu'une vidange de la mémoire cache est nécessaire. 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 lorsque cela est possible, afin d'améliorer les performances. S'il y a une vidange explicite de la mémoire cache ou barrière d'écriture Cette optimisation est éliminée afin de garantir que l'état des données dans le stockage permanent est conforme aux attentes du logiciel. Le même raisonnement s'applique à la lecture lorsqu'il n'y a pas de cache disque, soit parce qu'il n'en existe pas (ce qui est peu courant aujourd'hui sur les systèmes de bureau), soit parce que le logiciel le contourne délibérément (ce qui est souvent le cas lorsqu'on mesure les performances d'E/S). Dans les deux cas, les performances IOPS potentielles maximales sont réduites à celles du cas le plus pessimiste, soit 120 IOPS pour un disque de 7200 tr/min.

  • À 100 IOPS et 4 KiB par I/O, nous obtenons une performance d'environ 400 KB/s.
  • À 200 IOPS et 4 KiB par I/O, nous obtenons une performance d'environ 800 KB/s.

Il se trouve que ces chiffres correspondent presque exactement aux vôtres. Les E/S aléatoires avec des blocs de petite taille sont un véritable fléau pour les disques durs rotatifs, c'est pourquoi il s'agit d'un indicateur pertinent.

En ce qui concerne les E/S purement séquentielles, un débit de l'ordre de 150 Mo/s n'est pas du tout déraisonnable pour les disques durs rotatifs modernes. Mais très peu d'E/S réelles sont strictement séquentielles, de sorte que dans la plupart des situations, les performances d'E/S purement séquentielles deviennent plus un exercice académique qu'une indication des performances réelles.

2voto

Dj S Points 101

Le 4K fait référence à E/S aléatoires . Cela signifie qu'il est demandé au disque d'accéder à de petits blocs (d'une taille de 4 Ko) à des endroits aléatoires dans le fichier de test. Il s'agit d'une faiblesse des disques durs ; la capacité d'accéder aux données dans différentes régions du disque est limitée par la vitesse de rotation du disque et la vitesse de déplacement des têtes de lecture-écriture. E/S séquentielles où l'on accède à des blocs consécutifs, est beaucoup plus facile car le lecteur peut simplement lire ou écrire les blocs pendant que le disque tourne.

Un lecteur à semi-conducteurs (SSD) n'a pas ce problème d'E/S aléatoires, car il lui suffit de rechercher l'endroit où les données sont stockées dans la mémoire sous-jacente (généralement de la flash NAND, mais aussi de la 3D XPoint ou même de la DRAM) et de lire ou d'écrire les données à l'endroit approprié. Les disques SSD sont entièrement électroniques et n'ont pas besoin d'attendre la rotation d'un disque ou le déplacement d'une tête de lecture-écriture 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 le passage à un disque SSD augmente considérablement les performances du système.

Remarque complémentaire : les performances d'E/S séquentielles d'un disque SSD sont souvent bien plus élevées que celles d'un disque dur. Un disque SSD typique possède 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 disque semblable à RAID 0, ce qui augmente considérablement les performances. (Il convient de noter que de nombreux disques récents, en particulier les moins chers, utilisent un type de NAND appelé TLC NAND, qui a tendance à être lent lors de l'écriture des données. Les disques dotés de la technologie TLC NAND utilisent souvent une petite mémoire tampon de NAND plus rapide afin d'améliorer les performances pour les petites opérations d'écriture, mais ils peuvent ralentir considérablement une fois que cette mémoire tampon est pleine).

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X