Vitesse d'écriture dans le swap

Fermé
bizu53 Messages postés 1274 Date d'inscription samedi 30 août 2008 Statut Membre Dernière intervention 21 juin 2015 - 8 nov. 2008 à 14:04
bizu53 Messages postés 1274 Date d'inscription samedi 30 août 2008 Statut Membre Dernière intervention 21 juin 2015 - 8 nov. 2008 à 16:51
Bonjour,

Vu que l'écriture (par le système) dans le swap est d'un très bas niveau, est-ce que la vitesse d'écriture sur mon disque dur est un peu plus rapide par le swap que dans un fichier "normal" ?

En fait j'ai un programme (en C) qui travaille sur des chaînes de caractères énorme (plusieurs Go).
Ce serait pour savoir si les performances sont meilleures ou identiques en travaillant avec RAM+swap plutôt que directement sur un fichier texte ?

Merci d'avance à ceux qui sauront me répondre
A voir également:

1 réponse

Utilisateur anonyme
8 nov. 2008 à 15:36
Bonjour,

Ce qu'il faut comprendre, c'est que la vitesse de lecture/écriture est de l'ordre
de mille fois plus rapide en RAM que pour un disque quelconque. Les vitesses
sur la RAM en FSB sont de l'ordre du GigaHertz et celle d'un disque dur ide
tourne sous le MegaHertz.

Donc il est plus efficace de travailler avec le swapfile (RAM et Disque) puisque
à tous les moments ou cela se passera en RAM c'est mille fois plus rapide.

Bon il faut comprendre que tout ces chiffres ne sont qu'une approximation,
il y a 20 ans que je pas dessiné de carte mère, mais la différence entre
travailler dans la RAM et sur un disque est énorme et surtout en C.

Si tu as les moyens, achète une carte mémoire additionnel et déclare cette
plage mémoire comme un disque virtuel et déplace y ton swapfile.

Lorsque j'ai développer pour le LiMCA en C, je développait ainsi sur un disque
virtuel de RAM, compilation, linkage parce que beaucoup plus rapide de
travailler dans de la RAM.

Lupin
0
bizu53 Messages postés 1274 Date d'inscription samedi 30 août 2008 Statut Membre Dernière intervention 21 juin 2015 860
8 nov. 2008 à 16:51
Merci pour la réponse, après l'avoir lue je me suis rendu compte que je n'avais pas très bien posé mon problème.

J'ai en fait 1Go de RAM + 3Go de swap.
Dans mon programme j'utilise un fichier texte car son contenu est trop gros (>50Go :p) pour être entièrement géré en RAM du début à la fin de l'éxécution du programme.
Mon programme effectue des opérations (itératives) de modification par lecture séquentielle du fichier.

Jusqu'à maintenant (=première version de mon programme) je lisais 4octets dans le fichier, pour effectuer les manipulation en RAM, puis un fwrite() pour mettre à jour le fichier.
En fait je voudrais faire une seconde version de mon programme qui prendrait des blocs de plus de 4o (plutôt de l'ordre du gigaoctet). Pour faire moins souvent appel au fwrite().

Est-ce que ça vaut le coup que je monte à des blocs de plus d'un giga (sachant que dans mon cas ça utiliserait le swap dans ce cas) ? Ou alors le plus judicieux serait de rester à 100% en RAM sans utiliser le swap ?

Ce n'est pas ce que fait mon programme mais si ça peut aider à la compréhension de ce qu'il fait : c'est similaire à un programme de cryptage d'une chaîne de caractère, trop longue donc dans un fichier, et qu'il crypterait au fur et à mesure de la lecture de ce fichier. (Et qui recommencerait ce "cryptage" n fois au lieu d'une seule fois)
0