Biaya komit 100% penuh tetapi memori fisik hanya 60% saat tidak menggunakan file halaman

25

Saya telah menonaktifkan file halaman di sistem saya (hard disk terlalu lambat, tidak dapat langsung membeli yang baru, tidak bisa memindahkan file halaman ke partisi lain). Ketika saya melihat Monitor Sumber Daya, menggunakan aplikasi yang menuntut memori, sistem menunjukkan bahwa biaya komit hampir 100% penuh. Memang, jika saya terus menuntut lebih banyak memori, program mulai mogok karena biaya komit secara efektif mencapai 100%.

Sementara itu, sistem mengatakan saya menggunakan hanya 50-60% memori fisik dan memiliki sekitar 1GB memori yang tersedia (gratis + siaga).

Jika biaya komit adalah total memori yang sebenarnya diminta, mengapa sistem mengatakan begitu banyak memori yang gratis? Apakah memori fisik tidak digunakan oleh Windows? Apakah grafik memori salah? Apakah saya melewatkan sesuatu?

Grafik biaya komit vs grafik memori fisik Pengelola tugas

Jason Oviedo
sumber
2
Jawaban lain yang baik tentang topik ini ada di sini: brandonlive.com/2010/02/21/meururing-memory-usage-in-windows-7 .
cnst
@cnst Artikel yang sangat bagus. Ini membantu saya memahami masalah ini dengan lebih baik. Mengapa Anda tidak mempostingnya sebagai tanggapan?
Jason Oviedo
2
Tolong jangan menonaktifkan orang file halaman Anda. Ini ide yang bodoh
Milney
@ Milney Saya setuju, orang biasanya tidak harus menonaktifkan file halaman. Pada saat pertanyaan itu masuk akal bagi saya karena disk terlalu lambat, begitu banyak itu melumpuhkan sistem saya. Ini sebenarnya cukup berguna, selain memicu pertanyaan ini, respon sistem secara umum meningkat berkali-kali.
Jason Oviedo
@JasonOviedo Itu seharusnya tidak terjadi dan menunjukkan ada sesuatu yang sangat salah. Memberi sistem lebih banyak opsi TIDAK harus membuatnya lebih lambat. Sistem tidak harus menggunakan file halaman hanya karena memiliki satu. (Yang berarti ini mungkin pertanyaan XY. Pertanyaan yang tepat adalah tepatnya mengapa file halaman membuat sistem Anda lebih lambat.)
David Schwartz

Jawaban:

26

Kehabisan batas komit sementara Anda masih memiliki banyak RAM yang tersedia sama sekali tidak biasa. Baik batas komit maupun biaya komit tidak terkait langsung dengan RAM gratis atau yang tersedia.

Batas komit = ukuran file halaman saat ini + ukuran RAM.

Karena Anda tidak memiliki file halaman, batas komit lebih kecil daripada jika Anda memiliki file halaman. Tidak masalah berapa banyak RAM yang gratis . Untuk batas komit, hanya jumlah RAM yang diinstal yang penting. Anda dapat kehabisan batas komit bahkan dengan 90% RAM Anda gratis atau tersedia.

Biaya komit adalah hitungan memori virtual, bukan fisik. Misalkan program saya meminta komitmen 2 GB, tetapi hanya mengakses 0,5 GB. Sisa 1,5 GB tidak pernah rusak, tidak pernah ditugaskan ke RAM, jadi penggunaan RAM tidak mencerminkan 2 GB, hanya 0,5 GB.

Namun, "sistem komit" meningkat sebesar 2 GB karena sistem telah "berkomitmen" bahwa akan ada tempat untuk menyimpan 2 GB saya, haruskah saya benar-benar membutuhkan semuanya. Fakta bahwa pada setiap menjalankan program saya tidak akan selalu mencoba menggunakannya semuanya tidak membantu. Saya meminta 2 GB dan berhasil kembali dari panggilan itu memberi tahu saya bahwa OS "berkomitmen" - yaitu berjanji - bahwa saya dapat menggunakan banyak ruang alamat virtual. OS tidak dapat membuat janji itu kecuali ada tempat untuk menyimpan semuanya.

Jadi: kembalikan pagefile Anda, tambahkan lebih banyak RAM, atau jalankan lebih sedikit barang sekaligus. Atau kombinasi dari ketiganya. Ini adalah satu-satunya pilihan Anda untuk menghindari kesalahan "kehabisan memori" dan "kehabisan memori".

Lihat juga jawaban saya di sini (lebih lama) dan di sini (lebih lama).

Jamie Hanrahan
sumber
3
Secara khusus, sebelum Windows akan mengalokasikan memori, ia ingin dapat menjamin bahwa ia dapat memenuhi alokasi ini ketika digunakan. Bahkan jika alokasi tidak digunakan sepenuhnya Windows akan menolak untuk mengalokasikan lebih banyak jika tidak dapat membuat jaminan itu. File halaman, apakah digunakan atau tidak, menyediakan penyimpanan dukungan tambahan.
Bob
4

