Question

Quelle est la différence entre écriture séquentielle et écriture aléatoire en cas de: - 1) les systèmes à base de disque 2) SSD [Device Flash] systèmes basés

Lorsque l'application écrit quelque chose et les informations / données doit être modifié sur le disque alors comment pouvons-nous savoir si elle est une écriture séquentielle ou un write.As au hasard jusqu'à ce point une écriture ne peut pas être distingué comme « séquentielle » ou « aléatoire » .La écriture est juste et tamponne ensuite appliqué sur le disque quand on videra le tampon.

S'il vous plaît me corriger si je me trompe.

Était-ce utile?

La solution

Quand les gens parlent de séquentielle vs au hasard , écrit dans un fichier, ils sont généralement une distinction dessin entre l'écriture sans cherche intermédiaire ( « séquentielle »), par rapport à une modèle de recherche-écriture cache-écriture cache-écriture, etc. ( "aléatoire").

La distinction est très importante dans les systèmes à base de disques traditionnels, où chaque disque cherchent prendra environ 10 ms. l'écriture des données Séquentiellement à ce même disque prend environ 30ms par MB. Donc, si vous écrivez séquentiellement 100 Mo de données sur un disque, il faudra environ 3 secondes. Mais si vous faites 100 écritures aléatoires de 1 Mo chacun, cela prendra un total de 4 secondes (3 secondes pour l'écriture proprement dite, et 10ms * 100 == 1 seconde pour toute la recherche).

Comme chaque écriture aléatoire devient plus petit, vous payez de plus en plus d'une pénalité pour le disque cherche. Dans le cas extrême où vous effectuez 100 millions aléatoires de 1 octet écrit, vous aurez encore 3 secondes net pour toutes les écritures réelles, mais vous auriez maintenant 11,57 jours vaut la peine de chercher à faire! Il apparaît donc clairement le degré auquel vos écritures sont séquentielle par rapport peut vraiment affecter au hasard le temps nécessaire pour accomplir votre tâche.

La situation est un peu différent quand il vient à clignoter. Avec le flash, vous ne disposez pas d'une tête de disque physique que vous devez vous déplacer. (C'est là que les 10ms cherchent coût provient d'un disque traditionnel). Cependant, les périphériques flash ont tendance à avoir de grandes tailles de page (la plus petite taille de page « typique » est d'environ 512 octets selon wikipedia et 4K formats de page semblent être communs aussi bien). Donc, si vous écrivez un petit nombre d'octets, le flash a toujours en tête que vous devez en lire une page entière, modifiez les octets que vous écrivez, puis écrire de nouveau la page. Je ne connais pas les chiffres caractéristiques pour le flash du haut de ma tête. Mais la règle de base est que le flash si chacun de vos écritures est généralement comparable en taille à la taille de la page de l'appareil, alors vous ne verrez pas beaucoup de différence de performance entre les écritures séquentielles et aléatoires. Si chacun de vos écritures est faible par rapport à la taille de la page de l'appareil, vous verrez certains frais généraux lorsque vous faites des écritures aléatoires.

Maintenant, pour tous ce qui précède, il est vrai que sur la couche d'application est bien caché. Il y a des couches dans le noyau, contrôleur de disque / flash, etc., qui pourraient par exemple intervenir cherche non évidente au milieu de votre écriture « séquentiel ». Mais dans la plupart des cas, écrit que « ressemble » séquentielle à la couche d'application (cherche pas, beaucoup d'E / S continue) auront des performances séquentielle écriture pendant l'écriture que « ressemble » au hasard sur la couche d'application aura le (généralement plus) les performances en écriture aléatoire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top