Bagaimana cara mengontrol penggunaan RAM / swap

18

Apakah ada cara (aplikasi) untuk mengontrol kebijakan penggunaan RAM / swap di tingkat aplikasi.

Saya memiliki beberapa aplikasi yang saya gunakan sepanjang waktu dan saya ingin mereka tetap di RAM sepanjang waktu dan ada juga aplikasi yang saya gunakan sangat jarang dan mereka mungkin terlempar untuk bertukar sesuai permintaan. Saya tahu bahwa windows yang dikonfigurasi secara default harus memberi saya kinerja terbaik tetapi saya ingin memeriksa apakah saya bisa mendapatkan lebih banyak :).

Saya menggunakan windows 7.

Darqer
sumber
2
+1. Saya tertarik pada metode yang bekerja untuk XP.
Xavierjazz

Jawaban:

9

Ya ada: minta program memanggil fungsi VirtualLock :

Halaman-halaman yang dikunci oleh suatu proses tetap berada dalam memori fisik sampai proses tersebut membuka atau menghentikannya. Halaman-halaman ini dijamin tidak akan ditulis ke pagefile saat dikunci.

Saya percaya fungsi SetProcessWorkingSetSize mungkin juga membantu.


Bagi orang-orang yang berpikir saya sesat bahkan menyarankan bahwa ini mungkin berguna:

Perhatikan bahwa ada alasan yang sah untuk mengunci halaman di memori. Alasan yang valid mungkin karena pengguna menjalankan pembakar CD, dan pembakar CD terus-menerus keluar dan karenanya menyebabkan buffer underrun, menciptakan coaster. Dalam situasi itu, itu akan berlaku untuk mengunci buffer memori sehingga mereka tidak paged keluar, bahkan jika itu berarti sisa komputer melambat merangkak, karena itu masih lebih baik daripada memberi pengguna coaster. Mungkin ada alasan sah lainnya juga - maksud saya adalah, meskipun biasanya tidak disarankan untuk mengunci halaman dalam memori, situasi yang valid masih ada, dan saya tidak berpikir membunuh ide itu akan membantu OP di sini.


Update: Lihatlah Process Hacker 's Reduce Working Setpilihan menu.

Mehrdad
sumber
Mungkin mengutip bit ini dari artikel akan menempatkannya dalam konteks: "Mengunci halaman ke dalam memori dapat menurunkan kinerja sistem dengan mengurangi RAM yang tersedia dan memaksa sistem untuk menukar halaman penting lainnya ke file paging. Setiap versi Windows memiliki batas pada jumlah halaman maksimum yang dapat dikunci oleh suatu proses. Batas ini sengaja kecil untuk menghindari penurunan kinerja yang parah. " (Penekanan saya)
1
@ Randolph: Saya tidak pernah merekomendasikannya , saya hanya menyebutkan bahwa, tidak seperti apa yang orang lain pikirkan, itu mungkin . Saya pribadi benci mengatakan pada OP "Mari bunuh ide Anda" - Saya pikir OP mengerti bahwa dia tidak seharusnya melakukan ini, tetapi jika dia masih mau, saya pikir dia punya hak untuk tahu bagaimana caranya. (Ada alasan mereka membuat fungsi-fungsi ini, dan saya bukan orang yang menilai apakah OP harus menggunakannya atau tidak.)
Mehrdad
Ada banyak kode di Windows yang tersisa untuk kompatibilitas. Jika ada alasan untuk memilikinya, itu saja. Seseorang dapat membandingkannya dengan fitur Shrink di SQL Server, yang tidak boleh digunakan dalam keadaan apa pun, tetapi dibiarkan karena alasan kompatibilitas. Windows 7 adalah OS modern dengan manajemen memori yang tepat, dan file halaman tidak boleh dihapus, dan program tidak boleh mencoba untuk tetap berada di memori di luar "aturan". Ini praktik yang sangat buruk dan dapat menghasilkan sistem yang tidak stabil dan / atau tidak dapat digunakan.
1
@ Randolph: (Saya melihat Anda meninggalkan analoginya.:]) Buat program kecil (seharusnya tidak lebih dari ~ 10 baris) untuk membuka proses lain dan menelepon SetProcessWorkingSetSize. Itu satu arah. Jika tentu saja, jika Anda tidak tahu apa artinya itu karena Anda bukan pengembang, maka jelas tidak banyak yang dapat Anda lakukan. Tapi itu masih mungkin, dan mengatakan itu tidak mungkin masih salah, itu hanya membutuhkan lebih banyak pengetahuan daripada yang dimiliki OP.
Mehrdad
1
@Randolph, Anda dapat mengunduh berbagai aplikasi freeware yang memaksa menjalankan aplikasi untuk semua masuk ke pagefile (dengan memanggil SetProcessWorkingSetSize di setiap proses).
Chris O
5