Seperti yang diilustrasikan oleh tes alokasi memori dalam artikel di http://brandonlive.com/2010/02/21/measuring-memory-usage-in-windows-7/ , Windows adalah jenis sistem yang akan gagal mengalokasikan memori besar. jika alokasi tersebut, bersama dengan semua alokasi sebelumnya (konsep yang disebut Microsoft sebagai "komit"), akan menjadikan total "komit" di atas jumlah memori fisik dan jumlah semua file halaman (swap).

Pertimbangkan bahwa alokasi dengan sendirinya tidak menggunakan memori yang sebenarnya (baik fisik maupun swap), sebelum membaca atau menulis yang terjadi dalam ruang alamat virtual dari proses untuk alokasi tersebut. Misalnya alokasi 2GB dengan sendirinya hanya akan mempengaruhi angka "Commit" (di Windows 7 bicara), meninggalkan "Memori Fisik" saja (sampai membaca / menulis dalam alokasi tersebut terjadi).

Sejauh desain OS berjalan, pendekatan alternatif akan selalu memungkinkan alokasi ukuran apa pun (kecuali memori yang tersedia sudah benar-benar habis), dan kemudian membiarkan aplikasi gagal pada baca / tulis sebagai gantinya. Lihat /cs/42877/when-theres-no-memory-should-malloc-or-read-write-fail untuk detail lebih lanjut.

cnst
sumber
2
Iya nih. Argumen untuk pendekatan Windows: masuk akal untuk mengharapkan programmer untuk memeriksa status malloc (atau, di Win32, VirtualAlloc). Setelah panggilan itu berhasil, program dapat mempercayai bahwa vas yang dialokasikan dapat digunakan dan akan tetap demikian hingga yang sesuai gratis atau VirtualFree. Cara lain, memori biasa membaca dan menulis (mis. Dereferencing pointer) dapat meningkatkan pengecualian akses memori. Tetapi tidak ada programmer yang mengharapkan untuk memeriksa status setelah setiap pointer dereference. Mereka tidak mengembalikan status, jadi itu harus dilakukan dengan handler pengecualian. Jelek.
Jamie Hanrahan
2

Memori yang tersedia tidak seperti yang Anda pikirkan. Itu tidak digunakan itu benar-benar file cache dari proses yang baru-baru ini dihentikan atau proses yang dipangkas yang telah dipaksa untuk memberikan sebagian memori ke proses lain. Mereka dapat dipanggil kembali ke tujuan semula. lihat lebih detail.

http://support.microsoft.com/kb/312628

Karena tidak memiliki file halaman ini sangat buruk. Windows tidak terdegradasi dengan buruk. Ingat, bahkan file yang dapat dieksekusi digunakan sebagai file swap ketika tidak ada file halaman. Bahkan jika drive lambat, lebih baik memiliki file halaman sampai Anda mendapatkan hingga 8 hingga 16 gigs memori. Beberapa orang berpikir Bahkan windows 7 dapat berjalan tanpa itu.

Saya secara teratur memberi dorongan pada mesin tua dengan melakukan beberapa hal. Bersihkan hard drive sebanyak mungkin. Salin apa pun yang Anda dapat sementara hapus dari drive ke cadangan. Hapus aplikasi yang tidak Anda butuhkan. Hapus aplikasi dapat menginstal ulang.

Ketika semua itu dilakukan defragment hard disk Anda. Pada saat itu buat ulang file halaman Anda. Ini akan menjadi yang paling dekat dengan bagian depan drive. Buat ukuran yang tetap sekitar 1,5 kali memori. Itulah aturan saya, biasanya saya telah melihat ukuran antara 1 dan 3 kali memori. Ini akan memberikan sedikit peningkatan kecepatan di tempat-tempat biasa yang akan ditempatkan.

Saya menggunakan auslogic defrager gratis (iklan untuk lebih banyak alat). Ada yang lain yang melakukan ini juga. Lihat defrager di portableapps.com. Ini mengoptimalkan disk dengan menempatkan file yang baru diakses di dekat bagian depan drive untuk akses yang lebih cepat. Ini menunjukkan di mana file halaman ditempatkan sehingga Anda dapat melihat apakah Anda memindahkannya ke 25% teratas dari drive.

Setelah itu instal ulang aplikasi dan salin kembali data Anda.

Saya akan mengatakan Anda mendapatkan 10 atau 20% peningkatan. Tetapi nilai utama adalah banyak keraguan hilang untuk pengalaman yang lebih halus.

Nelson Asinowski
sumber
3
Menggunakan beberapa pengujian, jelas bagi saya bahwa ketika disk terlalu lambat, tidak memiliki file halaman memang mempercepat sistem. Saya dapat membedakan beberapa detik dalam tugas-tugas sederhana sebagai pengalihan aplikasi.
Jason Oviedo
@Mark Anda salah. Sebagian besar sistem Windows dijalankan dengan pagefile (karena itulah cara Windows berjalan secara default, untuk alasan yang baik dan memadai) dan hampir semuanya menggunakan disk berkecepatan sama. Dan hampir tidak ada dari mereka yang menunjukkan masalah seperti itu. Masalahnya bukan "pagefile", itu karena Anda tidak memiliki cukup RAM. Harap dicatat bahwa menyingkirkan pagefile tidak menghilangkan paging ke dan dari disk - itu hanya menghilangkan satu dari ratusan file yang biasanya terlibat dalam paging.
Jamie Hanrahan