Neden ücretsiz fiziksel RAM varken Windows 7 sayfa dosyasını kullanıyor?


43

Windows 7 64 bit'i 8G ram ile kullanıyorum. Biraz kullandıktan sonra, Windows'un ağırlaştığını hissediyorum. Sürücü çöküyor. Kaynak izleyicisine ve disk etkinliğine baktığımda, sayfa dosyasının kullanımının birkaç örneğini görüyorum (c: \ pagefile.sys). Fiziksel belleği kontrol ediyorum ve 2.3G boş hafıza ve 700M boş hafıza görüyorum.

Windows neden daha fazla boş hafıza ve daha az sayfa dosyası kullanmıyor? Bir miktar x serbest ram bırakması gerekiyor mu, bu ne kadar olurdu? Fiziksel ram yüzdesi mi?

Planım ana sürücü için daha fazla ram ve bir SSD. Bu arada yavaş performanstan dolayı acı çekiyorum.


1
Sadece sayfa dosyasına yazması / okunması bizim kullanmamız anlamına gelmiyor, ani bir talep olması durumunda hafızayı daha çabuk boşaltabilmesi için sadece güncelliyor olabilir. Performans izleyicisi çalıştırmanızı veya derin bir tanı koymanızı ve durgunluğa neyin neden olduğunu görmeyi öneririm .
Scott Chamberlain

8GB'tan fazla RAM'e sahip olmak 99'da performansı artırmaz. (9) vakaların% 9'u. Mobo'nuzu ucuz düşük frekanslı / yüksek gecikmeli RAM yongalarıyla doldurdunuz mu? Bunları değiştirmek, daha fazlasını eklemekten daha iyi bir fikir olacaktır.
kotekzot

3
@kotekzot Bu bağlıdır. Genelde RAM latansının birçok darboğazda biraz ihmal edilebileceğini buldum. Tüm bunları aldığında başvuruların bekletilmesi gerekmediğine dair yeterli hafızası varsa, birkaç büyüklük sırasına göre bir sonraki en büyük darboğaz hemen hemen her zaman sabit sürücüdür ve bir SSD bu sorunu çözecektir. yukarı.
Darth Android,

@ Daha fazla ram varsa, sayfa dosyasını HD erişiminden çok daha hızlı olan bir ramdisk içine koyabilirim. Dell dizüstü bilgisayar iş istasyonu seviyesi, bu yüzden bileşenlerin ucuz olmadığından eminim. Dizüstü bilgisayarların, masaüstü bilgisayarlardan daha yavaş sabit sürücülere ve IO alt sistemlerine sahip olduğunu biliyorum.
Tony_Henrich

1
Lütfen sayfa dosyanızı bir RAM diskine yerleştirmeyin. Bu sadece sistemin daha fazla sayfa hatası yapmasına neden olur. Evet, RAMDisk'teki sayfalardaysa, gerçek bir diske gitmiş olduğundan daha hızlı bir şekilde çözüleceklerdir, ancak bunların hiç bulunmaması hala çok daha hızlıdır; Ayrıca, artan sayfa hatalarının birçoğu eşlenen dosyalara yapılacak ve RAMDisk tarafından hiçbir şekilde yardım edilmeyecek.
Jamie Hanrahan

Yanıtlar:


33

İlk önce, sayfa dosyanızı bir SSD'ye yerleştirmeyin. SSD'ler aşınma seviyelendirme konusunda daha iyi olsa da, sayfa dosyası sık sık yazılır ve SSD'nizi genel kullanımdan daha hızlı bozar.

Birçok insanın anlamadığı şey, pencerelerin hiçbir zaman gerçekten boş hafızası olmadığıdır. Patlama talepleri için serbest bırakılan birkaç MB vardır, ancak aksi halde aktif kullanım içi uygulama belleği ile toplam bellek arasındaki fark genellikle "bekleme" belleği olarak bilinen şey tarafından tüketilir.

Sistem belleği

Bunlar gerektiğinde boşaltılabilen hafıza sayfalarıdır (bekleme hafızası harika, büyük bir önbellektir), bu nedenle bir uygulama açısından kullanılabilir durumdadır, ancak kullanılmayan bir yöntem değildir. Genellikle, disk önbelleği veya bir sayfa dosyası önbelleği olarak işlev görürler.

