Re: remplacement de la RAM par du disque dur: variation du temps d'accès
Luc Habert wrote:
> Linux ne s'amuse pas à swapper pour le plaisir. Avec la connaissance de
> ton algorithme, tu peux le programme de sorte qu'il n'accède pendant une
> longue tranche de temps qu'à un bloc de 500Mo sur les 100Go de son espace
> mémoire virtuel, et alors tu vas vite te retrouver avec cette tranche
> présente en mémoire physique et tout le reste partit dans le swap, et à
> partir de là, tout va rouler.
>
> Et ça te facilite hallucinement la tache d'implémentation, de laisser l'OS
> faire le boulot.
Merci pour ta réponse.
Je ne suis pas sûr que cela soit la meilleure façon de faire.
En effet, voici de manière imagée ce que j'ai à réaliser: je dispose de n
(ex: 200) tableaux T de taille m (ces m tableaux correspondant chacun à une
taille de 500 Mo), et je fais des opération compliquées sur p éléments de
chacun des tableau T de taille m: je commence pas les p premiers éléments:
1..p, puis 2..p+1, puis ainsi de suite jusqu'aux éléments m-p+1..m
Donc si je commence à traiter par exemple le tableau n=17, qui est
complètement sur le swap, et que je fais une opération sur les p premiers
éléments (ex: moyenne arithmétique), l'OS va aller les chercher sur le
disque, et les mettre en RAM (éventuellement virer quelque chose qui y
était déjà). Mais quand je vais traiter les éléments 2..p+1, il va devoir
aller chercher T[p+1] sur le swap, et ainsi de suite. Si m très grand
devant p, cela va faire un paquet d'accès disque. Alors que si je libère la
mémoire allouée jusqu'à présent, et que je charge en mémoire l'intégralité
du tableau m de 500 Mo, je vais pouvoir réaliser l'opération sur le tableau
sans un seul accès disque: donc ça va être plus rapide.
Es-tu d'accord avec ce que je dis?
Dans ce cas, cela voudrait dire que je n'aurais pas à utiliser
mmap/msync/munmap, mais plutôt à stocker mes structures de données dans des
fichiers, et d'écrire et lire dedans. Comme dit dans un précédent post, là
j'aurais 200 fichiers de 500Mo. Je ne vois pas ce que pourrait m'apporter
mmap/mync/munmap ici.
Et alors, a priori même si mes fichiers ne sont pas contigus sur le disque,
cela ne devrait pas prendre un temps très grand. Comme suggéré par Rémi
Moyen, je pourrais utiliser deux threads: un qui lit ou écrit les résultats
des calculs, et un qui calcule pendant ce temps-là.
Cordialement,
Julien
--
"Allez, Monsieur, allez, et la foi vous viendra." (D'Alembert).
|