Cara "menukar" lagi memori dari file halaman ke memori fisik di Windows sekaligus (seperti linux swap-off)

10

Apakah ada cara untuk menukar kembali (untuk mengembalikan semua data memori yang dimasukkan ke file halaman (atau menukar, apa pun yang Anda inginkan)) memori pada PC windows?

Di linux, orang dapat dengan mudah melakukan ini dengan swapoff / dev / sdaX, di mana X adalah partisi swap. Di windows, sepertinya saya diminta reboot setiap kali ..

Alasan saya ingin melakukan ini, adalah bahwa, meskipun menukar data ke file swap memungkinkan saya untuk memainkan game yang haus sumber daya sepenuhnya dalam ram fisik, ketika saya menghentikan game, semua program saya berjalan lambat. Ini normal atau biasa saja; semua program didorong ke file halaman karena RAM saya terlalu kecil, dan semua akses memori ke program-program tersebut setelah game menabrak kesalahan halaman keras, dengan penundaan besar dan beberapa frustrasi sebagai konsekuensinya.

Namun, frustrasi itu dapat dengan mudah dihindari, hanya dengan membiarkan PC menyalin semua data kembali ke memori fisik selama satu menit atau lebih, dan kemudian melanjutkan bekerja pada PC yang bekerja cepat! (Daripada harus menanggung kelambatan-saat-bekerja)

Terima kasih sebelumnya atas sarannya!

Salam

Arnout
sumber
Yang Anda inginkan adalah "hypervisor" dengan banyak salinan Windows yang berjalan di atasnya. Anda menangguhkan yang satu dan membatalkan yang lainnya. Ini dilakukan cukup banyak dengan sistem lain, tapi saya tidak yakin ada hypervisor yang dapat melakukan ini untuk Windows.
Daniel R Hicks

Jawaban:

6

Sayangnya tidak ada. Cara sistem memori virtual Windows bekerja, banyak halaman tidak dapat dipetakan sampai kesalahan dan tidak dapat disimpan dalam memori kecuali dipetakan. Jadi Windows harus menunggu hingga halaman diakses.

David Schwartz
sumber
Mungkin beberapa proses pihak ketiga yang cukup istimewa dapat mencoba dan mengakses halaman tersebut sehingga mereka melakukan kesalahan?
badp
Tidak akan ada gunanya bagi proses lain untuk mengakses halaman. Anda perlu mereka salah dalam proses untuk aplikasi yang Anda coba gunakan.
Jamie Hanrahan
Kalau dipikir-pikir, itu bisa dilakukan ... semacam. Anda harus menyuntikkan utas jauh ke dalam proses target. Utas itu kemudian akan melakukan VirtualQuery pada ruang alamat dan kemudian cukup membaca setiap halaman proses-pribadi. Namun tidak ada cara untuk membedakan antara halaman yang ada dalam RAM dan kemudian keluar, vs halaman yang tidak pernah dijajaki di tempat pertama. Juga tidak akan ada cara untuk mengidentifikasi halaman-halaman yang prosesnya tidak perlu lagi. Jadi, Anda akan mencari banyak hal yang tidak harus Anda lakukan.
Jamie Hanrahan
@JamieHanrahan Sepertinya itu akan berhasil.
David Schwartz
1

Sayangnya tidak ada opsi seperti itu.

Satu-satunya cara untuk mengurangi pertukaran di Windows adalah dengan meningkatkan RAM fisik.

harrymc
sumber
Atau nonaktifkan sepenuhnya swap. Bukan berarti Windows, tetapi pada mesin Linux / BSD saya, saya menonaktifkan segala bentuk swap rotasi karena tidak ada gunanya, dan ketika sesuatu mulai menggunakannya, alih-alih mengenai batas keras, mereka memperlambat segalanya.
killermist
Menonaktifkan pagefile tidak akan menonaktifkan paging ke disk. Ini hanya akan menonaktifkan page-out dari ruang alamat yang dikomit pribadi. Konten file yang dipetakan oleh memori masih akan dipetakan ke dalam dan ke luar.
Jamie Hanrahan