Windows'un amacı, kullanım modellerine bağlı olarak bu bekleme önbelleğinde kullanılması muhtemel verileri tutmaktır. Kararlı bir örnek kullanmak için, Windows Update gibi bir programın özel belleğinin (genellikle haftada bir kez çalışacak şekilde yapılandırılmış) özel belleğinin göreceli değerini masaüstünüzün içeriğini bu bekleme belleğinde önbelleğe almakla karşılaştıralım:

Çoğu zaman, Windows Update uyuyor. Hafızayı tutuyor ve çoğunlukla, programın gelmesini beklerken onunla kesinlikle hiçbir şey yapmıyor. Öte yandan, masaüstü klasörünüzün içeriği, özellikle dosyalara kaydetmek isterseniz, sürekli sorgulanabilir.

Bu durumda, Windows'un yapacağı şey, Windows Update'e tahsis edilen belleği sayfalara ayırmaktır (bellek "tam" olmasa da) ve masaüstünüzün içeriğini önbelleğe almak için RAM'de bulunan alanı kullanın. sen.

Windows bu kararları binlerce veriyor ve yüzlerce dosyanın arka plan hizmetleri tarafından sürekli olarak yazılması için aktif disk belleği talepleriyle dengelemeye çalışırken bir disk önbelleğini yönetiyor. Bazen bir an için yanlış olur ve bir süre arka planda uyuyan bir uygulamaya geçtiğinizde verilerin tekrar belleğe kaydedilmesini beklememiz gerekebilir. Ancak, düşünmeniz gereken şey, bu uygulamanın tamamen bellekte kalması durumunda, diskin yazılmasını ve tamamlanmasını beklerken kaç tane başka uygulamanın başlatılacağı, ya da kendilerinin sayfa dışına çıkmaya zorlanacağı mı? Ya bu arada kullandığınız uygulamalar olsaydı?


Uygulamalar sık ​​sık, başlangıç ​​kodu (bir kez kullanıldıktan sonra kullanılmaz), kapatma kodu (bir kez kullanılır ve gerek duyulmaz) veya güncelleme kodu gibi çok nadir kullanılan bellek sayfalarını ayırır. Çok daha önemli kullanımlar olduğunda tüm bunları hafızada tutmak pratik değildir, bu nedenle Windows bir uygulamanın geçerli çalışması için gerekli olmayan kod bölümlerini belirlediğinde, bu bölümleri sayfa dosyasına bile olsa mutlu bir şekilde sayfalar. teknik olarak onları bellekte tutabilir.

