Yine de sanal bellek kullanmam gerekiyor mu?


14

Bunun zaten sorulduğunu düşünürdüm ama bulamıyorum.

Hangi noktada artık sanal belleğin etkinleştirilmesine ihtiyacım yok? 4GB RAM ile bilgisayarın nadiren her yere yakın bir yerde kullandığını görüyorum. Bu noktada sanal bellek kesinlikle gerekli değildir. Kapatmak için tehlike var mı? Yaparsam kaybedeceğim özellikler var mı?


1
Uyarı: Sürücülere verilen non-pagedve pagedhavuz belleği bölümleri adı verilen sınırlı miktarda bellek vardır. Disk belleği bölümü dolduğunda bir sayfa dosyası gereklidir, bir oyuncu oyunun disk belleği havuzu belleği hakkında şikayet ettiğini gördüm, çünkü sayfa dosyamı 8 GB'lık bir sistemde devre dışı bıraktım. Sonuç: Sayfa dosyaları gereklidir, disk belleği havuzu tükenmesini önler ve aslında sisteminizi hızlandırır .
Tamara Wijsman

Yanıtlar:


9

Bellek artık masaüstü bilgisayarlarda / dizüstü bilgisayarlarda tam olarak seyrek bir kaynak olmadığından, çoğu programın yetersiz bellek koşullarını zarif bir şekilde işleyebileceğinden ve bunun yerine çökeceğinden şüpheliyim.
Yani: Tehlikeli mi? Evet , 4 GB'ınız bir şekilde kullanılmışsa ve sayfa dosyanız yoksa uygulamalar çökmeye başlayabilir.
Ve Zoran'ın örneğinde gösterildiği gibi, sorunu daha sonra tanımlamak zor olabilir.

Ram'in bahsettiği makale, aynı zamanda, değiştirmeyi kapatmanın genellikle hızı iyileştirmediğini ve bunun tersini yapabileceğini belirtiyor :

Bu nedenle, disk belleği dosyası olmadan daha iyi performans gösteren bazı iş yükleri olsa da, genel olarak bir tanesinin bulunması sistem için daha kullanılabilir bellek olduğu anlamına gelir


MS'nin sitesindeki makaleyi kazmak zorunda kalacağım, ancak MS her zaman bir sayfa dosyası olması gerektiğini söylüyor. Yüksek bellek sistemlerinde bile, birinin bulunmaması makinenizi daha yavaş çalıştırabilir.
Keltari

10

Mark Russinovich'in Sanal Bellek hakkındaki makalesine bakın . Bu size Sanal Bellek hakkında iyi bir işaretçi vermelidir.

İşte linkten faydalı bir alıntı

Peki, iş yüklerinizin ne kadar taahhüt ücreti gerektirdiğini nasıl bilebilirsiniz? Ekran görüntülerinde Windows'un bu sayıyı izlediğini ve Process Explorer'ın bunu gösterdiğini fark etmiş olabilirsiniz: Peak Exec Charge. Disk belleği dosyanızı en iyi şekilde boyutlandırmak için, aynı anda çalıştırdığınız tüm uygulamaları başlatmanız, tipik veri kümelerini yüklemeniz ve ardından taahhüt ücreti zirvesini not etmeniz (veya maksimum yüke ulaşıldığını bildiğiniz bir süreden sonra bu değere bakmanız gerekir) . Disk belleği dosyasının minimum değerini bu değer eksi sisteminizdeki RAM miktarına ayarlayın (değer negatifse, yapılandırdığınız çökme dökümü türüne izin vermek için minimum bir boyut seçin). Potansiyel olarak büyük taahhüt talepleri için biraz nefes alanınız varsa, maksimum değeri bu sayının iki katına ayarlayın.


Mark Russinovich referansı için +1. Her zaman harika bir okuma.
mrduclaw

3

ServerFault'daki bu klasik yazının bazı iyi noktaları var. Sadece 4GB için pagefile'i yalnız bıraktım ve her durumda diskteki alan az.


3

Sanal bellek ayarlarını varsayılan değerlerine bırakmanızı tavsiye ederim. 8GB RAM'im var ve hız kazanacağımı düşünerek sanal belleği kapattım (takas olmadığından), ancak sistemimi daha az kararlı hale getirdi (ve bunu 2 makinede yaptım, benzer sonuç). Her iki makinede de haftada bir BSOD yaşıyordum. Üretilen mini pompaları incelemeye başladım ve tüm BSOD'lerin KiPageFault adlı bir rutine çağrı ile tetiklendiğini öğrendim. Bu yüzden sanal bellek ayarlarını varsayılan değerlerine döndürmeyi denedim ve normal BSOD'ler kayboldu.

Bana 2'yi ilişkilendirmek için epey zaman aldı ve sanal belleği kapattığımın BSOD'lara neden olduğunun gerçek bir kanıtı yok, ancak tekrar açtıktan sonra makinelerim daha kararlıydı ...


Teşekkürler. Sadece varsayımları değil, gerçek sonuçları duymak da iyidir.
Steve Rowe

0

İş yükünüzün ne olduğuna bağlıdır. Bir web uygulaması için bir grup disksiz ön uç oluşturdum. Ağa bağlandılar ve ihtiyaç duydukları her şeyi 8GB ram içinde çalıştırdılar.

