3 votes

L'envoi de torrents affecte-t-il la mise en cache de la mémoire vive du disque dur ?

J'ai téléchargé un grand nombre de fichiers torrent et pendant que je les envoie, j'ai remarqué que très souvent, lorsque je démarre le navigateur, il est lent et l'indicateur d'activité du disque dur est allumé. Habituellement, lorsque je démarre un programme, il est mis en cache dans la RAM et le redémarrer est très rapide, et j'ai 3 Go de RAM, de sorte qu'il reste en cache presque indéfiniment. Mais lorsque mon client torrent seeding, il semble qu'au bout d'une heure, les programmes que j'ai lancés ne sont plus mis en cache dans la RAM.

Je me suis dit que c'était peut-être dû au fait que les lectures de disque effectuées par le client torrent sont mises en cache et finissent par remplir la RAM. Mais je ne pense pas qu'elles aient besoin de l'être, puisqu'elles ne sont lues qu'une seule fois et qu'il est peu probable qu'elles soient lues à nouveau prochainement.

Mes questions sont donc les suivantes : est-ce bien ce que je pense et, dans l'affirmative, est-il possible en principe d'empêcher la mise en cache des lectures sur disque ? Je peux essayer d'éditer le code source du programme.

3voto

pele Points 9

Cela dépend du programme torrent que vous utilisez. Certains d'entre eux peuvent se comporter différemment.

Mais oui, il est possible de contourner le cache du système, car il s'agit d'un problème courant.

Si vous êtes à l'aise avec l'édition des sources (peut-être cela devrait-il être sur un autre StackExchange ), trouvez l'endroit où le programme torrent ouvre le fichier à partir du disque. Il s'agit probablement d'un appel open(). Si c'est fdopen(), alors il utilise stdlib et je ne suis pas sûr que stdlib supporte l'entrée/sortie directe.

Cet appel système prend jusqu'à trois arguments, le premier étant le nom du fichier, le deuxième des drapeaux et le troisième un masque de création de fichier facultatif. Les drapeaux seront probablement quelque chose comme O_RDWR en ce moment. Le drapeau pour "ne pas utiliser le cache du système" est O_DIRECT et vous combinez les drapeaux en les séparant par | .

Dans ce cas, le résultat de l'argument des drapeaux serait donc le suivant O_RDWR | O_DIRECT . Il suffit d'ajouter le nouveau drapeau.

Pour plus d'informations, voir

man 2 open

0voto

DublinJimbo Points 314

Ne fermez pas le navigateur :)

Le cache E/S (utilisé uniquement pour la lecture et non pour l'écriture dans un fichier), même s'il est excessif, n'entraînera pas le remplacement des pages utilisées par le programme.

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