Comment «permuter» à nouveau la mémoire du fichier d'échange à la mémoire physique dans Windows à la fois (comme le remplacement de Linux)

10

Existe-t-il un moyen de rééchanger (pour remettre toutes les données de la mémoire qui ont été placées dans le fichier d'échange (ou d'échanger, selon vos préférences)) la mémoire sur un PC Windows?

Sous linux, on peut facilement le faire avec le swapoff / dev / sdaX, où X est la partition de swap. Sur windows, il semble me demander de redémarrer à chaque fois ..

La raison pour laquelle j'aimerais faire cela, c'est que, même si l'échange des données dans le fichier d'échange me permet de jouer à un jeu gourmand en ressources dans un ram physique, lorsque j'arrête le jeu, tous les autres programmes s'exécutent lent. C'est ou bien sûr normal; tous les programmes ont été poussés dans le fichier d'échange parce que ma mémoire RAM était trop petite, et tout accès à la mémoire de ces programmes après le jeu se heurte à des erreurs de page matérielles, avec des retards importants et une certaine frustration en conséquence.

Cependant, cette frustration pourrait facilement être évitée, en permettant simplement au PC de copier toutes les données dans la mémoire physique pendant une minute environ, puis de reprendre le travail sur un PC fonctionnant rapidement! (plutôt que d'avoir à endurer la lenteur pendant le travail)

Merci d'avance pour tout conseil à ce sujet!

Sincères amitiés

Arnout
la source
Ce que vous voulez, c'est un "hyperviseur" avec plusieurs copies de Windows exécutées dessus. Vous suspendez l'un et suspendez l'autre. Cela se fait beaucoup avec d'autres systèmes, mais je ne suis pas sûr qu'il existe un hyperviseur qui puisse le faire pour Windows.
Daniel R Hicks

Réponses:

6

Malheureusement non. De la façon dont le système de mémoire virtuelle Windows fonctionne, de nombreuses pages ne peuvent tout simplement pas être mappées tant qu'elles ne sont pas défaillantes et ne peuvent être stockées en mémoire que si elles sont mappées. Windows doit donc attendre que les pages soient accessibles.

David Schwartz
la source
Peut-être qu'un processus tiers suffisamment privilégié pourrait essayer d'accéder à ces pages pour qu'elles fassent défaut?
badp
Il ne serait pas très utile pour un autre processus d'accéder aux pages. Vous en avez besoin dans les processus des applications que vous essayez d'utiliser.
Jamie Hanrahan
À bien y penser, cela pourrait être fait ... en quelque sorte. Vous devez injecter un thread distant dans le processus cible. Ce thread ferait ensuite VirtualQuery sur l'espace d'adressage, puis lirait simplement chaque page privée de processus. Cependant, il n'y a aucun moyen de faire la distinction entre les pages qui étaient dans la mémoire RAM et qui ont été paginées plus tard, par rapport aux pages qui n'ont jamais été paginées en premier lieu. Il n'y aurait également aucun moyen d'identifier les pages dont le processus n'aura plus jamais besoin. Donc, vous pagineriez dans beaucoup de choses que vous n'aviez pas à faire.
Jamie Hanrahan
@JamieHanrahan Il semble que cela fonctionnerait.
David Schwartz
1

Malheureusement, il n'y a pas une telle option.

La seule façon de diminuer l'échange dans Windows est d'augmenter la RAM physique.

harrymc
la source
Ou désactivez entièrement l'échange. Pas nécessairement une chose Windows, mais sur mes machines Linux / BSD, je désactive toutes les formes de permutation rotationnelle car cela ne sert à rien, et quand les choses commencent à l'utiliser, au lieu de frapper une limite stricte, elles ralentissent tout.
killermist
1
La désactivation du fichier d'échange ne désactivera pas la pagination sur le disque. Il ne désactivera que la sortie de page de l'espace d'adressage privé engagé. Le contenu du fichier mappé en mémoire sera toujours paginé dans et hors.
Jamie Hanrahan