Ayrıca 32MB ve hiçbir sayfa dosyası ile pencereler (muhtemelen 98) kullandım - tabii ki bu bellek alanında yaşamak ve uygulamalarınızı kaynaklara uyacak şekilde sınırlamak zorundasınız.

Disk önbelleği için fazladan RAM olduğundan emin olmak istersiniz, aksi takdirde performans korkunç olabilir.

VM olmadan çalışmayan bazı programlar olduğunu hatırlıyorum, ancak ne olduklarına dair hiçbir fikrim yok


-2

Steve, bunu sorman ilginç.

Size küçük bir sır vereceğim: Sanal belleğe ihtiyaç duyduğunuz nokta asla değildi. Sanal bellek, pratik bilgisayar sistemleri hakkında sıfır bilen bir grup akademisyen tarafından yaratılan inanılmaz derecede yetersiz bir fikirdi ve herhangi bir bilgisayar, VM olmadan çalıştırılabiliyorsa çok daha iyi çalışacak.

Şimdi, VM işe yaramaz ve zararlıysa, büyük modern işletim sistemlerinin çoğunun neden kullandığını sorabilirsiniz. Bu sorunun kısa cevabı, Microsoft, Apple ve IBM'de VM kullanıp kullanmayacağına karar veren kişilerin, VM'yi icat eden ve bunu tamamen yanlış varsayımlara dayanarak kabul etmek isteyen akademisyenlerden daha aptal ve deneyimsiz olduğudur. akademisyenler icat ettiklerinde vardı. Bu varsayımlar ve yanlış anlamalar hakkında konuşmaya başlayabiliriz, ancak ne yazık ki, anlaşılması ve tanımlanması kolay olsaydı, ilk etapta VM problemimiz olmazdı.

Size geri dönüyorum. Ne yazık ki, Apple ve Microsoft'ta yukarıda belirtilen tardnoggins gibi, kendi yanılgılarınız var, yani VM'yi kapatabileceğiniz fikri. Tabii ki, onu kapatamazsınız, eğer sadece kapatabilirseniz sizi vidalamanın tüm amacını yenebilir. İnsanlar gerçekten aptalca bir şey yaptığında, her zaman geri döndürülemez olduğundan emin olurlar. Sonuçta, eğer herkes VM'yi kapatabilirse, yapardı ve bu onu yaratan bozosun oldukça aptal görünmesini sağlar mı? Microsoft'un Internet Explorer'ı kaldırılamaz hale getirmesi gibi, bu olasılığı da çıkarılamaz hale getirerek engellediler.

Yapabileceğiniz şey, sayfa dosyasının boyutunu sınırlamaktır, ki bu elbette minimum olan ne olursa olsun, umarım 0'dır. Sanal Bellek hala oradadır, ancak en azından çok çok yavaştan çok çok azaltabilirsiniz disk sürücüsünün deliliğe karışmamasını isteyerek yavaşlayın.


Sanal bellek pek çok iyi şeye izin verir. Sanal belleğiniz yoksa, sisteminizdeki her işlemin gerçekte referans alınıp alınmadığına bakılmaksızın tanımladığı her bayt kod ve veriyi tutacak yeterli RAM'e sahip olmanız gerekir. Çoğu program zamanlarının% 90'ını kodlarının ve verilerinin% 10'unu kullanarak harcadığından, bu çok büyük bir israf olacaktır. Ayrıca, buradaki yorum biçiminin taslağa yer bırakmadığı birçok yararlı şeyi de kaybedersiniz. Sanal belleği terk etmememizin nedeni, hala gerçekten çok iyi bir fikir olmasıdır. "Pratik hesaplama sistemlerinde" bile.
Jamie Hanrahan

@RickBrant Intel ve IBM'den aptal elektrik mühendisleri gibi geliyorsunuz. 1980'lerde VM'nin neden iyi bir fikir olduğunu açıklamaya çalışmak için geri dinlemek zorundayım. IBM, VM'ye zarar veren ilk işletim sistemi beyni olan OS / 2 ile çıktığında, neden bu kadar harika bir fikir olduğunu açıklamak zorunda olduklarını hatırlıyorum. Tanrıya şükür OS / 2 öldü, ama maalesef VM bir zombi gibi devam etti, bu yüzden burada 2017 ve hala bu saçmalık dinliyorum. CS dereceniz olmayan donutlara dolar bahse girerim sen? Şaka kısmı bu. VM'yi tanıtan erkeklerin% 99'u programcı değil
Tyler Durden

Aslında batıdaki en iyi teknoloji okullarından birinde CS / EE olarak çift anadal yapıyordum. Bugün çoğunlukla bir programcıyım, ancak donanım türleriyle etkileşime giriyorum. Şimdi, bir programın tanımladığı ya da gerekmediği her zaman RAM'de tanımladığı her son bayt kod ve veriyi saklamanın çok israflı olacağı noktasında bir itirazınız var mı? Çünkü sanal bellek bundan kaçınır. Yoksa "aptal olmalısın" şeklinde kişisel saldırılara mı devam edeceksiniz?
Jamie Hanrahan

Oh, ve yine "VM ile hasar gören ilk işletim sistemi beyni olan OS / 2," Um, hayır, yaklaşık yirmi yıl değil. Belki PC'ler için yaygın olarak kullanılan ilk işletim sistemi. (Ama "kişisel bilgisayarlar" için ilk değil.)
Jamie Hanrahan
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.