Mengapa Windows 7 menggunakan file halaman ketika ada RAM fisik gratis?

43

Saya menggunakan Windows 7 64 bit dengan ram 8G. Setelah beberapa penggunaan, saya merasa Windows semakin lamban. Drive itu meronta-ronta. Ketika saya melihat monitor sumber daya dan aktivitas disk, saya melihat beberapa contoh penggunaan file halaman (c: \ pagefile.sys). Saya memeriksa memori fisik dan saya melihat sekitar 2,3G memori yang tersedia dan 700M bebas memroy.

Mengapa Windows tidak menggunakan lebih banyak memori bebas dan lebih sedikit file halaman? Apakah perlu meninggalkan beberapa x ram gratis, berapa harganya? Apakah ini persentase ram fisik?

Rencana saya adalah mendapatkan lebih banyak ram dan SSD untuk drive utama. Sementara itu saya menderita kinerja yang lambat.

Tony_Henrich
sumber
1
Hanya karena menulis / membaca ke file halaman tidak berarti kita menggunakannya, mungkin saja memperbarui sehingga dapat membuang memori lebih cepat jika ada permintaan yang tiba-tiba. Saya merekomendasikan menjalankan monitor kinerja atau melakukan diagnosa yang mendalam dan melihat apa yang menyebabkan kelesuan.
Scott Chamberlain
Memiliki lebih dari 8GB RAM tidak akan meningkatkan kinerja di 99. (9)% kasus. Sudahkah Anda mengisikan mobo Anda penuh dengan chip RAM frekuensi rendah / latensi tinggi yang murah? Mengganti mereka akan menjadi ide yang lebih baik daripada menambahkan lebih banyak.
kotekzot
3
@ kotekzot Itu tergantung. Saya biasanya menemukan latensi RAM agak diabaikan di sebagian besar kemacetan. Jika dia memiliki cukup memori sehingga dia tidak harus menunggu aplikasi yang akan dibuka ketika dia alt-tab melalui semua itu, maka kemacetan terbesar berikutnya oleh beberapa urutan besarnya hampir selalu harddisk, dan SSD akan memperbaikinya dengan benar naik.
Darth Android
@Jika saya memiliki lebih banyak ram, saya dapat meletakkan file halaman di ramdisk yang jauh lebih cepat daripada akses HD. Ini adalah tingkat workstation laptop Dell, jadi saya yakin komponennya tidak murah. Saya sadar bahwa laptop memiliki hard drive yang lebih lambat dan subsistem IO daripada desktop.
Tony_Henrich
1
Tolong jangan menaruh file halaman Anda pada RAMdisk. Itu hanya akan membuat sistem mengalami lebih banyak kesalahan halaman. Ya, jika mereka ke pagefile-on-RAMdisk mereka akan diselesaikan lebih cepat daripada jika itu telah pergi ke disk nyata, tetapi tidak memilikinya sama sekali masih jauh lebih cepat; juga, banyak kesalahan halaman yang meningkat adalah memetakan file, dan itu tidak akan dibantu oleh RAMdisk sama sekali.
Jamie Hanrahan

Jawaban:

33

Pertama, jangan letakkan file halaman Anda di SSD. Sementara SSD menjadi lebih baik tentang leveling keausan, file halaman ditulis untuk sering dan itu akan menurunkan SSD Anda jauh lebih cepat daripada penggunaan umum.

Apa yang banyak orang tidak mengerti adalah bahwa windows tidak pernah benar-benar memiliki memori bebas. Ada beberapa MB yang disimpan bebas untuk kebutuhan burst, tetapi sebaliknya, perbedaan antara memori aplikasi yang sedang digunakan dan total memori umumnya dikonsumsi oleh apa yang dikenal sebagai memori "siaga".

Sistem memori

Ini adalah halaman memori yang dapat dibuang jika diperlukan (memori siaga adalah cache besar, besar), jadi dari sudut pandang aplikasi, itu tersedia, tetapi tidak dengan cara apa pun tidak digunakan. Biasanya, mereka berfungsi sebagai cache disk, atau cache pagefile.