Satu-satunya cara saya temukan adalah menonaktifkan file halaman. Namun itu bukan solusi yang sempurna: Anda akan mendapatkan pesan kesalahan jika Anda mendekati atau melebihi batas RAM Anda, dan itu mungkin tidak menyimpan crash dumps dengan benar, jadi hidupkan kembali jika Anda perlu memecahkan masalah. Selain itu, saya telah menggunakan Win7 tanpa pagefile selama berbulan-bulan tanpa hambatan.

Pengalaman saya: Saya punya masalah dengan software piano (penggunaan RAM 1GB) yang akan di-swap setelah tidak digunakan untuk sementara waktu. Memainkan kunci piano beberapa jam kemudian akan menghasilkan kekacauan yang glitchy karena swap tidak akan dimuat ulang dengan cukup cepat untuk suara dimainkan. (Saya kemudian akan meletakkan seluruh lengan saya pada setiap kunci untuk memaksa memuat ulang!)

Jika RAM menjadi masalah, saya sarankan Anda membeli lebih banyak (mis. 8 hingga 12GB dengan Windows 7 x64). Bagi yang sadar RAM, memiliki banyak RAM adalah berkah Tuhan.

Tapi sebelumnya, Anda harus mempertimbangkan untuk mendapatkan drive SSD dan meletakkan swap Anda di atasnya. Ini akan mempercepat pemulihan swap, serta memberikan banyak manfaat sistem lainnya. RAM tidak memberikan manfaat saat tidak digunakan.

mtone
sumber
3
Melakukan. Tidak. Menghapus. Itu. Halaman. Mengajukan. Pernah.
7
Saya sudah. Telah. Menggunakan. Win7. Dengan. Halamanfile. Untuk. Bulan. Tanpa. A. Hitch.
mtone
1
Saya juga menggunakan Win7 tanpa file halaman sepanjang waktu, namun bagi saya sepertinya itu tidak cukup untuk pekerjaan saya saat ini :(
Darqer
3
@ Randolph: MS tahu apa yang mereka bicarakan, karena mereka tahu bahwa pelanggan mereka tidak selalu pro komputer. Tetapi bagi orang-orang yang benar-benar tahu persis apa yang dilakukan dan tidak dilakukan pagefile, tidak ada alasan untuk memaksa mereka melakukan praktik yang tidak mereka butuhkan.
Mehrdad
2
@ Randolph: Jika Anda mengemudi di atas batas kecepatan tanpa sabuk pengaman, Anda bisa mati dan juga membunuh orang lain, belum lagi meningkatkan biaya asuransi untuk orang lain. Hal terburuk yang dapat terjadi jika komputer Anda mengeluarkan memori adalah Anda hanya akan kehilangan sedikit waktu, tergantung situasinya. Tidakkah Anda melihat sesuatu yang sedikit (baca: banyak) salah dengan analogi di sini? Juga, sudahkah Anda menggunakan Linux / Unix? Pernah memperhatikan bagaimana mereka memberi Anda lebih dari cukup untuk digantung, tidak seperti Windows? Orang-orang masih menggunakannya - apakah itu seperti mengemudi di bawah pengaruh atau sesuatu?
Mehrdad
2

Penggunaan file halaman tergantung pada banyak faktor. Jika Anda menggunakan banyak program dan tidak memiliki RAM yang cukup untuk semuanya pada saat yang bersamaan, maka sebagian dari program tersebut (atau semua) dapat ditukar dengan file halaman.

Jika Anda memiliki 4GB RAM dan katakanlah sekitar 3GB tersedia karena kartu video dan pengguna sumber daya lain memblokir bagian dari 4GB, dan Anda hanya menggunakan beberapa program yang tidak memakan banyak memori, secara teori Anda seharusnya tidak memerlukan file swap. Namun, Windows Vista dan 7 terkenal agresif dalam menukar program ke disk.

Saya dulu memiliki pengaturan yang mengurangi swappiness Windows 7 (swappiness adalah istilah Linux tetapi juga berlaku untuk Windows, dan karena ada pengaturan registri untuk menjinakkan agresivitas Windows swapping, tampaknya Microsoft setuju dengan enggan, meskipun dengan baik. cara tersembunyi), tetapi sepertinya saya tidak dapat menemukannya lagi. Mencari itu adalah bagaimana saya berakhir di sini. Alternatif terbaik untuk pengaturan ini yang saya temukan adalah memastikan bahwa Anda menggunakan file swap ukuran tetap (saya gunakan untuk 4096-4096 pada OS 32-bit, dan 12GB pada yang 64-bit karena saya memiliki RAM sistem 6GB) pada partisi khusus. Memiliki drive 200GB 7200rpm cadangan, saya menempatkan semua partisi swap saya (windows XP, 7, 7 64-bit dan berbagai Linux) pada drive ini. Tampaknya bekerja untuk saya, tetapi YMMV.

Paul
sumber
1

Layak disebutkan: ketika windows mendeteksi Anda sering menggunakan aplikasi tertentu, itu superfetch menempatkan aplikasi tersebut ke dalam memori sehingga mereka memuat lebih cepat. Saya pikir mempercayai windows untuk melakukan hal tersebut di sini.

CreeDorofl
sumber