Come "scambiare" di nuovo la memoria dal file di paging alla memoria fisica in Windows contemporaneamente (come lo swap-off di Linux)


10

C'è un modo per tornare indietro (per ripristinare tutti i dati di memoria che sono stati inseriti nel file di paging (o scambiare, qualunque cosa tu preferisca)) su un PC Windows?

Su Linux, si può facilmente farlo con swapoff / dev / sdaX, dove X è la partizione di swap. Su Windows, sembra chiedermi di riavviare ogni volta ..

Il motivo per cui mi piacerebbe farlo, è che, sebbene lo scambio dei dati nel file di scambio mi permetta di giocare a un gioco affamato di risorse completamente in ram fisico, quando interrompo il gioco, tutto il resto dei miei programmi viene eseguito lento. Questo è o ovviamente normale; tutti i programmi sono stati inseriti nel file di paging perché la mia RAM era troppo piccola e tutto l'accesso alla memoria di quei programmi dopo il gioco si imbatteva in errori di pagina, con conseguenti ritardi e qualche frustrazione.

Tuttavia, quella frustrazione potrebbe essere facilmente evitata, semplicemente consentendo al PC di copiare tutti i dati nella memoria fisica per circa un minuto, quindi riprendere a lavorare su un PC che funziona velocemente! (piuttosto che dover sopportare la lentezza mentre si lavora)

Grazie in anticipo per qualsiasi consiglio su questo!

Cordiali saluti


Quello che vuoi è un "hypervisor" con più copie di Windows in esecuzione su di esso. Si sospende l'uno e si sospende l'altro. Questo è fatto abbastanza con altri sistemi, ma non sono sicuro che ci sia un hypervisor che può farlo per Windows.
Daniel R Hicks,

Risposte:


6

Sfortunatamente no. Nel modo in cui funziona il sistema di memoria virtuale di Windows, molte pagine semplicemente non possono essere mappate fino a quando non si guastano e non possono essere archiviate in memoria a meno che non siano mappate. Quindi Windows deve attendere fino all'accesso alle pagine.


Forse un processo di terze parti sufficientemente privilegiato potrebbe tentare di accedere a quelle pagine in modo che abbiano colpa?
badp

Non sarebbe molto utile per un altro processo accedere alle pagine. Ti occorrono errori nei processi per le app che stai tentando di utilizzare.
Jamie Hanrahan,

Vieni a pensarci, potrebbe essere fatto ... in un certo senso. Dovresti iniettare un thread remoto nel processo di destinazione. Quel thread avrebbe quindi eseguito VirtualQuery nello spazio degli indirizzi e quindi avrebbe semplicemente letto ogni pagina privata del processo. Tuttavia, non è possibile distinguere tra le pagine che erano nella RAM e che sono state successivamente paginate, rispetto alle pagine che non sono mai state pagate in primo luogo. Inoltre non ci sarebbe modo di identificare le pagine di cui il processo non avrà mai più bisogno. Quindi pagheresti molte cose che non dovevi.
Jamie Hanrahan

@JamieHanrahan Sembra che funzionerebbe.
David Schwartz

1

Sfortunatamente non esiste tale opzione.

L'unico modo per ridurre lo scambio in Windows è aumentare la RAM fisica.


O disabilitare completamente lo swap. Non necessariamente una cosa di Windows, ma sulle mie macchine Linux / BSD, disabilito qualsiasi forma di scambio rotazionale perché non va bene e quando le cose iniziano a usarlo, invece di colpire un limite rigido, rallentano tutto.
assassino

1
La disabilitazione del file di paging non disabiliterà il paging su disco. Disabiliterà solo la pagina fuori dallo spazio degli indirizzi impegnati privati. I contenuti dei file mappati in memoria verranno comunque paginati dentro e fuori.
Jamie Hanrahan il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.