Tujuan Windows adalah untuk menjaga data yang paling mungkin digunakan dalam cache siaga ini, berdasarkan pola penggunaan. Untuk menggunakan contoh yang dibuat, mari kita bandingkan nilai relatif dari memori pribadi dari suatu program seperti Pembaruan Windows (biasanya dikonfigurasikan untuk dijalankan seminggu sekali), di atas caching konten desktop Anda dalam memori siaga ini:

Untuk sebagian besar waktu, Pembaruan Windows sedang tidur. Ini menahan ingatan dan sebagian besar, sama sekali tidak melakukan hal yang berharga dengan itu sambil menunggu jadwal untuk datang. Konten folder desktop Anda di sisi lain, mungkin akan ditanya secara terus-menerus, terutama jika Anda ingin menyimpan file ke dalamnya.

Dalam hal ini, apa yang akan dilakukan Windows adalah mengeluarkan memori yang dialokasikan untuk Pembaruan Windows (walaupun memori tidak "penuh", dan menggunakan ruang yang tersedia dalam RAM untuk menyimpan konten desktop Anda. Ini menghasilkan kinerja yang lebih baik untuk kamu.

Windows membuat ribuan keputusan ini dan mengelola cache disk untuk ratusan file yang terus-menerus ditulis oleh layanan latar belakang sambil mencoba menyeimbangkan ini dengan tuntutan memori aplikasi aktif. Terkadang ada kesalahan sesaat, dan kita mungkin harus menunggu sampai data halaman kembali ke memori ketika kita beralih ke aplikasi yang telah tidur di latar belakang untuk sementara waktu. Tetapi apa yang harus Anda pikirkan adalah jika aplikasi itu benar-benar tersimpan dalam memori, berapa banyak aplikasi lain yang pada gilirannya akan macet menunggu disk menulis dan membaca selesai, atau mereka sendiri dipaksa untuk keluar? Bagaimana jika itu adalah aplikasi yang Anda gunakan sementara itu?


Aplikasi sering mengalokasikan halaman memori yang jarang digunakan, seperti kode start-up (digunakan sekali dan kemudian tidak diperlukan), kode shut-down (digunakan sekali dan kemudian tidak diperlukan), atau memperbarui kode. Tidak praktis untuk menyimpan semua ini di memori ketika ada kegunaan yang jauh lebih penting, jadi setelah Windows mengidentifikasi bagian-bagian kode yang belum diperlukan untuk operasi aplikasi saat ini, ia dengan senang hati mengeluarkan bagian-bagian itu ke pagefile, bahkan jika secara teknis bisa menyimpannya dalam memori.

(Dan sebenarnya, tergantung pada aplikasinya, sistem mungkin sering mengalokasikan lebih banyak memori daripada yang sebenarnya, berharap sebagian besar berakhir berakhir. Jika Anda melihat rincian kerusakan memori, biaya "Komit" atau "Komit" adalah berapa banyak memori yang telah dialokasikan Windows ke berbagai aplikasi. File halaman digunakan untuk memberikan jaminan untuk memori ini, bahkan jika tidak memiliki cukup RAM fisik untuk menutupnya.)


Saya baru saja memperhatikan bahwa Anda membuat perbedaan antara memori yang tersedia dan bebas dalam pertanyaan Anda; Saya minta maaf jika Anda merasa diceramahi dan sudah tahu bedanya. Idealnya, memori bebas selalu 0. Namun, sementara memori siaga adalah memori yang dapat dilepaskan, namun tidak selalu memori yang dapat dilepaskan dengan cepat. Jika saya mencoba menulis file 1GB ke disk, windows akan memasukkannya ke dalam cache disk di memori jika itu bisa, dan kemudian secara perlahan menuliskannya ke harddisk di latar belakang. Jika suatu aplikasi perlu meminta 50 MB memori tambahan, tetapi tidak ada yang tersedia karena cache disk yang besar ini masih dibilas, maka aplikasi akan hang sampai tersedia. Menjaga penyangga kecil tetap ada memungkinkan sistem untuk menyelesaikan masalah ini dengan jeda minimal dari sudut pandang pengguna.

Darth Android
sumber
6
@ FrankComputer Lihat tangkapan layar yang saya posting untuk sistem kerja 8GB saya: 6300MB sedang digunakan, 1700MB disk standby / cache, 42 MB gratis. Melihat sistem rumah saya (memori 32GB), Anda sebenarnya benar, tetapi hanya pada ambang yang salah: 9.2GB sedang digunakan, cache disk 14.5GB, bebas 8,6GB. Anda akan memiliki memori bebas jika windows kehabisan cache, tetapi ambang itu cukup tinggi. Windows tidak terus-menerus bertukar karena cache disk tidak menukar ruang - cache secara pasif ketika file diminta dan tidak ada dalam cache. Anda tidak memperhatikan waktu penarikannya dari cache dan tidak ada aktivitas HDD.
Darth Android
8
@ FrankComputer: Jika sistem Anda berkinerja baik, itu bukan karena memori bebas. Memori bebas adalah memori yang tidak digunakan sistem , dan itu tidak memiliki efek lebih pada kinerja daripada memori yang ada di meja Anda. Satu-satunya cara untuk meningkatkan kinerja dengan memori adalah dengan menggunakannya , jadi jika gratis, itu tidak digunakan untuk meningkatkan kinerja. Membuat lebih banyak memori bebas berarti menggunakan lebih sedikit, membuat kinerja lebih buruk.
David Schwartz
1
@Tony_Henrich Menonaktifkan file halaman buruk. Sangat buruk. (Memindahkan pagefile ke ramdisk secara efektif sama dengan menonaktifkannya. Windows tidak dapat memindahkan data yang tidak perlu segera kehabisan memori). Banyak program meminta memori yang tidak langsung mereka butuhkan, tetapi mungkin perlu di masa depan. Biasanya, windows mengalokasikan memori ini pada file halaman, dan tidak melakukan apa-apa. Sebagai contoh. Server MSSQL mengalokasikan 8GB ram saat dijalankan. Bahkan untuk 0 basis data. Hanya karena. Jika Anda meletakkan pagefile di ramdisk, Anda akan membuang banyak RAM yang bisa digunakan untuk cache
Darth Android
1
@ Tony_Henrich Saat ini, windows secara optimal mengelola pagefile dan RAM Anda, mengingat cara Anda menggunakan sistem Anda. Satu-satunya perbaikan yang dapat Anda lakukan adalah: Tambahkan lebih banyak memori, atau pindahkan OS Anda ke SSD. Mengobrol dengan pagefile Anda akan menurunkan kinerja sistem Anda secara keseluruhan, atau memengaruhi stabilitas sistem Anda paling buruk.
Darth Android
1
Anda sedang menjelaskan apa yang Windows lakukan dengan memori. Jika saya memiliki banyak memori bebas maka Windows harus menggunakannya, terlepas dari apakah aplikasi sedang tidur atau tidak melakukan apa-apa. Apa salahnya menyimpannya di memori ketika memori tersedia. Setelah memori menjadi rendah, maka Windows dapat digunakan jika file halaman. Menggunakan file halaman menyebabkan keausan pada drive. Tidak ada keausan dalam menggunakan memori. Kedua, saya menggunakan SSD untuk file halaman saya. Sementara SSD hidup lebih kecil dari hard drive dan ada keausan dengan banyak tulisan, itu masih tidak sampai beberapa bulan. Ini masih bertahun-tahun.
Tony_Henrich
4

Ini disebut perencanaan ke depan.

Menulis halaman memori ke pagefile ketika masih ada banyak RAM adalah hal yang baik. Segera setelah suatu program meminta lebih banyak memori daripada yang gratis, OS dapat mulai membersihkan ruang sesegera mungkin. Lebih baik bersiap sekarang daripada nanti.

Jika OS menunggu, maka Anda mengalami hambatan kinerja. Jika suatu program meminta lebih banyak memori daripada yang tersedia, sekarang Anda harus menunggu sampai OS menuliskan blok memori yang diubah, dan kemudian membebaskannya.

surfasb
sumber
Dengan 16G + dan dengan program ringan, saat-saat ketika sebuah program meminta lebih banyak memori daripada yang gratis jauh lebih sedikit daripada seringnya menggunakan file halaman. Jadi untuk kasus-kasus itu, lebih baik menggunakan beberapa memori bebas dan lebih sedikit dari file halaman. Tidak ada satu solusi yang cocok untuk semua kasus.
Tony_Henrich
1
Saya pikir Anda tidak mengerti. Tidak harus satu atau yang lain. Windows dapat menulis untuk membebaskan memori dan menulis ke file halaman. Ini tidak seperti menulis ke file halaman atau menulis ke memori.
surfasb
1
Tetapi dengan mencoba membuat rencana ke depan, bukankah Windows berpotensi mengisi cache on-chip HDD / SDD — membuat operasi penulisan / pemuatan file secara bersamaan lebih lambat? Pra-swapping RAM ini memang terdengar seperti ide yang bagus, tetapi sepertinya itu secara tidak sengaja menempatkan beban pada sistem pada saat-saat buruk.
binki
1
@binki: Ya, itu memang mengganggu waktu baca / tulis disk, tetapi jika saya ingat, mereka menggunakan prioritas yang lebih rendah, jadi baca-tulis lain harus dilakukan terlebih dahulu secara umum.
Mooing Duck
2

File halaman saya dimatikan selama 7 tahun terakhir. Sebenarnya ini adalah hal pertama yang saya lakukan setelah instalasi baru. Tidak pernah punya masalah dengan itu. (Sebenarnya saya punya satu permainan yang disebut "pencarian titan" melakukan pemeriksaan yang sangat bodoh saat startup sehingga saya membuat pagefile 4 MB hanya untuk membuatnya bahagia dan mematikan PF nanti). Adapun pertanyaan aslinya. Windows menggunakan RAM kami untuk cache I / O cache. Untuk beberapa alasan ia berpendapat bahwa cache disk sama pentingnya dengan kode dan data program yang aktif. Dan tidak ada cara untuk membatasi ukuran cache disk. Itu ada di sana dengan desain dan kita tidak bisa berbuat apa-apa ... Oh, tunggu! Kita dapat! Matikan saja pagefile. Menjalankan aplikasi yang berat pada RAM? Beli lebih banyak RAM atau tutup satu aplikasi sebelum meluncurkan yang lain. Anda dapat menggunakan Process Explorer untuk melihat berapa banyak memori yang digunakan pada saat tertentu.

Anton Duzenko
sumber
1
Menyingkirkan pagefile tidak akan mematikan cache disk.
Jamie Hanrahan
1
Anda menulis: "[Disk cacheing] ada dengan desain dan kita tidak bisa melakukan apa-apa. Oh, tunggu! Kita bisa! Matikan saja pagefile." Nah, mematikan pagefile tidak ada gunanya tentang cache disk, jadi apa yang Anda katakan? Itu ide yang bodoh, karena memaksa OS untuk menjaga semua komit pribadi dalam RAM selamanya setelah disentuh. Ini membuat lebih sedikit ruang untuk memetakan memori virtual (seperti kode), sehingga barang-barang harus dipetakan lebih banyak. Cache disk proaktif (superfetch) menggunakan apa yang tersisa setelah semua hal di atas, sehingga tidak meningkatkan paging keduanya.
Jamie Hanrahan
1
Saya tidak pernah mengatakan (atau berpikir) bahwa mematikan pagefile adalah ide Anda, jadi saya tidak mengatakan apa-apa tentang "ide Anda". Oh, sementara saya di sini: "Untuk beberapa alasan [Windows] menganggap cache disk sama pentingnya dengan kode dan data program yang aktif" benar-benar salah. Superfetch hanya menggunakan halaman yang ada di daftar Siaga dan karenanya sudah menjadi bagian dari " tersedia "RAM; itu tidak mengambil halaman dari kode dan data program. Dan halaman-halaman itu tetap tersedia, yaitu segera tersedia untuk kode dan data program, bahkan setelah mereka berisi data cache dari file.
Jamie Hanrahan
1
Saya tidak mengatakan hal semacam itu. (Di mana Anda mendapatkan ini?) Saya katakan, bahwa Windows tidak pernah mengeluarkan halaman apa pun untuk memberikan ruang bagi cache disk. Sebaliknya, cache menggunakan halaman yang saat ini bukan bagian dari proses dan karenanya akan terbuang sia-sia. RAM seperti sisa-sisa segera tersedia untuk kode dan data yang perlu untuk paging hal-hal di , sehingga tidak "digunakan" oleh cache, hanya "dipinjam". Jadi cache tidak mengurangi jumlah kode dan data yang dapat diolah, atau disimpan, RAM. Ref: Windows Internals oleh Solomon, Russinovich, dan Ionescu.
Jamie Hanrahan
1
Saya sudah menjawab dalam jawaban DA. Tapi apa yang baru saja kamu katakan bukanlah apa yang dia katakan. Dia mengatakan bahwa Windows akan mengeluarkan proses lama yang tidak aktif (benar). Dan dia juga mengatakan bahwa cache disk mungkin menggunakan halaman yang dibebaskan dengan demikian (juga benar). Tapi itu tidak berarti cache disk harus diutamakan. Cache disk hanya menggunakan halaman tersebut jika tidak ada prioritas lain yang membutuhkannya. Sejumlah besar pengujian telah menunjukkan bahwa ini adalah tradeoff yang bagus.
Jamie Hanrahan
1

Argumen (di sini dan di sini ) untuk menyimpan dan menggunakan file halaman bahkan jika ada cukup RAM adalah:

  • Bahkan jika ada memori bebas sekarang, mesin mungkin kehabisan memori nanti. Lebih baik untuk menjatuhkan bagian memori yang jarang digunakan ke disk terlebih dahulu.
  • Ada juga "siaga" memori yang muncul sebagai bebas tetapi sebenarnya digunakan untuk caching disk. Penting juga untuk kinerja, lebih baik memilikinya.
  • Jika Anda kehabisan RAM dengan file halaman dinonaktifkan, itu adalah crash parah.
  • Sementara 2, 4, 16 atau jumlah Gb RAM lainnya mungkin terlihat "banyak", ini mungkin tidak benar seperti yang Anda yakini. Anda perlu profil.

Dengan monitor Windows Resource, dimungkinkan untuk melihat berapa banyak RAM yang digunakan untuk caching (ditunjukkan sebagai "Siaga").

Jika Anda melihat bahwa RAM Anda sebenarnya digunakan atau dalam keadaan siaga, file halaman berguna untuk Anda. Jika kombinasi tugas Anda dan RAM yang tersedia sedemikian rupa sehingga sebagian besar memori muncul sebagai tidak digunakan ("Gratis"), saya pikir tidak perlu menggiling hard drive hanya dari rasa hormat kepada seseorang yang "lebih tahu dan berkata di sini ".

h22
sumber
-2

Semua komentar ini dan jawaban yang benar tidak ada. Matikan file halaman Anda. Tidak diperlukan dengan RAM 8GB, dan jika Anda membutuhkan lebih banyak RAM, beli saja. cukup sederhana kok.

a2552308
sumber
4
Windows cukup pintar dalam menentukan apa (tidak) untuk dimasukkan ke dalam file halaman. Dengan pengecualian pada beberapa skenario teoritis yang hampir murni, mematikannya akan merusak kinerja, bahkan dengan 8 GB RAM. Bahkan jika jawaban yang benar hilang, ini jelas bukan.
Marcks Thomas
4
Punya bukti untuk mendukung klaim "kinerja buruk" Anda? Saya menyajikan artikel MS support.microsoft.com/kb/889654
a2552308
6
Sederhananya: file halaman hanya dapat meningkatkan aktivitas disk ... dan windows tidak cukup pintar untuk tidak menggunakannya sama sekali jika memiliki banyak RAM. Pada sistem SSD, ini mungkin tidak terlalu mencolok, pada sistem gelendong ini dapat banyak mempengaruhi kinerja aplikasi. Rujuk poster asli.
a2552308
2
Bagian yang relevan dari artikel MS: "Namun, karena lebih banyak RAM ditambahkan ke komputer, kebutuhan untuk file halaman berkurang. Jika Anda memiliki cukup RAM yang diinstal di komputer Anda, Anda mungkin tidak memerlukan file halaman sama sekali, kecuali jika diperlukan oleh aplikasi tertentu. " Saya tidak dapat menemukan bagian yang relevan dari banyak artikel yang Anda tautkan, mungkin Anda bisa mengutip bagian yang relevan?
a2552308
2
Kedengarannya bagus dalam teori, bukan apa yang saya amati dalam praktiknya.
a2552308