(Ve aslında, uygulamalara bağlı olarak, sistemler çoğu zaman gerçekte olduğundan daha fazla bellek tahsis edebilir, çoğunun disk belleği kapanmasını bekler. Windows'un çeşitli uygulamalara ayırdığı bellek miktarı kadardır.Sayfa dosyası, bu belleği karşılayacak kadar fiziksel RAM olmasa bile, garantiler sağlamak için kullanılır.)


Sorunuzda boş ve boş hafıza arasında bir ayrım yaptığınızı fark ettim; Özür dilerim, eğer ders alırsanız ve farkı zaten biliyorsanız. İdeal olarak, boş hafıza her zaman 0'dır. Ancak, bekleme hafızası serbest bırakılabilen hafıza olmasına rağmen, hızlı bir şekilde serbest bırakılabilen her zaman hafıza değildir. Diske 1GB'lık bir dosya yazmaya çalışırsam, eğer mümkünse Windows onu bellekteki bir disk önbelleğine sokar ve sonra yavaşça arka planda sabit disk sürücüsüne yazar. Bir uygulamanın 50 MB ek bellek istemesi gerekiyorsa, ancak bu devasa disk önbelleği hala temizlendiğinden hiçbiri kullanılamıyorsa, kullanılabilir olana kadar uygulama askıda kalır. Küçük bir tamponu el altında tutmak, sistemin bu sorunu kullanıcının bakış açısından en az gecikmeyle çözmesine izin verir.


6
@FrankComputer 8GB çalışma sistemim için yayınladığım ekran görüntüsüne bakın: 6300 MB kullanımda, 1700 MB bekleme diski / önbellek, 42 ​​MB boş. Ev sistemime (32GB bellek) baktığımda, aslında haklısın, ama sadece yanlış eşikte: 9.2GB kullanımda, 14.5GB disk önbelleği, 8.6GB ücretsiz. Windows önbelleğe alınacak herhangi bir şey bittiyse boş belleğe sahip olursunuz, ancak bu eşik oldukça yüksektir. Windows sürekli takas yapmıyor çünkü disk önbellek yer değiştirmiyor - önbellekte dosya istenip istenmediğinde pasif bir şekilde önyükleniyor. Önbellekten çektiği zamanları görmezsiniz ve HDD etkinliği yoktur.
Darth Android

8
@FrankComputer: Sisteminiz iyi çalışıyorsa, boş hafıza yüzünden değildir. Boş bellek sistemi bellektir değil kullanarak ve masanızın üzerinde oturan bellekten daha performansına fazla etkisi olabilir. Belleği olan performansı arttırmanın tek yolu onu kullanmaktır , bu yüzden eğer ücretsizse, performansı artırmak için kullanılmaz. Belleği boşaltmak, daha az kullanmak, performansı daha da kötüleştirmek anlamına gelir.
David Schwartz,

1
@Tony_Henrich Sayfa dosyasını devre dışı bırakmak kötü. Çok kötü. (Sayfa dosyasını bir ramdisk'e taşımak etkili bir şekilde devre dışı bırakmakla aynıdır. Windows ihtiyaç duyduğu verileri hemen bellekten alamaz). Birçok program, derhal ihtiyaç duymadıkları ancak gelecekte ihtiyaç duyabilecekleri bellek ister. Genellikle, pencereler bu belleği sayfa dosyasına ayırır ve hiçbir şey yapmaz. Örneğin. MSSQL sunucusu başladığında 8GB ram tahsis eder. 0 veritabanı için bile. Sadece çünkü Sayfa dosyanızı bir ramdisk üzerine koyarsanız, aksi takdirde önbellek için kullanılabilecek önemli miktarda RAM israf edersiniz
Darth Android

1
@Tony_Henrich Şu anda, pencereler sisteminizi nasıl kullandığınıza bağlı olarak sayfa dosyanızı ve RAM'inizi en iyi şekilde yönetiyor. Bu konuda yapabileceğiniz tek gelişmeler şöyle: Daha fazla bellek ekleyin veya işletim sisteminizi bir SSD'ye taşıyın. Sayfa dosyanızla uğraşmak, genel sistem performansınızı en iyi şekilde düşürür veya sistem kararlılığınızı en kötü şekilde etkiler.
Darth Android

1
Windows'un belleği ile ne yaptığını açıklıyorsunuz. Çok fazla boş hafıza varsa, bir uygulama uyuyorsa veya hiçbir şey yapmıyorsa, Windows bunu kullanmalıdır. Hafıza mevcut olduğunda hafızada tutmanın zararı. Bellek azaldığında, Windows sayfa dosyasını açarsa yararlanabilir. Sayfa dosyasının kullanılması sürücüde yıpranmaya ve yırtılmaya neden oluyor. Hafıza kullanımında aşınma olmaz. İkincisi, sayfa dosyam için bir SSD kullanıyorum. SSD’lerin hayatları sabit disklerden daha küçük olsa da, o zamanlar pek çok yazıyla aşınmaya devam ediyor. Hala yıllar içinde.
Tony_Henrich

4

Buna önceden planlama denir.

Çok fazla RAM varken bellek sayfalarını sayfa dosyasına yazmak iyi bir şeydir. Bir program boş olandan daha fazla bellek isterse, işletim sistemi mümkün olan en kısa sürede alanı temizlemeye başlayabilir. Şimdi hazırlamak daha sonradan iyidir.

Eğer işletim sistemi beklemek üzereydi, o zaman bir performans darboğazına çarptın. Bir program kullanılabilir durumda olandan daha fazla bellek isterse, şimdi işletim sistemi değiştirilmiş bellek bloğunu yazana kadar beklemeniz ve ardından onları serbest bırakmanız gerekir.


16G + ve hafif programlarda, bir programın ücretsiz olandan daha fazla bellek istediği zamanlar, sayfa dosyasının sık kullanımından daha azdır. Bu nedenle, bu gibi durumlarda, bazı boş belleği ve daha az sayfa dosyası kullanmak daha iyidir. Tüm davalara uyan tek bir çözüm yok.
Tony_Henrich

1
Anladığını sanmıyorum. Biri ya da diğeri olmak zorunda değildir. Windows belleği boşaltmak ve sayfa dosyasına yazmak için yazabilir. O değil sayfa dosyaya yazma gibi veya belleğe yazma.
surfasb

1
Ancak, önceden planlamaya çalışarak Windows, HDD’nin / SDD’nin çip üzerindeki önbelleğini doldurma potansiyeline sahip değil mi - aynı anda dosya yazma / yükleme işlemlerini yavaşlatıyor mu? RAM'in bu ön takılması, iyi bir fikir gibi görünüyor, ancak tesadüfen sisteme kötü zamanlarda yük yüklüyor gibi görünüyor.
Binki

1
@binki: Evet, disk okuma / yazma zamanlarını engelliyor, ama hatırlarsam daha düşük bir öncelik kullanıyorlar, bu nedenle genel olarak ilk okuma-yazma işlemleri daha önce başlamalı.
Mooing Duck


2

Son 7 yıldır sayfa dosyalarım kapandı. Aslında yeni kurulumdan sonra ilk yaptığım şey. Bununla hiçbir problem yaşamadım. (Aslında "titan quest" adlı bir oyun vardı başlangıçta çok aptalca bir kontrol yaptım, bu yüzden sadece mutlu etmek ve PF'yi daha sonra geri çevirmek için 4 MB sayfa dosyası oluşturdum). Orijinal soruya gelince. Windows, disk G / Ç önbelleği için RAM'imizi kullanır. Nedense disk önbelleğinin aktif programların kodu ve verileri için eşit derecede önemli olduğunu düşünüyor. Ve disk önbellek boyutunu sınırlamanın bir yolu yok. Tasarım gereği orada ve bu konuda hiçbir şey yapamayız ... Oh, bekle! Yapabiliriz! Sadece sayfa dosyasını kapatın. RAM'de ağır olan uygulamaları çalıştırıyor musunuz? Daha fazla RAM satın alın veya başka bir uygulamayı başlatmadan önce bir uygulamayı kapatın. Herhangi bir anda ne kadar hafıza kullanıldığını görmek için İşlem Gezgini'ni kullanabilirsiniz.


1
Sayfa dosyasından kurtulmak disk önbelleğini kapatmaz.
Jamie Hanrahan

1
Sen yazdın: "[Disk önbellekleme] tasarım gereği var ve bu konuda hiçbir şey yapamayız. Oh bekle! Yapabiliriz! Sadece sayfa dosyasını kapatın." Sayfa dosyasını kapatmak, disk önbelleklemesi ile ilgili bir şey yapmıyor, peki ne diyorsun? Zaten aptalca bir fikir, çünkü işletim sistemi tüm özel bağlılığı RAM'de sonsuza kadar dokunmaya zorlar . Bu, eşlenen sanal belleğe (kod gibi) daha az yer açmasını sağlar; Proaktif disk önbelleği (superfetch) yukarıdakilerin hepsinden sonra geride kalanları kullanır, böylece her ikisinin de disk belleği sayısını artırmaz.
Jamie Hanrahan

1
Sayfa dosyasını kapatmanın senin fikrin olduğunu asla söylemedim (ya da düşünmedim), bu yüzden "senin fikrin" hakkında bir şey demedim. Oh, ben buradayken: "Nedense [Windows] disk önbelleğinin aktif programlar kodu için aynı derecede önemli olduğunu düşünüyor" ve " yanlış bir yoldur. Superfetch sadece Bekleme listesindeki ve dolayısıyla zaten bir parçası olan sayfaları kullanır" kullanılabilir "RAM; programların kod ve verilerinden sayfa almaz. Ve bu sayfalar kullanılabilir durumda kalır , yani programların kod ve verileri için hemen kullanılabilir durumdadır, hatta dosyalardan önbelleklenmiş veri
içerdikten

1
Ben böyle bir şey demiyorum. (Bunu nereden alıyorsunuz?) Diyorum ki, Windows'un hiçbir zaman disk önbelleğine yer açmak için hiçbir şeyi sayfalamadığını söylüyorum. Aksine, önbellek şu anda işlemlerin bir parçası olmayan ve bu nedenle boşa harcanan sayfaları kullanır . Böyle RAM kalıntıları hemen eşyalarını çağrı için ihtiyacı kod ve veri kullanımına içinde önbellekteyse tarafından "kadar kullanılmış" değil yani, sadece "ödünç". Bu nedenle, önbellek, sayfalama veya RAM'de saklanabilecek kod ve veri miktarını azaltmaz. Ref: Windows Internals , Solomon, Russinovich ve Ionescu tarafından yapılmıştır.
Jamie Hanrahan

1
DA'nın cevabını zaten cevapladım. Ama az önce söylediğin şey söylediği değil. Windows'un uzun süredir etkin olmayan işlemleri (gerçek) göstereceğini söyledi. Ayrıca, disk önbelleğinin serbest bırakılan sayfaları kullanabileceğini de söyledi (ayrıca doğru). Ancak bu, disk önbelleğinin mutlaka öncelikli olduğu anlamına gelmez. Disk önbelleği bu sayfaları yalnızca yüksek öncelikli başka hiçbir şeye ihtiyaç duymuyorsa kullanır. Çok sayıda test bunun iyi bir tradeoff olduğunu göstermiştir.
Jamie Hanrahan

1

Sayfa dosyasını saklamak ve kullanmak için yeterli RAM olsa bile argümanlar ( burada ve burada ):

  • Şimdi boş hafıza olsa bile, makine daha sonra hafızası tükenebilir. Az kullanılan hafıza parçalarını önceden diske bırakmak daha iyidir.
  • Ayrıca boş görünen ancak aslında disk önbelleğe almak için kullanılan "bekleme" belleği de var. Performans için de önemlidir, bazılarına sahip olmak daha iyidir.
  • Sayfa dosyası devre dışıyken RAM tükenirse, bu zor bir çökmedir.
  • 2, 4, 16 veya herhangi bir diğer RAM sayısı "çok" gibi görünse de, bu sizin inandığınız kadar doğru olmayabilir. Profil yapmalısın.

Windows Kaynak izleyicisi ile önbellekleme için ne kadar RAM kullanıldığını görmek mümkündür ("Bekleme" olarak gösterilir).

RAM'inizin gerçekten kullanıldığını veya bekleme modunda olduğunu görürseniz, sayfa dosyası sizin için yararlıdır. Görevlerinizin ve kullanılabilir RAM'inizin kombinasyonu, belleğin önemli bir kısmı kullanılmamış ("Ücretsiz") olarak göründüğü takdirde, sabit diski sadece daha iyi bilen ve söyleyen birine saygı duymadan öğütmeye gerek olmadığını düşünüyorum. ".


-2

Tüm bu yorumlar ve doğru cevap eksik. Sayfa dosyanızı KAPATIN. 8GB RAM ile gerek yok ve daha fazla RAM ihtiyacınız varsa satın alın. Gerçekten çok basit.


4
Windows, sayfa dosyasına ne koyacağına (değil) karar vermekte oldukça zekice. Neredeyse tamamen teorik senaryolar dışında, onu kapatmak, 8 GB RAM bile olsa performansa zarar verir. Doğru cevap eksik olsa bile, kesinlikle bu değil.
Marcks Thomas

4
"Zararın performansı" iddiasını destekleyecek kanıtın var mı? Support.microsoft.com/kb/889654
a2552308

6
Basitçe söylemek gerekirse: sayfa dosyaları yalnızca disk aktivitesini artırabilir ... ve çok fazla RAM varsa pencereler hiç kullanmayacak kadar akıllı değildir. Bir SSD sisteminde bu çok belirgin olmayabilir, bir mil sisteminde bu uygulama performansını çok etkileyebilir. Orijinal afişe bakınız.
a2552308

2
MS makalesinden ilgili bölüm: "Ancak, bilgisayara daha fazla RAM eklendiğinden, bir sayfa dosyasına duyulan ihtiyaç azalır. Bilgisayarınıza yeterli RAM takılıysa, gerekli olmadıkça bir sayfa dosyasına hiç gerekmeyebilirsiniz. özel bir uygulama ile. " Bağladığınız birçok makaleden alakalı bölümleri bulamadım, belki ilgili bölümleri alıntılayabilirsiniz?
a2552308

2
Teoride kulağa hoş geliyor, pratikte gözlemlediğim kadar değil.
a2552308
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.